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)
142 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(
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;