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)
183 unsigned long numberOfExtents);
184 virtual DtDistributedRegion* createDistributedRegion(
DtSpaceHandle spaceHandleValue,
185 unsigned long numberOfExtents);
192 virtual void deleteDistributedRegion(DtDistributedRegion *regionPtr);
201 virtual void notifyAboutDistributedRegionModification(DtDistributedRegion* theRegion);
210 virtual DtRegionRealization* getRegionRealization(DtDistributedRegion* region,
226 unsigned long lower,
unsigned long upper);
234 virtual bool getDimensionHandleSet(
236 rti1516::DimensionHandleSet& dimSet)
const;
237 #elif defined(DtIFSPEC1516E)
241 unsigned long lower,
unsigned long upper);
249 virtual bool getDimensionHandleSet(
251 rti1516e::DimensionHandleSet& dimSet)
const;
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;
virtual void deleteRegion(Region *theRegion)
virtual SpaceHandle getInteractionRoutingSpaceHandle(InteractionClassHandle theHandle)
virtual void notifyAboutRegionModification(Region &theRegion)
virtual Region * createRegion(SpaceHandle theSpace, ULong numberOfExtents)
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
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:84
#define NULL
Definition: baseTypes13.h:8
DtHandle DtFederateHandle
Definition: internalTypes.h:29
virtual SpaceHandle getAttributeRoutingSpaceHandle(AttributeHandle theHandle, ObjectClassHandle whichClass)
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