8 #ifndef distributedDdmMgr_H_
9 #define distributedDdmMgr_H_
19 class DtObjectDataDistMgr;
20 class DtInterDataDistMgr;
21 class DtDistributedRegion;
25 class DtRegionRealizationMsg;
33 class DT_DLL_LRC DtDistributedDataDistMgr :
public DtDataDistMgr
38 typedef std::map<DtRegionHandle, DtRegionRealization*> DtRegionRealizationMap;
48 virtual ~DtDistributedDataDistMgr();
53 DtDistributedDataDistMgr(DtDistributedDataDistMgr
const& );
56 DtDistributedDataDistMgr& operator= (DtDistributedDataDistMgr
const& );
61 virtual DtDistributedRegion& defaultRegion();
64 virtual DtRegionRealization& defaultRegionRealization();
67 virtual DtRegionEntryList
const& defaultRegionList()
const;
70 virtual DtObjectDataDistMgr* objDdmMgr();
73 virtual DtInterDataDistMgr* interDdmMgr();
76 virtual bool active();
79 virtual MAKRti::DtInetAddr freeChannel();
82 virtual void processNotifyRegion(
const DtNotifyRegMsg& msg);
85 virtual void processDeleteRegion(
const DtDeleteRegMsg& msg);
88 virtual void processRegionRealization(
const DtRegionRealizationMsg& msg);
94 virtual void joinObjectRegionSet(
const MAKRti::DtInetAddr& address,
98 virtual void dropObjectRegionSet(
const MAKRti::DtInetAddr& address,
102 virtual void joinInteractionRegionSet(
const MAKRti::DtInetAddr& address,
106 virtual void dropInteractionRegionSet(
const MAKRti::DtInetAddr& address,
113 virtual DtDistributedRegion* localDistributedRegion(
DtRegionHandle regionHandle);
122 virtual DtDistributedRegion* remoteDistributedRegion(
DtRegionHandle regionHandle);
125 virtual DtRegionRealization* localRegionRealization(
129 virtual DtRegionRealization* remoteRegionRealization(
135 #if defined(DtIFSPEC1516) || defined(DtIFSPEC1516E)
136 virtual DtRegionHandle constructConveyedRegion(DtRegionRealization
const& region,
147 virtual void destructConveyedRegions();
151 virtual DtRegionRealization
const* conveyedRegion(
156 virtual void addPendingNotifyRegion(DtRegionSet& regionSet);
159 virtual void addPendingNotifyRegion(
const DtRegionEntryList& regionList);
163 virtual void sendPendingNotifyRegion(
bool forceDualTransmit=
false);
167 virtual void sendNotifyRegionMsg(
const DtDistributedRegion ®ion,
168 bool forceDualTransmit=
false);
175 virtual void sendRegionRealizationMsg(
176 DtRegionRealization
const& regionRealization,
bool forceDualTransmit=
false);
179 #if defined(DtIFSPEC1516) || defined(DtIFSPEC1516E)
182 virtual DtRegion* createRegion(
DtSpaceHandle spaceHandleValue,
183 unsigned long numberOfExtents);
184 virtual DtDistributedRegion* createDistributedRegion(
DtSpaceHandle spaceHandleValue,
185 unsigned long numberOfExtents);
189 virtual void deleteRegion(DtRegion *regionPtr);
192 virtual void deleteDistributedRegion(DtDistributedRegion *regionPtr);
198 virtual void notifyAboutRegionModification(DtRegion* theRegion);
201 virtual void notifyAboutDistributedRegionModification(DtDistributedRegion* theRegion);
204 virtual void notifyAboutRegionModification(
DtRegionHandle regionHandle);
210 virtual DtRegionRealization* getRegionRealization(DtDistributedRegion* region,
226 unsigned long lower,
unsigned long upper);
234 virtual bool getDimensionHandleSet(
237 #elif defined(DtIFSPEC1516E)
241 unsigned long lower,
unsigned long upper);
249 virtual bool getDimensionHandleSet(
255 virtual void postTick();
261 virtual void prepareToRestore();
269 static void processNotifyRegion(
const DtNotifyRegMsg& msg,
void* usr);
272 static void processDeleteRegion(
const DtDeleteRegMsg& msg,
void* usr);
275 static void processRegionRealization(
const DtRegionRealizationMsg& msg,
290 virtual void addLocalRegion(DtDistributedRegion* region);
294 virtual void addRemoteRegion(DtDistributedRegion* region,
300 virtual void addLocalRegionRealization(DtRegionRealization* realization);
304 virtual void addRemoteRegionRealization(DtRegionRealization* realization,
310 virtual void destroyLists();
315 DtDistributedRegion* myDefaultRegion;
316 DtRegionRealization* myDefaultRegionRealization;
317 DtRegionEntryList myDefaultRegionList;
320 MAKRti::DtInetAddr myFreeChannel;
323 bool myFreeChannelInitialized;
326 std::map<DtInetAddr, MAKRti::DtList*> myObjRegSetChannels;
327 std::map<DtInetAddr, MAKRti::DtHashlist*> myInterRegSetChannels;
330 MAKRti::DtHashlist myLocalRegions;
331 MAKRti::DtHashlist myRemoteRegions;
332 MAKRti::DtHashlist myRemoteRegionsByFederate;
333 MAKRti::DtHashlist myLocalRegionRealizations;
334 MAKRti::DtHashlist myLocalRegionRealizationsByRegion;
335 std::map<DtRegionHandle, DtRegionRealization*> myRemoteRegionRealizations;
336 MAKRti::DtHashlist myRemoteRegionRealizationsByRegion;
337 MAKRti::DtHashlist myRemoteRegionRealizationsByFederate;
338 DtRegionRealizationMap myConveyedRegions;
346 std::set<DtRegionHandle> myPendingNotifyRegions;
349 std::set<DtRegionHandle> myNotifyRegionsSentThisTick;
std::set< DtDimensionHandle > DtDimensionHandleSet
Definition: internalTypes.h:42
Definition: resignMsg.h:36
DtHandle DtRegionHandle
Definition: internalTypes.h:44
DtHandle DtObjectClassHandle
Definition: internalTypes.h:31
DtHandle DtDimensionHandle
Definition: internalTypes.h:41
DtHandle DtInteractionClassHandle
Definition: internalTypes.h:35
std::set< DimensionHandle > DimensionHandleSet
Definition: Typedefs.h:30
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:88
DtHandle DtFederateHandle
Definition: internalTypes.h:29
long DtSpaceHandle
Definition: internalTypes.h:26
DtHandle DtAttributeHandle
Definition: internalTypes.h:37
DtHandle DtExtentIndex
Definition: internalTypes.h:46
#define DT_DLL_LRC
Definition: rtiMsConfig.h:126
Definition: saveFile.h:21