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);
112 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);
238 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);
298 virtual void processDeleteRegion(DtRegionRealization& region);
304 virtual void processNotifyRegion(DtRegionRealization ®ion,
bool newRegion);
313 rti1516::VariableLengthData
const & tag,
314 DtRemoteRegionSet* remoteRegSet);
315 #elif defined(DtIFSPEC1516E)
318 rti1516e::VariableLengthData
const & tag,
319 DtRemoteRegionSet* remoteRegSet);
324 DtRemoteRegionSet* remoteRegSet);
336 virtual void remoteSubscribeRegion(
343 virtual void removeRemoteSubscribeRegion(
351 virtual void processRemoteUnsubscribeRegion();
355 virtual void processRemoteScopeChanges(DtRemoteRegionSet* regionSet);
359 virtual void processPubRegionSet(
const DtObjRegSetMsg& msg);
360 virtual void processSubRegionSet(
const DtObjRegSetMsg& msg);
361 virtual void processAssocPubReg(
const DtAssocPubRegMsg& msg);
362 virtual void processAssocSubReg(
const DtAssocSubRegMsg& msg);
378 static void processAssocPubReg(
const DtAssocPubRegMsg& msg,
void* usr);
379 static void processAssocSubReg(
const DtAssocSubRegMsg& msg,
void* usr);
380 static void processRegionSet(
const DtObjRegSetMsg& msg,
void* usr);
390 virtual DtHandle uniqueRegionSetHandle();
394 virtual void registerAssociateDistributedRegionForUpdates(
DtRtiObject&
object,
399 virtual void calculateRegionSet(
400 unsigned long channel, rti1516::RegionHandleSet & regionHandles);
401 #elif defined(DtIFSPEC1516E)
403 virtual void calculateRegionSet(
404 unsigned long channel, rti1516e::RegionHandleSet & regionHandles);
406 virtual void calculateRegionSet(
407 unsigned long channel,
const DtAhvps& reflectSet);
425 virtual void removeLocalObjectAssociations(
DtRtiObject&
object);
428 virtual void removeRemoteObjectAssociations(
DtRtiObject&
object);
432 virtual void addPendingAssocPubRegAdd(DtPubRegionSet& regionSet,
434 virtual void addPendingAssocPubRegRemove(DtPubRegionSet& regionSet,
436 virtual void addPendingUnassocPubReg(DtPubRegionSet& regionSet,
438 virtual void processPendingAssocPubReg();
443 virtual void addPendingAssocSubRegAdd(DtSubRegionSet& regionSet,
445 virtual void addPendingAssocSubRegRemove(DtSubRegionSet& regionSet,
447 virtual void addPendingUnassocSubReg(DtSubRegionSet& regionSet,
449 DtSubRegionSet* pasRegionSet=0);
450 virtual void processPendingSubRegAssoc();
455 virtual void addPendingAssocPasRegAdd(DtSubRegionSet& regionSet,
457 virtual void addPendingAssocPasRegRemove(DtSubRegionSet& regionSet,
459 virtual void addPendingUnassocPasReg(DtSubRegionSet& regionSet,
461 DtSubRegionSet* subRegionSet=0);
462 virtual void processPendingPasRegAssoc();
469 virtual void collectPendingPubRegSet(DtObjectRegionSet* regionSet);
470 virtual void collectPendingSubRegSet(DtObjectRegionSet* regionSet);
471 virtual void collectPendingAssocPubReg(DtPubRegionSet& regionSet,
473 virtual void collectPendingAssocSubReg(DtSubRegionSet& regionSet,
476 virtual void processCollectedPubRegSet(
478 virtual void processCollectedAssocPubReg(
480 virtual void processCollectedSubRegSet();
481 virtual void processCollectedAssocSubReg();
485 virtual void processAssocSubReg(DtRemoteRegionSet* regionSet,
491 virtual void processAssocPubReg(
493 DtRemoteRegionSet* regionSet,
498 bool isRemoveAssociation);
503 virtual void evaluateScopeUpdates(
DtRtiObject*
object,
505 virtual void evaluateScopeUpdates(
DtRtiObject*
object,
510 virtual void evaluateOutOfScopeUpdates(
DtRtiObject*
object,
519 virtual unsigned int evaluateMatchingAfterAdd(
520 DtRegionMatchList& matchList,
521 DtRegionMatchList& matchOverlapList,
522 DtLocalRegionSet& localRegionSet,
523 DtRemoteRegionSet& remoteRegionSet,
532 virtual void evaluateMatchingLocalPubAfterAdd(
533 DtPubRegionSet& pubRegionSet,
540 virtual void evaluateMatchingRemotePubAfterAdd(DtRegionSetList& regSetList,
541 DtRemoteRegionSet& remotePubRegionSet,
548 virtual void evaluateMatchingLocalSubAfterAdd(
549 DtSubRegionSet& subRegionSet,
552 std::set<DtObjectRegionSet*>& collectedJoins);
557 virtual void evaluateMatchingRemoteSubAfterAdd(
558 DtRemoteRegionSet& remoteSubRegionSet,
566 virtual void evaluateMatchingAfterLocalRemove(DtRegionMatchList& matchList,
567 DtRegionMatchList& matchOverlapList, DtLocalRegionSet& regionSet,
569 std::set<DtObjectRegionSet*>* collectedDrops = 0);
575 virtual void evaluateMatchingLocalPubAfterRemove(DtLocalRegionSet& regionSet,
582 virtual void evaluateMatchingLocalSubAfterRemove(DtLocalRegionSet& regionSet,
584 std::set<DtObjectRegionSet*>& collectedDrops);
588 virtual void evaluateMatchingAfterRemoteRemove(
589 DtRegionMatchList& matchList, DtRegionMatchList& matchOverlapList,
595 virtual void evaluateMatchingRemotePubAfterRemove(
601 virtual void evaluateMatchingRemoteSubAfterRemove(
608 virtual void evaluateMatchingRemotePubForRemove(
616 virtual void evaluateMatchingRemoteSubForRemove(
626 virtual void evaluateRegionSetOverlap(DtRegionSetList& evalList,
627 DtRegionMatchList& overlapList,
628 DtRegionMatchList& matchOverlapList,
629 DtObjectRegionSet& regionSet,
631 std::set<DtRemoteRegionSet*>* overlapsAdded=0,
632 std::set<DtRemoteRegionSet*>* overlapsRemoved=0);
641 virtual void evaluateRegionOverlap(DtRegionSetList& evalList,
642 DtRegionMatchList& overlapList,
643 DtRegionMatchList& matchOverlapList,
644 DtObjectRegionSet& regionSet, DtRegionRealization& region,
646 std::set<DtRemoteRegionSet*>* overlapsAdded=0,
647 std::set<DtRemoteRegionSet*>* overlapsRemoved=0);
651 virtual void discoverAssociatedObjects(std::set<DtRemoteRegionSet*> overlapsAdded);
655 virtual void joinRegionSetGroups(std::set<DtRemoteRegionSet*> overlapsAdded);
659 virtual void dropRegionSetGroups(std::set<DtRemoteRegionSet*> overlapsRemoved);
662 virtual void addRemoteSubscribeRegion(
DtRtiObject&
object, DtRemoteRegionSet
const& subRegSet);
665 virtual void addRemoteSubscribeRegion(
DtRtiObject&
object, DtRemoteRegionSet
const& subRegSet,
669 virtual void removeRemoteSubscribeRegion(
DtRtiObject&
object, DtRemoteRegionSet
const& subRegSet);
672 virtual void removeRemoteSubscribeRegion(
DtRtiObject&
object, DtRemoteRegionSet
const& subRegSet,
678 virtual void updateRemoteSubscribeRegion(DtPubRegionSet& regionSet,
679 std::set<DtRemoteRegionSet*> added, std::set<DtRemoteRegionSet*> removed);
707 virtual void addObjectDefaultByClass(
DtRtiObject*
object);
708 virtual void removeObjectDefaultByClass(
DtRtiObject*
object);
713 virtual void getDefaultPubRegionSetAttrList(
721 DtRemoteRegionSet* regSet);
731 virtual void acquireAssociateRegionForUpdates(
739 virtual void unassociateRegionForDivested(
DtRtiObject&
object,
743 virtual void destroyRegionLists();
748 DtObjectRegionSet* regSet );
753 DtObjectRegionSet* regSet,
bool isDefaultRegionSet=
false);
758 DtRemoteRegionSet* regSet,
bool isDefaultRegionSet=
false);
764 DtPubRegionSet* myDefaultPubRegionSet;
765 DtSubRegionSet* myDefaultSubRegionSet;
766 DtSubRegionSet* myDefaultPasRegionSet;
767 DtRemoteRegionSet* myDefaultRemotePubRegionSet;
768 DtRemoteRegionSet* myDefaultRemoteSubRegionSet;
773 DtRegionSetList myLocalPublish;
774 DtRegionSetList myRemotePublish;
779 DtRegionMatchList myMatchPublish;
780 DtRegionMatchList myOverlapPublish;
781 DtRegionMatchList myMatchOverlapPub;
782 DtRegionSetList myLocalSubscribe;
783 DtRegionSetList myPassiveSubscribe;
784 DtRegionSetList myRemoteSubscribe;
785 DtRegionMatchList myMatchSubscribe;
786 DtRegionMatchList myOverlapSubscribe;
787 DtRegionMatchList myMatchOverlapSub;
795 MAKRti::DtHashList myPendingPubRegAdd;
796 MAKRti::DtHashList myPendingPubRegRemove;
797 MAKRti::DtHashList myPendingPubRegUnassoc;
798 MAKRti::DtHashList myPendingSubRegAdd;
799 MAKRti::DtHashList myPendingSubRegRemove;
800 MAKRti::DtHashList myPendingSubRegUnassoc;
801 MAKRti::DtHashList myPendingPasRegAdd;
802 MAKRti::DtHashList myPendingPasRegRemove;
803 MAKRti::DtHashList myPendingPasRegUnassoc;
804 MAKRti::DtList myPendingPubRegSets;
805 MAKRti::DtList myPendingSubRegSets;
806 DtPendingPubRegAssocsMap myPendingPubRegAssocs;
807 MAKRti::DtHashList myPendingSubRegAssocs;
808 DtObjectClassMaskMap myPendingSubRegAssocsMask;
812 std::map<DtHandle,DtAttributeHandleSet*> myOldOnSet;
815 MAKRti::DtHashList myRemoteObjectRegionSets;
818 MAKRti::DtHashList myRemoteObjectDefaultAttrs;
821 MAKRti::DtHashList myRemoteObjectDefaultByClass;
824 MAKRti::DtHashList myRemoteClassRegionSets;