MAK RTIspy API Documentation for HLA 1.3
 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)
136 
137 
138 
139 
140 
141 
142  virtual DtRegionHandle constructConveyedRegion(DtRegionRealization const& region,
143  DtDimensionHandleSet 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)
180  virtual DtRegionHandle createRegion(DtDimensionHandleSet const & dimHandles);
181 #else
182  virtual DtRegion* createRegion(DtSpaceHandle spaceHandleValue,
183  unsigned long numberOfExtents);
184  virtual DtDistributedRegion* createDistributedRegion(DtSpaceHandle spaceHandleValue,
185  unsigned long numberOfExtents);
186 #endif
187 
189  virtual void deleteRegion(DtRegion *regionPtr);
190 
192  virtual void deleteDistributedRegion(DtDistributedRegion *regionPtr);
193 
195  virtual void deleteRegion(DtRegionHandle regionHandle);
196 
198  virtual void notifyAboutRegionModification(DtRegion* theRegion);
199 
201  virtual void notifyAboutDistributedRegionModification(DtDistributedRegion* theRegion);
202 
204  virtual void notifyAboutRegionModification(DtRegionHandle regionHandle);
205 
210  virtual DtRegionRealization* getRegionRealization(DtDistributedRegion* region,
211  DtDimensionHandleSet* defaultDimensions=NULL);
212 
215  DtAttributeHandle theHandle,
216  DtObjectClassHandle whichClass);
217 
220  DtInteractionClassHandle theHandle);
221 
222 #ifdef DtIFSPEC1516
223 
224  virtual void setRangeBounds(DtRegionHandle regionHandle,
225  DtExtentIndex extentIndex, DtDimensionHandle dimHandle,
226  unsigned long lower, unsigned long upper);
227  virtual void setRangeBounds(DtRegionHandle regionHandle,
228  DtExtentIndex extentIndex, DtDimBounds const & dimBounds);
229  virtual DtDimBounds getRangeBounds(DtRegionHandle regionHandle,
230  DtExtentIndex extentIndex, DtDimensionHandle dimHandle);
231 
234  virtual bool getDimensionHandleSet(
235  DtRegionHandle theRegionHandle,
236  rti1516::DimensionHandleSet& dimSet) const;
237 #elif defined(DtIFSPEC1516E)
238 
239  virtual void setRangeBounds(DtRegionHandle regionHandle,
240  DtExtentIndex extentIndex, DtDimensionHandle dimHandle,
241  unsigned long lower, unsigned long upper);
242  virtual void setRangeBounds(DtRegionHandle regionHandle,
243  DtExtentIndex extentIndex, DtDimBounds const & dimBounds);
244  virtual DtDimBounds getRangeBounds(DtRegionHandle regionHandle,
245  DtExtentIndex extentIndex, DtDimensionHandle dimHandle);
246 
249  virtual bool getDimensionHandleSet(
250  DtRegionHandle theRegionHandle,
251  rti1516e::DimensionHandleSet& dimSet) const;
252 #endif
253 
255  virtual void postTick();
256 
258  virtual bool save(DtRtiSaveFile& file);
259 
261  virtual void prepareToRestore();
262 
264  virtual bool restore( DtRtiSaveFile& file );
265 
266 public:
267 
269  static void processNotifyRegion(const DtNotifyRegMsg& msg, void* usr);
270 
272  static void processDeleteRegion(const DtDeleteRegMsg& msg, void* usr);
273 
275  static void processRegionRealization(const DtRegionRealizationMsg& msg,
276  void* usr);
277 
279  static DtDataDistMgr* create(DtFederateMgr* fedMgrPtr);
280 
281 protected:
282 
284  virtual DtRegionHandle uniqueRegionHandle();
285 
287  virtual DtRegionHandle uniqueRegionRealizationHandle();
288 
290  virtual void addLocalRegion(DtDistributedRegion* region);
291  virtual void removeLocalRegion(DtRegionHandle regionHandle);
292 
294  virtual void addRemoteRegion(DtDistributedRegion* region,
295  DtFederateHandle fedHandle);
296  virtual void removeRemoteRegion(DtRegionHandle regionHandle,
297  DtFederateHandle fedHandle);
298 
300  virtual void addLocalRegionRealization(DtRegionRealization* realization);
301  virtual void removeLocalRegionRealization(DtRegionHandle handle);
302 
304  virtual void addRemoteRegionRealization(DtRegionRealization* realization,
305  DtFederateHandle fedHandle);
306  virtual void removeRemoteRegionRealization(DtRegionHandle handle,
307  DtFederateHandle fedHandle);
308 
310  virtual void destroyLists();
311 
312 protected:
313 
315  DtDistributedRegion* myDefaultRegion;
316  DtRegionRealization* myDefaultRegionRealization;
317  DtRegionEntryList myDefaultRegionList;
318 
320  MAKRti::DtInetAddr myFreeChannel;
321 
323  bool myFreeChannelInitialized;
324 
326  std::map<DtInetAddr, MAKRti::DtList*> myObjRegSetChannels;
327  std::map<DtInetAddr, MAKRti::DtHashlist*> myInterRegSetChannels;
328 
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;
339 
341  DtRegionHandle myNextRegionHandle;
342  DtRegionHandle myNextRegionRealizationHandle;
343  DtRegionHandle myNextConveyedRegionHandle;
344 
346  std::set<DtRegionHandle> myPendingNotifyRegions;
347 
349  std::set<DtRegionHandle> myNotifyRegionsSentThisTick;
350 
351 };
352 
353 #endif
354 #endif
355 
356 
357 

Document ID: Generated on Mon Jul 9 10:30:41 EDT 2018 from SVN revision 190224
Copyright © 2005-2018 VT MÄK Inc. All Rights Reserved (www.mak.com)