29 class DtPendingAssocRegion;
31 class DtDistributedDataDistMgr;
34 class DtAssocPubRegMsg;
35 class DtAssocSubRegMsg;
36 class DtPubRegSetObjectAssociation;
38 typedef std::map<DtRegionHandle, DtPubRegSetObjectAssociation*> DtPubRegSetObjAssocByRegionHandleMap;
39 typedef std::map<DtObjectInstanceHandle, DtPubRegSetObjAssocByRegionHandleMap> DtPendingPubRegAssocsMap;
58 virtual ~DtObjectDataDistMgr();
63 DtObjectDataDistMgr(DtObjectDataDistMgr
const& );
66 DtObjectDataDistMgr&
operator= (DtObjectDataDistMgr
const& );
71 virtual DtDistributedDataDistMgr* ddmMgr();
72 virtual DtDistributedDataDistMgr* ddmMgr()
const;
78 virtual void resetDdm();
87 virtual DtPubRegionSet* createPubRegionSet(DtRegionEntryList& regionList,
96 virtual DtPubRegionSet* createPubRegionSet(
97 DtRegionRealization& region,
98 DtPubRegionSet* regionSet,
bool regionIsAdded);
105 virtual DtPubRegionSet* createPubRegionSet(
106 DtRegionEntryList
const& regionList, DtPubRegionSet* regionSet,
107 bool regionAreAdded);
110 virtual DtPubRegionSet* addPubRegion(DtRegionRealization& region,
113 DtPubRegionSet* regionSet);
114 virtual DtPubRegionSet* addPubRegionList(DtRegionEntryList
const& regionList,
115 DtPubRegionSet* regionSet);
121 virtual DtPubRegionSet* removePubRegion(DtRegionRealization& region,
122 DtPubRegionSet* regionSet);
127 virtual DtPubRegionSet* removePubRegionList(
128 DtRegionEntryList
const& regionList, DtPubRegionSet* regionSet);
132 virtual DtPubRegionSet* getPubRegionSet(
DtHandle regionSetHandle);
136 virtual DtRemoteRegionSet* getRemotePubRegionSet(
145 virtual DtSubRegionSet* createSubRegionSet(
146 DtRegionEntryList
const& regionList, DtSubRegionSet* regionSet,
155 virtual DtSubRegionSet* createSubRegionSet(
156 DtRegionRealization& region, DtSubRegionSet* regionSet,
161 virtual DtSubRegionSet* addSubRegion(DtRegionRealization& region,
162 DtSubRegionSet* regionSet);
166 virtual DtSubRegionSet* addSubRegionList(DtRegionEntryList
const& regionList,
167 DtSubRegionSet* regionSet);
172 virtual DtSubRegionSet* removeSubRegion(DtRegionRealization& region,
173 DtSubRegionSet* regionSet);
178 virtual DtSubRegionSet* removeSubRegion(DtRegionEntryList
const& regionList,
179 DtSubRegionSet* regionSet);
183 virtual DtSubRegionSet* getSubRegionSet(
DtHandle regionSetHandle);
187 virtual DtRemoteRegionSet* getRemoteSubRegionSet(
196 virtual DtSubRegionSet* createPasRegionSet(
197 DtRegionRealization& region, DtSubRegionSet* regionSet,
206 virtual DtSubRegionSet* createPasRegionSet(
207 DtRegionEntryList
const& regionList, DtSubRegionSet* regionSet,
212 virtual DtSubRegionSet* addPasRegion(DtRegionRealization& region,
213 DtSubRegionSet* regionSet);
217 virtual DtSubRegionSet* addPasRegion(
218 DtRegionEntryList
const& regionList, DtSubRegionSet* regionSet);
223 virtual DtSubRegionSet* removePasRegion(DtRegionRealization& region,
224 DtSubRegionSet* regionSet);
229 virtual DtSubRegionSet* removePasRegion(DtRegionEntryList
const& regionList,
230 DtSubRegionSet* regionSet);
234 virtual DtSubRegionSet* getPasRegionSet(
DtHandle regionSetHandle);
237 virtual DtPubRegionSet* defaultPubRegionSet();
239 virtual DtSubRegionSet* defaultSubRegionSet();
240 virtual DtSubRegionSet* defaultPasRegionSet();
241 virtual DtRemoteRegionSet* defaultRemotePubRegionSet();
242 virtual DtRemoteRegionSet* defaultRemoteSubRegionSet();
247 virtual void registerAssociateRegionForUpdates(
248 DtRegionEntryListWithAttributes& regionList,
DtRtiObject*
object);
252 virtual void registerAssociateRegionForUpdates(
DtRtiObject&
object,
262 virtual void sendRegionSetMsg(DtObjRegSetType type,
270 virtual void sendAssocPublishRegionMsg(
278 virtual void sendAssocSubscribeRegionMsg(
291 virtual void deleteSubRegionSet(DtSubRegionSet* regionSet);
294 virtual void deleteRegion(DtRegionRealization& region);
298 virtual void processDeleteRegion(DtRegionRealization& region);
301 virtual void notifyAboutRegionModification(DtRegionRealization ®ion);
304 virtual void processNotifyRegion(DtRegionRealization ®ion,
bool newRegion);
313 DtRemoteRegionSet* remoteRegSet);
324 virtual void remoteSubscribeRegion(
331 virtual void removeRemoteSubscribeRegion(
339 virtual void processRemoteUnsubscribeRegion();
343 virtual void processRemoteScopeChanges(DtRemoteRegionSet* regionSet);
346 virtual void processPubRegionSet(
const DtObjRegSetMsg& msg);
348 virtual void processSubRegionSet(
const DtObjRegSetMsg& msg);
349 virtual void processAssocPubReg(
const DtAssocPubRegMsg& msg);
350 virtual void processAssocSubReg(
const DtAssocSubRegMsg& msg);
365 static void processAssocPubReg(
const DtAssocPubRegMsg& msg,
void* usr);
367 static void processAssocSubReg(
const DtAssocSubRegMsg& msg,
void* usr);
368 static void processRegionSet(
const DtObjRegSetMsg& msg,
void* usr);
378 virtual DtHandle uniqueRegionSetHandle();
382 virtual void registerAssociateDistributedRegionForUpdates(
DtRtiObject&
object,
385 #if defined(DtIFSPEC13)
386 virtual void calculateRegionSet(
unsigned long channel,
const DtAhvps& reflectSet);
407 virtual void removeLocalObjectAssociations(
DtRtiObject&
object);
410 virtual void removeRemoteObjectAssociations(
DtRtiObject&
object);
413 virtual void addPendingAssocPubRegAdd(DtPubRegionSet& regionSet,
416 virtual void addPendingAssocPubRegRemove(DtPubRegionSet& regionSet,
418 virtual void addPendingUnassocPubReg(DtPubRegionSet& regionSet,
420 virtual void processPendingAssocPubReg();
424 virtual void addPendingAssocSubRegAdd(DtSubRegionSet& regionSet,
427 virtual void addPendingAssocSubRegRemove(DtSubRegionSet& regionSet,
429 virtual void addPendingUnassocSubReg(DtSubRegionSet& regionSet,
431 DtSubRegionSet* pasRegionSet=0);
432 virtual void processPendingSubRegAssoc();
436 virtual void addPendingAssocPasRegAdd(DtSubRegionSet& regionSet,
439 virtual void addPendingAssocPasRegRemove(DtSubRegionSet& regionSet,
441 virtual void addPendingUnassocPasReg(DtSubRegionSet& regionSet,
443 DtSubRegionSet* subRegionSet=0);
444 virtual void processPendingPasRegAssoc();
448 virtual void collectPendingPubRegSet(DtObjectRegionSet* regionSet);
452 virtual void collectPendingSubRegSet(DtObjectRegionSet* regionSet);
453 virtual void collectPendingAssocPubReg(DtPubRegionSet& regionSet,
455 virtual void collectPendingAssocSubReg(DtSubRegionSet& regionSet,
458 virtual void processCollectedPubRegSet(
460 virtual void processCollectedAssocPubReg(
462 virtual void processCollectedSubRegSet();
463 virtual void processCollectedAssocSubReg();
467 virtual void processAssocSubReg(DtRemoteRegionSet* regionSet,
473 virtual void processAssocPubReg(
475 DtRemoteRegionSet* regionSet,
480 bool isRemoveAssociation);
485 virtual void evaluateScopeUpdates(
DtRtiObject*
object,
487 virtual void evaluateScopeUpdates(
DtRtiObject*
object,
492 virtual void evaluateOutOfScopeUpdates(
DtRtiObject*
object,
501 virtual unsigned int evaluateMatchingAfterAdd(
502 DtRegionMatchList& matchList,
503 DtRegionMatchList& matchOverlapList,
504 DtLocalRegionSet& localRegionSet,
505 DtRemoteRegionSet& remoteRegionSet,
514 virtual void evaluateMatchingLocalPubAfterAdd(
515 DtPubRegionSet& pubRegionSet,
522 virtual void evaluateMatchingRemotePubAfterAdd(DtRegionSetList& regSetList,
523 DtRemoteRegionSet& remotePubRegionSet,
530 virtual void evaluateMatchingLocalSubAfterAdd(
531 DtSubRegionSet& subRegionSet,
534 std::set<DtObjectRegionSet*>& collectedJoins);
539 virtual void evaluateMatchingRemoteSubAfterAdd(
540 DtRemoteRegionSet& remoteSubRegionSet,
548 virtual void evaluateMatchingAfterLocalRemove(DtRegionMatchList& matchList,
549 DtRegionMatchList& matchOverlapList, DtLocalRegionSet& regionSet,
551 std::set<DtObjectRegionSet*>* collectedDrops = 0);
557 virtual void evaluateMatchingLocalPubAfterRemove(DtLocalRegionSet& regionSet,
564 virtual void evaluateMatchingLocalSubAfterRemove(DtLocalRegionSet& regionSet,
566 std::set<DtObjectRegionSet*>& collectedDrops);
570 virtual void evaluateMatchingAfterRemoteRemove(
571 DtRegionMatchList& matchList, DtRegionMatchList& matchOverlapList,
577 virtual void evaluateMatchingRemotePubAfterRemove(
583 virtual void evaluateMatchingRemoteSubAfterRemove(
590 virtual void evaluateMatchingRemotePubForRemove(
598 virtual void evaluateMatchingRemoteSubForRemove(
608 virtual void evaluateRegionSetOverlap(DtRegionSetList& evalList,
609 DtRegionMatchList& overlapList,
610 DtRegionMatchList& matchOverlapList,
611 DtObjectRegionSet& regionSet,
613 std::set<DtRemoteRegionSet*>* overlapsAdded=0,
614 std::set<DtRemoteRegionSet*>* overlapsRemoved=0);
623 virtual void evaluateRegionOverlap(DtRegionSetList& evalList,
624 DtRegionMatchList& overlapList,
625 DtRegionMatchList& matchOverlapList,
626 DtObjectRegionSet& regionSet, DtRegionRealization& region,
628 std::set<DtRemoteRegionSet*>* overlapsAdded=0,
629 std::set<DtRemoteRegionSet*>* overlapsRemoved=0);
633 virtual void discoverAssociatedObjects(std::set<DtRemoteRegionSet*> overlapsAdded);
637 virtual void joinRegionSetGroups(std::set<DtRemoteRegionSet*> overlapsAdded);
641 virtual void dropRegionSetGroups(std::set<DtRemoteRegionSet*> overlapsRemoved);
644 virtual void addRemoteSubscribeRegion(
DtRtiObject&
object, DtRemoteRegionSet
const& subRegSet);
647 virtual void addRemoteSubscribeRegion(
DtRtiObject&
object, DtRemoteRegionSet
const& subRegSet,
651 virtual void removeRemoteSubscribeRegion(
DtRtiObject&
object, DtRemoteRegionSet
const& subRegSet);
654 virtual void removeRemoteSubscribeRegion(
DtRtiObject&
object, DtRemoteRegionSet
const& subRegSet,
660 virtual void updateRemoteSubscribeRegion(DtPubRegionSet& regionSet,
661 std::set<DtRemoteRegionSet*> added, std::set<DtRemoteRegionSet*> removed);
688 virtual void addObjectDefaultByClass(
DtRtiObject*
object);
690 virtual void removeObjectDefaultByClass(
DtRtiObject*
object);
695 virtual void getDefaultPubRegionSetAttrList(
703 DtRemoteRegionSet* regSet);
713 virtual void acquireAssociateRegionForUpdates(
721 virtual void unassociateRegionForDivested(
DtRtiObject&
object,
725 virtual void destroyRegionLists();
730 DtObjectRegionSet* regSet );
735 DtObjectRegionSet* regSet,
bool isDefaultRegionSet=
false);
740 DtRemoteRegionSet* regSet,
bool isDefaultRegionSet=
false);
745 DtPubRegionSet* myDefaultPubRegionSet;
747 DtSubRegionSet* myDefaultSubRegionSet;
748 DtSubRegionSet* myDefaultPasRegionSet;
749 DtRemoteRegionSet* myDefaultRemotePubRegionSet;
750 DtRemoteRegionSet* myDefaultRemoteSubRegionSet;
754 DtRegionSetList myLocalPublish;
756 DtRegionSetList myRemotePublish;
760 DtRegionMatchList myMatchPublish;
762 DtRegionMatchList myOverlapPublish;
763 DtRegionMatchList myMatchOverlapPub;
764 DtRegionSetList myLocalSubscribe;
765 DtRegionSetList myPassiveSubscribe;
766 DtRegionSetList myRemoteSubscribe;
767 DtRegionMatchList myMatchSubscribe;
768 DtRegionMatchList myOverlapSubscribe;
769 DtRegionMatchList myMatchOverlapSub;
776 MAKRti::DtHashList myPendingPubRegAdd;
778 MAKRti::DtHashList myPendingPubRegRemove;
779 MAKRti::DtHashList myPendingPubRegUnassoc;
780 MAKRti::DtHashList myPendingSubRegAdd;
781 MAKRti::DtHashList myPendingSubRegRemove;
782 MAKRti::DtHashList myPendingSubRegUnassoc;
783 MAKRti::DtHashList myPendingPasRegAdd;
784 MAKRti::DtHashList myPendingPasRegRemove;
785 MAKRti::DtHashList myPendingPasRegUnassoc;
786 MAKRti::DtList myPendingPubRegSets;
787 MAKRti::DtList myPendingSubRegSets;
788 DtPendingPubRegAssocsMap myPendingPubRegAssocs;
789 MAKRti::DtHashList myPendingSubRegAssocs;
790 DtObjectClassMaskMap myPendingSubRegAssocsMask;
794 std::map<DtHandle,DtAttributeHandleSet*> myOldOnSet;
797 MAKRti::DtHashList myRemoteObjectRegionSets;
800 MAKRti::DtHashList myRemoteObjectDefaultAttrs;
803 MAKRti::DtHashList myRemoteObjectDefaultByClass;
806 MAKRti::DtHashList myRemoteClassRegionSets;
virtual void prepareToRestore()
Prepare the state information to be restored (i.e., clear out existing data).
DtObjectMgr & operator=(DtObjectMgr const &)
Assignment not implemented – Assignment Not Allowed!
virtual bool save(DtRtiSaveFile &file)
DDM.
The declaration of the object manager class.
virtual void processResign(const DtResignMsg &msg)
Process the resign message.
virtual void removeObjectAssociations(DtRtiObject &object)
Remove associations to this object (e.g., regions)
virtual void sendRegister(DtRtiObject *obj)
Sends register information, if DDM is active then this information could include region and region as...
Definition: regSetPacket.h:37
virtual void provideAttrValueUpdate(const DtRtiObject *obj, const DtAttributeHandleSet &attrHandles, DtRtiApiTagConstRef tag)
Make the fedAmb call to provide attrValUpdate for this object.
virtual void setDiscoveredClass(DtRtiObject &object, DtFederateHandle federateHandle, DtObjectClassHandle classHandle)
Set the remote federate's discovered class and update the object's remote subscription information...
Definition: resignMsg.h:36
DtHandle DtObjectClassHandle
Definition: internalTypes.h:48
virtual bool acceptRequestChannel(unsigned long channel)
Return true if the channel (region set handle) should be accepted NOTE: This always returns true when...
DtUpdateType
Update type for object.
Definition: rtiObject.h:94
DtRtiApiVariableLengthData const & DtRtiApiTagConstRef
Definition: rtiApiTypes.h:98
virtual bool acceptObjectChannel(unsigned long channel)
Return true if the channel (region set handle) should be accepted NOTE: This always returns true when...
virtual void postJoinInit()
Post join processing. All managers shall have been created and initialized.
Instances of DtFederateMgr process federation-level messages (such as create, destroy, join, resign, and sync points) and manages the objects responsible for handling general communication, objects, interactions, the FOM, MOM, and data distribution mmg.
Definition: fedMgr.h:93
Defines the internal representation of attribute/parameter handle sets.
Definition: attrHandSet.h:30
std::set< RegionHandle > RegionHandleSet
Definition: Typedefs.h:39
DtHandle DtFederateHandle
Definition: internalTypes.h:46
DtHandle DtObjectInstanceHandle
Definition: internalTypes.h:50
The RTI object maintains the internal RTI object state.
Definition: rtiObject.h:123
virtual void processRequest(const DtRequestMsg &msg)
Process messages.
DtRtiSaveRegionSetTypes
Definition: regSetPacket.h:20
virtual DtObjectClassInfo * firstSubscribedClass(DtObjectClassInfo *classDesc, DtHandle regSetHandle)
Returns most specific superclass of class, to which we are subscribed.
The object manager class processes the object management services.
Definition: objMgr.h:81
unsigned long DtHandle
The internal types.
Definition: internalTypes.h:41
DtHandle DtAttributeHandle
Definition: internalTypes.h:54
virtual bool restore(DtRtiSaveFile &file)
Restore the state information from the given file.
Definition: aHandValSet.h:33
virtual void sendPendingRegister()
Send pending Register.
DtBitMask represents a variable length bit-field which may be used to represent an array of boolean d...
Definition: bitMask.h:24
#define DT_DLL_LRC
Definition: rtiMsConfig.h:155
Definition: saveFile.h:21
Definition: objClassInfo.h:36
virtual void resendRegister(DtRtiObject *obj, DtBitMask *sendMask=0)
Re-sends register information, if DDM is active then this information could include region and region...
Definition: reqObjMsg.h:31
Definition: rtiObject.h:98
virtual void postTick()
Called after processing messages in RTI ambassador tick / evoke callbacks.