[python] kterak vhodne resit architekturu IMAP klienta

Jan Kundrát jkt na gentoo.org
Neděle Září 17 22:59:48 CEST 2006


Jan Matejka wrote:
> Tak jak jsem se na to dival je mailbox z pohhledu UI modul ktery je schopen
> okamzite synchronne odpovidat na pozadavky UI.

Ok, ale co tahle situace:

Mam zobrazene maily v mailboxu ("slozce", ted nemluvim o
komponente/modulu). Kliknu si na paty mail. UI rekne Mailboxu (velke M,
takze komponente) "chci strukturu pateho mailu". Jenomze chudak Mailbox
to nema v cachi, a tak si musi povidat s IMAP serverem. Posle proto UI
zpravu "hele, sorry, zatim to nemam". Tohle mi moc synchronni neprijde.

Cili shrnuti - synchronni komunikace nefunguje, protoze Mailbox
*nezarucuje*, ze ma porad k dispozici vsechna data. Prefetch dat ze
serveru musi byt volitelny a i pokud se povoli, tak je potreba nejaka
logika, protoze je kravina bezmyslenkovite stahovat cely attachment,
kdyz chce user videt jenom plaintextovou cast mailu a pak ho smazat,
napriklad.

Co ma teda delat UI? Muze zobrazit "cekej" misto obsahu mailu, ok. Jak
ale pozna, ze uz ty data dorazily Mailboxu? Callback?

Mozna ale mas pravdu. Pokud te dobre chapu, tak ty navrhujes neco jako
"pokud data nejsou hned, Mailbox postupem casu zavola callback". Je to
tak? Tim padem Mailbox rekne "zatim ten mail nemam", ale az dorazi,
pusti callback, ktery rekne UI "struktura mailu s UID 12345 je XYZ".
(UID 12345 je nutne kvuli tomu, ze si user zatim moh odscrollovat na
jinej mail. Mailbox ale stejne cte data. Mozna komplikace - je tohle
nejlepsi postup? Co delat, kdyz user klika na jeden mail za druhym?
Takhle by Mailbox dostal request na vsechny, coz je mozna trosku
zbytecny...)

Ty fronty, co jsem navrhoval ja, by IMHO nemusely znamenat, ze UI
cachuje. Naopak, pokud UI dostane zpravu, na kterou nemusi reagovat
(protoze IMAP definuje treba situace, kdy je nutne upozornit usera etc)
a ktera se mu podle nej nehodi, muze ji smele ignorovat, protoze si o ni
muze zazadat i jinak.

Takze jak tak na to koukam, ono ty fronty asi ani neprinaseji zadnou
vyhodu, mozna tak takove opticke oddeleni dvou slupek. Spis je ale
horsi, ze muzou vnest nejakou tu latenci...

Diky za postrehy, nekdy se nad tim budu muset poradne zamyslet,
-jkt

-- 
cd /local/pub && more beer > /dev/mouth

-- 
cd /local/pub && more beer > /dev/mouth

------------- další část ---------------
Netextová příloha byla odstraněna...
JmĂŠno: signature.asc
Typ: application/pgp-signature
Velikost: 252 bytes
Popis: OpenPGP digital signature
Url : http://www.py.cz/pipermail/python/attachments/20060917/c7c638fa/attachment.pgp 


Další informace o konferenci Python