MAK RTIspy API Documentation for HLA Evolved
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
distributedDdmMgr.h
Go to the documentation of this file.
1 /*********************************************************************
2 ** Copyright (c) 2006 MaK Technologies, Inc.
3 ** All rights reserved.
4 *********************************************************************/
5 /*********************************************************************
6 ** $RCSfile: distributedDdmMgr.h,v $ $Revision: 1.9 $ $State: Exp $
7 *********************************************************************/
8 #ifndef distributedDdmMgr_H_
9 #define distributedDdmMgr_H_
10 #ifdef DDM
11 
14 
15 #include "rtiMsConfig.h"
16 #include <assert.h>
17 #include "ddmMgr.h"
18 
19 class DtObjectDataDistMgr;
20 class DtInterDataDistMgr;
21 class DtDistributedRegion;
22 class DtRegionSet;
23 class DtNotifyRegMsg;
24 class DtDeleteRegMsg;
25 class DtRegionRealizationMsg;
26 class DtResignMsg;
27 
33 class DT_DLL_LRC DtDistributedDataDistMgr : public DtDataDistMgr
34 {
35 
36 public:
38  typedef std::map<DtRegionHandle, DtRegionRealization*> DtRegionRealizationMap;
39 
40 protected:
41 
43  DtDistributedDataDistMgr(DtFederateMgr* fedMgrPtr);
44 
45 public:
46 
48  virtual ~DtDistributedDataDistMgr();
49 
50 private:
51 
53  DtDistributedDataDistMgr(DtDistributedDataDistMgr const& );
54 
56  DtDistributedDataDistMgr& operator= (DtDistributedDataDistMgr const& );
57 
58 public:
59 
61  virtual DtDistributedRegion& defaultRegion();
62 
64  virtual DtRegionRealization& defaultRegionRealization();
65 
67  virtual DtRegionEntryList const& defaultRegionList() const;
68 
70  virtual DtObjectDataDistMgr* objDdmMgr();
71 
73  virtual DtInterDataDistMgr* interDdmMgr();
74 
76  virtual bool active();
77 
79  virtual MAKRti::DtInetAddr freeChannel();
80 
82  virtual void processNotifyRegion(const DtNotifyRegMsg& msg);
83 
85  virtual void processDeleteRegion(const DtDeleteRegMsg& msg);
86 
88  virtual void processRegionRealization(const DtRegionRealizationMsg& msg);
89 
91  virtual void processResign(const DtResignMsg& msg);
92 
94  virtual void joinObjectRegionSet(const MAKRti::DtInetAddr& address,
95  DtRegionHandle regionSetHandle);
96 
98  virtual void dropObjectRegionSet(const MAKRti::DtInetAddr& address,
99  DtRegionHandle regionSetHandle);
100 
102  virtual void joinInteractionRegionSet(const MAKRti::DtInetAddr& address,
103  DtInteractionClassHandle classHandle, DtRegionHandle regionSetHandle);
104 
106  virtual void dropInteractionRegionSet(const MAKRti::DtInetAddr& address,
107  DtInteractionClassHandle classHandle, DtRegionHandle regionSetHandle);
108 
110  virtual DtRegion* localRegion(DtRegionHandle regionHandle);
111 
113  virtual DtDistributedRegion* localDistributedRegion(DtRegionHandle regionHandle);
114 
116  virtual bool isMemberLocalRegions(DtRegionHandle regionHandle);
117 
119  virtual DtRegion* remoteRegion(DtRegionHandle regionHandle);
120 
122  virtual DtDistributedRegion* remoteDistributedRegion(DtRegionHandle regionHandle);
123 
125  virtual DtRegionRealization* localRegionRealization(
126  DtRegionHandle realizationHandle);
127 
129  virtual DtRegionRealization* remoteRegionRealization(
130  DtRegionHandle realizationHandle);
131 
133  virtual bool isMemberRemoteRegions(DtRegionHandle regionHandle);
134 
135 #if defined(DtIFSPEC1516) || defined(DtIFSPEC1516E) || defined(DtIFSPEC1516_2025)
136  virtual DtRegionHandle constructConveyedRegion(DtRegionRealization const& region,
143  DtDimensionHandleStdSet const& availDim);
144 
147  virtual void destructConveyedRegions();
148 
151  virtual DtRegionRealization const* conveyedRegion(
152  DtRegionHandle realizationHandle);
153 #endif
154 
156  virtual void addPendingNotifyRegion(DtRegionSet& regionSet);
157 
159  virtual void addPendingNotifyRegion(const DtRegionEntryList& regionList);
160 
163  virtual void sendPendingNotifyRegion(bool forceDualTransmit=false);
164 
167  virtual void sendNotifyRegionMsg(const DtDistributedRegion &region,
168  bool forceDualTransmit=false);
169 
171  virtual void sendDeleteRegionMsg(DtRegionHandle handleValue);
172 
175  virtual void sendRegionRealizationMsg(
176  DtRegionRealization const& regionRealization, bool forceDualTransmit=false);
177 
179 #if defined(DtIFSPEC1516) || defined(DtIFSPEC1516E) || defined(DtIFSPEC1516_2025)
180  virtual DtRegionHandle createRegion(DtDimensionHandleStdSet const & dimHandles);
181 #else
182  virtual DtRegion* createRegion(DtSpaceHandle spaceHandleValue, unsigned long numberOfExtents);
183  virtual DtDistributedRegion* createDistributedRegion(DtSpaceHandle spaceHandleValue, unsigned long numberOfExtents);
184 #endif
185 
187  virtual void deleteRegion(DtRegion *regionPtr);
188 
190  virtual void deleteDistributedRegion(DtDistributedRegion *regionPtr);
191 
193  virtual void deleteRegion(DtRegionHandle regionHandle);
194 
196  virtual void notifyAboutRegionModification(DtRegion* theRegion);
197 
199  virtual void notifyAboutDistributedRegionModification(DtDistributedRegion* theRegion);
200 
202  virtual void notifyAboutRegionModification(DtRegionHandle regionHandle);
203 
208  virtual DtRegionRealization* getRegionRealization(DtDistributedRegion* region,
209  DtDimensionHandleStdSet* defaultDimensions = NULL);
210 
212  virtual DtSpaceHandle getAttributeRoutingSpaceHandle(
213  DtAttributeHandle theHandle,
214  DtObjectClassHandle whichClass);
215 
217  virtual DtSpaceHandle getInteractionRoutingSpaceHandle(
218  DtInteractionClassHandle theHandle);
219 
220 #if !defined(DtIFSPEC13)
221  virtual void setRangeBounds(DtRegionHandle regionHandle, DtExtentIndex extentIndex, DtDimensionHandle dimHandle,
223  unsigned long lower, unsigned long upper);
224  virtual void setRangeBounds(DtRegionHandle regionHandle, DtExtentIndex extentIndex, DtDimBounds const & dimBounds);
225  virtual DtDimBounds getRangeBounds(DtRegionHandle regionHandle, DtExtentIndex extentIndex, DtDimensionHandle dimHandle);
226 
229  virtual bool getDimensionHandleSet(DtRegionHandle theRegionHandle, RTI_API::DimensionHandleSet& dimSet) const;
230 #endif
231 
233  virtual void postTick();
234 
236  virtual bool save(DtRtiSaveFile& file);
237 
239  virtual void prepareToRestore();
240 
242  virtual bool restore( DtRtiSaveFile& file );
243 
244 public:
245 
247  static void processNotifyRegion(const DtNotifyRegMsg& msg, void* usr);
248 
250  static void processDeleteRegion(const DtDeleteRegMsg& msg, void* usr);
251 
253  static void processRegionRealization(const DtRegionRealizationMsg& msg,
254  void* usr);
255 
257  static DtDataDistMgr* create(DtFederateMgr* fedMgrPtr);
258 
259 protected:
260 
262  virtual DtRegionHandle uniqueRegionHandle();
263 
265  virtual DtRegionHandle uniqueRegionRealizationHandle();
266 
268  virtual void addLocalRegion(DtDistributedRegion* region);
269  virtual void removeLocalRegion(DtRegionHandle regionHandle);
270 
272  virtual void addRemoteRegion(DtDistributedRegion* region,
273  DtFederateHandle fedHandle);
274  virtual void removeRemoteRegion(DtRegionHandle regionHandle,
275  DtFederateHandle fedHandle);
276 
278  virtual void addLocalRegionRealization(DtRegionRealization* realization);
279  virtual void removeLocalRegionRealization(DtRegionHandle handle);
280 
282  virtual void addRemoteRegionRealization(DtRegionRealization* realization,
283  DtFederateHandle fedHandle);
284  virtual void removeRemoteRegionRealization(DtRegionHandle handle,
285  DtFederateHandle fedHandle);
286 
288  virtual void destroyLists();
289 
290 protected:
291 
293  DtDistributedRegion* myDefaultRegion;
294  DtRegionRealization* myDefaultRegionRealization;
295  DtRegionEntryList myDefaultRegionList;
296 
298  MAKRti::DtInetAddr myFreeChannel;
299 
301  bool myFreeChannelInitialized;
302 
304  std::map<DtInetAddr, MAKRti::DtList*> myObjRegSetChannels;
305  std::map<DtInetAddr, MAKRti::DtHashlist*> myInterRegSetChannels;
306 
308  MAKRti::DtHashlist myLocalRegions;
309  MAKRti::DtHashlist myRemoteRegions;
310  MAKRti::DtHashlist myRemoteRegionsByFederate;
311  MAKRti::DtHashlist myLocalRegionRealizations;
312  MAKRti::DtHashlist myLocalRegionRealizationsByRegion;
313  std::map<DtRegionHandle, DtRegionRealization*> myRemoteRegionRealizations;
314  MAKRti::DtHashlist myRemoteRegionRealizationsByRegion;
315  MAKRti::DtHashlist myRemoteRegionRealizationsByFederate;
316  DtRegionRealizationMap myConveyedRegions;
317 
319  DtRegionHandle myNextRegionHandle;
320  DtRegionHandle myNextRegionRealizationHandle;
321  DtRegionHandle myNextConveyedRegionHandle;
322 
324  DtRegionHandleStdSet myPendingNotifyRegions;
325 
327  DtRegionHandleStdSet myNotifyRegionsSentThisTick;
328 
329 };
330 
331 #endif
332 #endif
333 
334 
335 
std::set< DtRegionHandle > DtRegionHandleStdSet
Definition: internalTypes.h:66
Definition: resignMsg.h:36
DtHandle DtRegionHandle
Definition: internalTypes.h:65
DtHandle DtObjectClassHandle
Definition: internalTypes.h:48
DtHandle DtDimensionHandle
Definition: internalTypes.h:62
DtHandle DtInteractionClassHandle
Definition: internalTypes.h:52
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
DtHandle DtFederateHandle
Definition: internalTypes.h:46
std::set< DtDimensionHandle > DtDimensionHandleStdSet
Definition: internalTypes.h:63
long DtSpaceHandle
Definition: internalTypes.h:42
DtHandle DtAttributeHandle
Definition: internalTypes.h:54
DtHandle DtExtentIndex
Definition: internalTypes.h:67
#define DT_DLL_LRC
Definition: rtiMsConfig.h:155
Definition: saveFile.h:21
std::set< DimensionHandle > DimensionHandleSet
Definition: Typedefs.h:38

Document ID: Generated on Wed Jul 8 16:20:32 EDT 2026 from SVN revision 291616
Copyright © 2005-2025 MAK Technologies Inc. All Rights Reserved (www.mak.com)