#include <PsDistributedController.h>
Inheritance diagram for PsDistributedController:


Public Methods | |
| PsDistributedController (PsObjectDescriptor &initialObjects, const PsDate &initialDate) | |
| constructor | |
| virtual | ~PsDistributedController () |
| destructor | |
| virtual PsSimulatedObject * | getPointerToSimulatedObjectNamed (const PsName &objectName) |
| get a pointer to a simulation object. | |
| virtual void | dispatchEvent (PsEvent *event) |
| dispatch an event received from an other controller to the corresponding referenceObjectHandle | |
| virtual bool | processEvent (PsEvent *event) |
| redefine event processing to broadcast system events to other controllers | |
| virtual void | purgeMemoryFromOldEvents (const PsDate &dateOfOldestKept) |
| redefine to purge the list of remembered broadcasted signals | |
| virtual void | broadcastEventsForSignal (PsEvent &event, const PsEventIdentifier &sigId) |
| redefine so that signals broadcasted are remembered. | |
| virtual bool | receiveRegistrationForSignal (const PsEventIdentifier &sigId, const PsName ®istrant, const PsEventIdentifier &eventId) |
| register an object for a signal | |
| virtual bool | receiveCancellationForSignal (const PsEventIdentifier &sigId, const PsName ®istrant) |
| cancel the registration of an object for a signal | |
Protected Types | |
| typedef hash_map< PsName, PsnMirrorObjectHandle *, PsName::hashFunctionObject > | MirrorObjectsContainerType |
Protected Methods | |
| virtual PsnMirrorObjectHandle * | newPsnMirrorObjectHandle (PsSimulatedObject &obj)=0 |
| create an mirror object handle adapted to distribution mode | |
| virtual PsnDuplicatedObjectHandle * | newPsnDuplicatedObjectHandle (PsSimulatedObject &obj)=0 |
| create a duplicated object handle adapted to distribution mode | |
| virtual void | deleteObjectHandle (PsnObjectHandle *objectHandle) |
| as the controller is an abstract factory for object handlers, is should also be an abstract destroyer | |
| virtual void | createControlledObjects (const PsObjectDescriptor *subTree) |
| redefine createControlledObjects so as to create only object assigned to this controller | |
| virtual void | createObject (const PsObjectDescriptor &newObjectDescription, const PsName &fathersName) |
| redefine to make sure a process is given to the created object. | |
| virtual void | processNewObjectDeclaration (PsObjectDescriptor &declaration, const PsDate &declarationDate) |
| redefine to create only declarations pertinant to the current node | |
| virtual PsnMirrorObjectHandle * | createMirrorObject (PsObjectDescriptor *objectDescription) |
| createMirrorObject effective creation of a simulated object wich will act as a mirror for other simulated objects controlled by the local controller | |
| virtual PsnDuplicatedObjectHandle * | createDuplicatedObject (PsObjectDescriptor *objectDescription) |
| create a duplicated object | |
| virtual void | processStartEventOf (PsnReferenceObjectHandle *objectHandle) |
| initialisation des referentiels ... | |
Protected Attributes | |
| MirrorObjectsContainerType | _mirrorObjectsMap |
| data structure containing references to the MirrorObjectHandlers | |
| PsNameToPointerMap< PsnDuplicatedObjectHandle > | _duplicatedObjectsMap |
| data structure containing references to the DuplicatedObjectHandlers | |
| PsNameToPointerMap< PsnReferenceObjectHandle > | tableDesNonInitialises |
| la table des référentiels non-initilisés | |
| PsNameToPointerMap< PsnReferenceObjectHandle > | tableDesInitialises |
| la table des référentiels initilisés | |
| PsName | _processName |
| name of the process this controller is controlling | |
| list< pair< PsEventIdentifier, pair< PsEvent *, PsDate > > > | _broadcastedSignals |
| the list storing the recently broadcasted signals | |
Definition at line 36 of file PsDistributedController.h.
|
|
Definition at line 120 of file PsDistributedController.h. |
|
||||||||||||
|
constructor
Definition at line 29 of file PsDistributedController.cxx. References PsDate.
00030 : PsController(initialObjects, initialDate), 00031 _processName (initialObjects.getProcess()) 00032 { 00033 } |
|
|
destructor
Definition at line 37 of file PsDistributedController.cxx. References PsController::_date, PsController::_stepPeriod, and purgeMemoryFromOldEvents().
00038 {
00039 purgeMemoryFromOldEvents ( _date + _stepPeriod ) ;
00040 }
|
|
||||||||||||
|
redefine so that signals broadcasted are remembered. They need to be remembered, because registration to a signal is delayed for the sake of distribution Reimplemented from PsController. Definition at line 370 of file PsDistributedController.cxx. References _broadcastedSignals, PsController::_date, PsController::broadcastEventsForSignal(), PsEvent::clone(), make_pair(), and list< pair< PsEventIdentifier, pair< PsEvent *, PsDate > > >::push_back().
00371 {
00372 PsController::broadcastEventsForSignal ( event, sigId ) ;
00373
00374 //remember the broadcasted signal to be able to send it to objects whose registration is still under way
00375 _broadcastedSignals.push_back ( make_pair ( sigId, make_pair (event.clone(), _date) ) ) ;
00376
00377 }
|
|
|
redefine createControlledObjects so as to create only object assigned to this controller
Reimplemented from PsController. Reimplemented in PsMomeController. Definition at line 201 of file PsDistributedController.cxx. References _processName, PsController::createReferenceObject(), and PsObjectDescriptor::getSons(). Referenced by PsMomeController::createControlledObjects().
00202 {
00203 //go through the simulation tree to find all objects that have to be created
00204 PsObjectDescriptor::SonsContainerType::const_iterator i = subTree->getSons()->begin() ;
00205 while ( i != subTree->getSons()->end() )
00206 {
00207 if ( (*i)->getProcess() == _processName )
00208 {
00209 cerr<<"Creating "<< (*i)->getName() << endl ;
00210 //create the object
00211 createReferenceObject ( (*i) ) ;
00212 }
00213 else
00214 {
00215 cerr<<"Not Creating "<< (*i)->getName()
00216 <<" of process "<< (*i)->getProcess()
00217 <<endl ;
00218 }
00219 //create the subTree of that object
00220 createControlledObjects ( *i ) ;
00221
00222 ++i ;
00223 }
00224 }
|
|
|
|
createMirrorObject effective creation of a simulated object wich will act as a mirror for other simulated objects controlled by the local controller
Reimplemented in PsPvmController. Definition at line 182 of file PsDistributedController.cxx. References _mirrorObjectsMap, PsController::createDescribedObject(), PsObjectDescriptor::getName(), hash_map< PsName, PsnMirrorObjectHandle *, PsName::hashFunctionObject >::insert(), and newPsnMirrorObjectHandle(). Referenced by getPointerToSimulatedObjectNamed().
00183 {
00184 PsnMirrorObjectHandle * result = NULL ;
00185 PsSimulatedObject * obj = createDescribedObject( objectDescription ) ;
00186 if ( obj == NULL )
00187 {
00188 cerr<<"PsController::createReferenceObject: unable to create "<<*objectDescription<<endl;
00189 }
00190 else
00191 {
00192 result = newPsnMirrorObjectHandle(*obj) ;
00193
00194 _mirrorObjectsMap.insert ( MirrorObjectsContainerType::value_type(objectDescription->getName (), result ) ) ;
00195 }
00196 return result ;
00197 }
|
|
||||||||||||
|
redefine to make sure a process is given to the created object. If no process is specified, the current process will be inserted Reimplemented from PsController. Definition at line 332 of file PsDistributedController.cxx. References _processName, PsController::createObject(), PsObjectDescriptor::getProcess(), and PsObjectDescriptor::setProcess().
00333 {
00334 PsName noProcess ;
00335 if ( newObjectDescription.getProcess() == noProcess )
00336 {
00337 PsObjectDescriptor modifiableObjectDescription ( newObjectDescription ) ;
00338 modifiableObjectDescription.setProcess ( _processName ) ;
00339 PsController::createObject( modifiableObjectDescription, fathersName ) ;
00340 }
00341 else
00342 {
00343 PsController::createObject( newObjectDescription, fathersName ) ;
00344 }
00345 }
|
|
|
as the controller is an abstract factory for object handlers, is should also be an abstract destroyer
Reimplemented from PsController. Definition at line 325 of file PsDistributedController.cxx. References PsController::_date, PsController::_deletedObjectHandles, make_pair(), and list< pair< PsDate, PsnObjectHandle * > >::push_back().
00326 {
00327 _deletedObjectHandles.push_back ( make_pair ( _date,objectHandle ) ) ;
00328 }
|
|
|
dispatch an event received from an other controller to the corresponding referenceObjectHandle
Definition at line 168 of file PsDistributedController.cxx. References PsController::_referenceObjectsMap, map< PsName, PsnReferenceObjectHandle * >::end(), map< PsName, PsnReferenceObjectHandle * >::find(), and PsEvent::receiver.
00168 {
00169 #ifdef _DEBUGEVT
00170 cerr<<"PsDistributedController::dispatchEvent pour "<<event->receiver<<endl;
00171 #endif
00172 PsNameToPointerMap<PsnReferenceObjectHandle>::iterator i = _referenceObjectsMap.find(event->receiver);
00173 assert(i!=_referenceObjectsMap.end());
00174 (*i).second->receiveEvent( event );
00175 #ifdef _DEBUGEVT
00176 cerr<<"PsDistributedController::dispatchEvent fin"<<endl;
00177 #endif
00178 }
|
|
|
get a pointer to a simulation object. Redefined from PsController, because if the object hasn't been locally created, a mirror of this object will be created
Reimplemented from PsController. Reimplemented in PsMultiThreadedPvmController. Definition at line 65 of file PsDistributedController.cxx. References PsController::_date, _duplicatedObjectsMap, _mirrorObjectsMap, PsController::_referenceObjectsMap, PsController::_simulationTree, PsController::computeAdequateFrequency(), PsController::computeScheduling(), PsController::createDescribedObject(), createDuplicatedObject(), createMirrorObject(), map< PsName, PsnDuplicatedObjectHandle * >::end(), hash_map< PsName, PsnMirrorObjectHandle *, PsName::hashFunctionObject >::end(), map< PsName, PsnReferenceObjectHandle * >::end(), map< PsName, PsnDuplicatedObjectHandle * >::find(), hash_map< PsName, PsnMirrorObjectHandle *, PsName::hashFunctionObject >::find(), map< PsName, PsnReferenceObjectHandle * >::find(), PsObjectDescriptor::findDescendantNamed(), PsSimulatedObject::fireValuedSignal(), PsObjectDescriptor::getFrequency(), PsSimulatedObject::getName(), PsNameToPointerMap< PsnDuplicatedObjectHandle >::getObjectOfIndex(), PsNameToPointerMap< PsnReferenceObjectHandle >::getObjectOfIndex(), PsnObjectHandle::getSimulatedObject(), PsSystemEventIdentifier::MaskObjectCreated, PsController::scheduleControlledObjects(), PsController::scheduleObject(), and PsController::sendInitialEventsTo(). Referenced by PsMultiThreadedPvmController::getPointerToSimulatedObjectNamed(), and processNewObjectDeclaration().
00065 {
00066 //in case of dynamic creation of objects
00067 PsnCurrentActiveObject context ( NULL ) ;
00068
00069 PsSimulatedObject * resultat = NULL ;
00070 // On verifie que l'objet est un referentiel
00071 //cerr<<"PsDistributedController::getPointerToSimulatedObjectNamed("<<nom<<")"<<endl;
00072 if (nom == getName() )
00073 {
00074 resultat = this ;
00075 }
00076 else if (_referenceObjectsMap.find (nom) != _referenceObjectsMap.end ())
00077 {
00078 // On recupere le referentiel
00079 resultat = & _referenceObjectsMap.getObjectOfIndex (nom)->getSimulatedObject() ;
00080 }
00081 else
00082 {
00083 MirrorObjectsContainerType::iterator i = _mirrorObjectsMap.find (nom) ;
00084 if ( i != _mirrorObjectsMap.end ())
00085 {
00086 // On recupere le miroir
00087 resultat = & ( i->second->getSimulatedObject() ) ;
00088 }
00089 else if (_duplicatedObjectsMap.find (nom) != _duplicatedObjectsMap.end())
00090 {
00091 //this shouldn't happen, as duplicate objects are also in the referenceObjectMap
00092 cout<<"PsPvmController::getPointerToSimulatedObjectNamed : found in _duplicatedObjectsMap: problem"<<endl;
00093 resultat = &_duplicatedObjectsMap.getObjectOfIndex (nom)->getSimulatedObject() ;
00094 }
00095 else {
00096 PsObjectDescriptor * objectDescription = _simulationTree.findDescendantNamed (nom) ;
00097 if ( objectDescription != NULL )
00098 {
00099 PsSimulatedObject * obj = createDescribedObject ( objectDescription ) ;
00100
00101 PsDuplicatedObject * objDup = dynamic_cast<PsDuplicatedObject *>(obj);
00102
00103 if( objDup == NULL )
00104 {
00105 createMirrorObject ( objectDescription ) ;
00106 }
00107 else
00108 {
00109 PsnDuplicatedObjectHandle * newObjectHandle = createDuplicatedObject ( objectDescription );
00110
00111 if ( objectDescription->getFrequency() != computeAdequateFrequency (objectDescription->getFrequency()) )
00112 {
00113 //the whole scheduling data structure needs recalculating
00114 computeScheduling ( false ) ;
00115
00116 //the new object will therefore be scheduled with all the others
00117 scheduleControlledObjects() ;
00118 }
00119 else
00120 {
00121 scheduleObject ( newObjectHandle ) ;
00122 }
00123
00124 sendInitialEventsTo ( *newObjectHandle, _date ) ;
00125 fireValuedSignal(PsSystemEventIdentifier::MaskObjectCreated,nom ) ;
00126
00127 //here, nothing is done for creation process coherence. It might be usefull to initialise the object for duplicated objects
00128 }
00129 resultat = obj ;
00130 }
00131 }
00132 }
00133 return resultat ;
00134 }
|
|
|
create a duplicated object handle adapted to distribution mode
Implemented in PsPvmController. Referenced by createDuplicatedObject(). |
|
|
create an mirror object handle adapted to distribution mode
Implemented in PsMomeController, and PsPvmController. Referenced by createMirrorObject(). |
|
|
redefine event processing to broadcast system events to other controllers
Reimplemented from PsController. Definition at line 257 of file PsDistributedController.cxx. References _broadcastedSignals, PsController::_controledObjectsSignalsDispatcher, PsController::_simulationTree, list< pair< PsEventIdentifier, pair< PsEvent *, PsDate > > >::begin(), PsnSignalDispatcher::cancelRegistrationForSignal(), PsEvent::date, PsController::deleteObject(), list< pair< PsEventIdentifier, pair< PsEvent *, PsDate > > >::end(), PsEvent::eventId, PsObjectDescriptor::findDescendantNamed(), PsSystemEventIdentifier::MaskCancelRegistrationForSignal, PsSystemEventIdentifier::MaskObjectDestroyed, PsSystemEventIdentifier::MaskRegisterForSignal, PsController::processEvent(), PsEvent::receiver, PsnSignalDispatcher::registerForSignal(), PsSimulatedObject::sendEvent(), and PsValuedEvent< UserType >::value.
00258 {
00259 bool result ;
00260 if ( event->eventId == PsSystemEventIdentifier::MaskRegisterForSignal )
00261 {
00262 PsValuedEvent<RegistrationData> * realEvent = dynamic_cast<PsValuedEvent<RegistrationData> *>( event ) ;
00263 assert (realEvent != NULL ) ;
00264
00265 cerr<<"PsDistributedController::processEvent received registration from "<<realEvent->value._registrant<<endl;
00266
00267 _controledObjectsSignalsDispatcher.registerForSignal(realEvent->value._sig ,
00268 realEvent->value._registrant ,
00269 realEvent->value._eventId) ;
00270
00271 result = true ;
00272
00273 //find out if an allready broadcasted signal should sent to the registrant
00274 for ( list<pair<PsEventIdentifier, pair <PsEvent *, PsDate> > >::iterator i = _broadcastedSignals.begin() ;
00275 i != _broadcastedSignals.end() ;
00276 ++i )
00277 {
00278 if ( i->first == realEvent->value._sig )
00279 {
00280
00281 if ( i->second.second >= realEvent->date )
00282 {
00283 PsEvent * sentEvent = i->second.first->clone() ;
00284 sentEvent->eventId = realEvent->value._eventId ;
00285 sentEvent->receiver = realEvent->value._registrant ;
00286 sendEvent ( sentEvent ) ;
00287 }
00288 }
00289 }
00290
00291 }
00292 else if ( event->eventId == PsSystemEventIdentifier::MaskCancelRegistrationForSignal )
00293 {
00294 PsValuedEvent<CancellationData> * realEvent = dynamic_cast<PsValuedEvent<CancellationData> *>( event ) ;
00295
00296 assert (realEvent != NULL ) ;
00297
00298 _controledObjectsSignalsDispatcher.cancelRegistrationForSignal (realEvent->value._sigId ,
00299 realEvent->value._registrant) ;
00300 result = true ;
00301 }
00302 else if (event->eventId == PsSystemEventIdentifier::MaskObjectDestroyed)
00303 {
00304 PsValuedEvent<PsName> * realEvent = dynamic_cast<PsValuedEvent<PsName> *>( event ) ;
00305
00306 assert ( realEvent != NULL ) ;
00307
00308 PsObjectDescriptor * objectDescriptor = _simulationTree.findDescendantNamed ( realEvent->value ) ;
00309
00310 if (objectDescriptor != NULL )
00311 {
00312 deleteObject( objectDescriptor ) ;
00313 }
00314 result = PsController::processEvent ( event ) ;
00315 }
00316 else
00317 {
00318 result = PsController::processEvent ( event ) ;
00319 }
00320 return result ;
00321 }
|
|
||||||||||||
|
redefine to create only declarations pertinant to the current node
Reimplemented from PsController. Definition at line 226 of file PsDistributedController.cxx. References PsController::_pendingEventsList, _processName, map< Key, T, Compare, Alloc >::begin(), map< Key, T, Compare, Alloc >::end(), map< PsName, list< PsEvent * > >::end(), map< PsName, list< PsEvent * > >::erase(), map< PsName, list< PsEvent * > >::find(), PsObjectDescriptor::getName(), getPointerToSimulatedObjectNamed(), PsObjectDescriptor::getProcess(), PsController::processNewObjectDeclaration(), PsDate, and PsSimulatedObject::sendEvent().
00227 {
00228 //cerr<<"PsDistributedController::processNewObjectDeclaration "<<_processName<<" "<<declaration.getProcess()<<endl;
00229 if ( _processName == declaration.getProcess() )
00230 {
00231 PsController::processNewObjectDeclaration ( declaration, declarationDate ) ;
00232 }
00233 else
00234 {
00235 map<PsName, list <PsEvent *> >::iterator pendingEvents = _pendingEventsList.find( declaration.getName() ) ;
00236 if ( pendingEvents != _pendingEventsList.end() )
00237 {
00238 #ifdef _DEBUGEXEC
00239 cerr<<"Found pending events for "<<declaration.getName()<<endl;
00240 #endif
00241 for ( list <PsEvent *>::iterator pendingEventsListIterator = pendingEvents->second.begin() ;
00242 pendingEventsListIterator != pendingEvents->second.end() ;
00243 ++pendingEventsListIterator)
00244 {
00245 #ifdef _DEBUGEXEC
00246 cerr<<"sent "<<**pendingEventsListIterator<< "to "<<declaration.getName()<<endl;
00247 #endif
00248 assert ( getPointerToSimulatedObjectNamed(declaration.getName()) != NULL ) ;
00249 getPointerToSimulatedObjectNamed(declaration.getName())->sendEvent(*pendingEventsListIterator) ;
00250 }
00251 _pendingEventsList.erase ( pendingEvents ) ;
00252 }
00253 }
00254 }
|
|
|
initialisation des referentiels ... a redefinir en distribue
Reimplemented from PsController. Definition at line 139 of file PsDistributedController.cxx. References PsNameToPointerMap< PsnReferenceObjectHandle >::addObjectWithIndex(), PsSimulatedObject::getName(), PsnObjectHandle::getSimulatedObject(), PsnReferenceObjectHandle::initial, PsController::processStartEventOf(), PsController::setComputingState(), tableDesInitialises, and tableDesNonInitialises.
00140 {
00141 try
00142 {
00143 PsController::processStartEventOf ( objectHandle ) ;
00144 tableDesInitialises.addObjectWithIndex ( objectHandle->getSimulatedObject ().getName (),
00145 objectHandle) ;
00146 #ifdef _DEBUGDISTRIBUTEDINIT
00147 cerr<<"PsDistributedController::processStartEventOf init of "
00148 << objectHandle->getSimulatedObject ().getName ()
00149 <<" successfull"<<endl;
00150 #endif
00151 }
00152 catch (PsUnInitialisedAttributeException & e)
00153 {
00154 #ifdef _DEBUGDISTRIBUTEDINIT
00155 cerr<<"PsDistributedController::processStartEventOf init of "
00156 << objectHandle->getSimulatedObject ().getName ()
00157 <<" failed"<<endl;
00158 #endif
00159 setComputingState (objectHandle, PsnReferenceObjectHandle::initial ) ;
00160 tableDesNonInitialises.addObjectWithIndex ( objectHandle->getSimulatedObject ().getName () ,
00161 objectHandle) ;
00162 }
00163 }
|
|
|
redefine to purge the list of remembered broadcasted signals
Reimplemented from PsController. Definition at line 347 of file PsDistributedController.cxx. References _broadcastedSignals, list< pair< PsEventIdentifier, pair< PsEvent *, PsDate > > >::empty(), list< pair< PsEventIdentifier, pair< PsEvent *, PsDate > > >::front(), list< pair< PsEventIdentifier, pair< PsEvent *, PsDate > > >::pop_front(), PsDate, PsController::purgeMemoryFromOldEvents(), and pair< T1, T2 >::second. Referenced by ~PsDistributedController().
00348 {
00349 PsController::purgeMemoryFromOldEvents ( dateOfOldestKept ) ;
00350 //purge the list of old broadcasted signals. 2 * _stepPeriod is arbitrary. The effective distributed controller should redefine this according to it's latency
00351 pair<PsEventIdentifier, pair <PsEvent *, PsDate> > examinedPair ;
00352 bool disposableElements = !_broadcastedSignals.empty() ;
00353 while ( disposableElements )
00354 {
00355 examinedPair = _broadcastedSignals.front() ;
00356 if ( examinedPair.second.second < dateOfOldestKept )
00357 {
00358 delete examinedPair.second.first ;
00359 _broadcastedSignals.pop_front() ;
00360 disposableElements = !_broadcastedSignals.empty() ;
00361 }
00362 else
00363 {
00364 disposableElements = false ;
00365 }
00366 }
00367
00368 }
|
|
||||||||||||
|
cancel the registration of an object for a signal
Reimplemented from PsController. Definition at line 390 of file PsDistributedController.cxx. References PsController::_date, PsSimulatedObject::getName(), PsSystemEventIdentifier::MaskCancelRegistrationForSignal, and PsSimulatedObject::sendEvent().
00390 {
00391 PsValuedEvent<CancellationData> * event ;
00392 event= new PsValuedEvent<CancellationData> (PsSystemEventIdentifier::MaskCancelRegistrationForSignal, _date, getName(), getName() ,CancellationData (sigId, registrant) ) ;
00393 sendEvent (event) ;
00394 return true ;
00395 }
|
|
||||||||||||||||
|
register an object for a signal
Reimplemented from PsController. Definition at line 379 of file PsDistributedController.cxx. References PsController::_date, PsSimulatedObject::getName(), PsSystemEventIdentifier::MaskRegisterForSignal, and PsSimulatedObject::sendEvent().
00382 {
00383 PsValuedEvent<RegistrationData> * event ;
00384 event= new PsValuedEvent<RegistrationData> (PsSystemEventIdentifier::MaskRegisterForSignal, _date, getName(), getName() ,RegistrationData (sig, registrant, eventId) ) ;
00385 sendEvent (event) ;
00386 return true ;
00387 }
|
|
|
the list storing the recently broadcasted signals
Definition at line 147 of file PsDistributedController.h. Referenced by broadcastEventsForSignal(), processEvent(), and purgeMemoryFromOldEvents(). |
|
|
data structure containing references to the DuplicatedObjectHandlers
Definition at line 128 of file PsDistributedController.h. Referenced by createDuplicatedObject(), and getPointerToSimulatedObjectNamed(). |
|
|
data structure containing references to the MirrorObjectHandlers
Definition at line 124 of file PsDistributedController.h. Referenced by createMirrorObject(), and getPointerToSimulatedObjectNamed(). |
|
|
name of the process this controller is controlling
Definition at line 144 of file PsDistributedController.h. Referenced by createControlledObjects(), createObject(), and processNewObjectDeclaration(). |
|
|
la table des référentiels initilisés
Definition at line 141 of file PsDistributedController.h. Referenced by processStartEventOf(). |
|
|
la table des référentiels non-initilisés
Definition at line 138 of file PsDistributedController.h. Referenced by PsMomeController::init(), and processStartEventOf(). |
| Documentation generated on Mon Nov 25 15:25:57 2002 |
Generated with doxygen 1.2.12 by Dimitri van Heesch , 1997-2001 |