|
From: Petr T. <pto...@ss...> - 2002-03-15 11:05:05
|
Abych to shrnul, Object muze byt but v aktivnim ci latentnim stavu. Aktivni znamena, ze je je zaregistrovan u manageru a navic je i normalne simulovan (je naplanovan u manageru). Latentni znamena, ze je pouze zaregistrovan u manageru, ale neni planovan (i kdyz obsahuje nejake udalosti). Pokud se ma zaregistrovat aktivni objekt, jednak se zaregistruje Manager::register_object() a pak se musi explicitne aktivovat Manager::activate_object(). Pri duplikaci objektu (te normalni), se objekt registruje ativni, pri freeze duplikaci se shadow kopie dela latentni, aby se nesimulovaly jeji udalosti. Dalsi latentni objekty jsou napriklad repliky (jelikoz nemame predikci). Pri freeze duplikaci se dela kopie i cele fronty udalosti. Pri normalni duplikaci se novy objekt udela s prazdnou frontou. Je na tom, kdo vola duplikaci, aby naplanoval pro duplikovany objekt udalosti, pokud chce. Fronta udalosti nejakeho objektu bude nejaka heap, ktera bude obsahovat cas + ObjectPointer na objekt udalosti. To ze je to ObjectPointer zaruci spravne grupovani objektu, aby se prenasely objekty ve fronte spolu s hlavnim objektem. Pri vyvolani udalosti z fronty se jednak otestuje, zda objekt udalosti vubec jeste existuje, pokud ano tak se nejak "spusti" (vyvolani metody na na cilovem objektu "dosla ti zprava" versus vyvolani metody na objektu udalosti "byl jsi dorucen"). Otazkou je, jak udelat killovani udalosti z fronty. Tzn. objekt si naplanuje nejakou udalost, a po case ji chce zrusit driv nez se vyvola. Tento "pointer" do fronty udalosti musi mit vlastnosti property. Otazkou je jak vlastne ukazovat na udalosti do fronty, aby se tohle dalo prenaset (a po prenosu to ukazovalo tam kam ma). Pokud se zaruci, ze se heap prenese a na druhe strane se identicky zrekonstruje, stacil by asi jen opravdu index. Petr |