|
From: Ondrej P. <oc...@ma...> - 2003-12-23 10:09:39
|
MV> >Eee, chapu to spravne, ze pri SystemMessage::send() network zavola MV> >callback do node manageru? Jestli jo, tak je zas neco divne v networku, MV> >protoze jsem se kdysi pri designu callbacku dohodli (a je to i v dokumentaci MV> >v node manageru), ze se ty callbacky smi volat jen z Network::next_tick() MV> >prave kvuli takovymdle vecem. MV> Myslim, ze to tak bohuzel je. Prave tohohle jsem se taky MV> obaval, ale nechtelo se mi to psat do develu. Co je v dokumentaci MV> network, je uplne fuk, protoze podle mych poslednich zkusenosti, MV> je implementace casto uplne jinak a to bud z duvodu, ze MV> dokumentaci psal nekdo jiny, dokumentace byla napsana hned blbe, MV> nebo ze ji pri provadeni zmen v kodu nikdo _neupdatoval_ (je treba MV> provadet hned, pri jakekoliv zmene). MV> Co si vynucuje jiny subsystem, network vubec nebere na MV> zretel, jak vidime napr. pri system:connect/disconnect vs MV> zpracovani callbacku. Nic proti chlapi, ale ty 4 callbacky, ktere vola network, tak se vzdycky volaji z next_tick() jedna se o connection lost / closed + created dale o async connection failed. Jediny problem, jak Markoid zminuje, je s tim disconnect, ktery je ted blbe ( staci si v Global::system_shutdown() zakomentovat to close_all_connections( true ). Ale to porad podle mne neni to, o cem je tenhle thread. Vyresi to vase problemy, ale zase se musi jinak vyresit odpojeni klienta z logovaci obrazovky ( kdyz se tam da quit, tak service, ke kteremu je pripojen, neni notifikovan o jeho odpojeni a konexi na anonymous klienta zavre s connection lost ). Resenim je pri stisku QUIT v logovaci obrazovce zavolat close_all_connection( true ); Octa |