VR-Link API Documentation for DIS
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
hlaObjectManager.h
Go to the documentation of this file.
1 /*********************************************************************
2 ** Copyright (c) 1992-2010 VT MAK
3 ** All rights reserved.
4 *********************************************************************/
5 
6 
7 #ifndef DtHlaObjectManager_H_
8 #define DtHlaObjectManager_H_
9 
10 #if DtHLA
11 
12 #include "callbacks.h"
13 #include "vlutil/vlHashlist.h"
14 #include "hlaObjectFactory.h"
15 #include "region.h"
16 #include "objectId.h"
17 #include <map>
18 
19 typedef std::map<DtObjectId, DtHlaObject*> DtHlaObjectMap;
20 
24 
29 
30 class DT_DLL_VL DtHlaObjectManager
31 {
32 public:
33 
35  DtHlaObjectManager(DtHlaObjectFactory* factory,
36  DtExerciseConn* conn);
37 
39  virtual ~DtHlaObjectManager();
40 
42  virtual const DtHlaObjectMap& allHlaObjects() const;
43 
45  virtual const DtHlaObjectMap& registeredObjects() const;
46 
48  virtual const DtHlaObjectMap& discoveredObjects() const;
49 
51  virtual DtHlaObject* hlaObject(
52 #if DtHLA_1516
53  RTI::ObjectInstanceHandle id
54 #else
55  RTI::ObjectHandle id
56 #endif
57  ) ;
58 
60  virtual DtHlaObject* hlaObject(const char* name) const;
61 
64  virtual void addDiscoverObjectCallback(
65  RTI::ObjectClassHandle handle, DtDiscoverObjectCb cb, void* usr);
66  virtual void removeDiscoverObjectCallback(
67  RTI::ObjectClassHandle handle, DtDiscoverObjectCb cb, void* usr);
68 
72  virtual void addRemoveObjectCallback(
73 #if DtHLA_1516
74  RTI::ObjectInstanceHandle id,
75 #else
76  RTI::ObjectHandle id,
77 #endif
78  DtRemoveObjectCb cb, void* usr);
79  virtual void removeRemoveObjectCallback(
80 #if DtHLA_1516
81  RTI::ObjectInstanceHandle id,
82 #else
83  RTI::ObjectHandle id,
84 #endif
85  DtRemoveObjectCb cb, void* usr);
86 
90  virtual const DtHlaObject* processDiscoverObject(
91 #if DtHLA_1516
92  RTI::ObjectInstanceHandle id,
93  RTI::ObjectClassHandle handle,
94  const std::wstring &name);
95 #else
96  RTI::ObjectHandle id,
97  RTI::ObjectClassHandle handle,
98  const char* name);
99 #endif
100 
101 #if DtHLA_1516_EVOLVED
102 
103 
104 
105 
106 
107  virtual const DtHlaObject* processDiscoverObject(
108  RTI::ObjectInstanceHandle id,
109  RTI::ObjectClassHandle handle,
110  const std::wstring &name,
111  RTI::FederateHandle registeringFederate );
112 #endif
113 
118  virtual const DtHlaObject* processDiscoverObject(DtHlaObject* hlaObj);
119 
124  virtual const DtHlaObject* processDiscoverObjectAsClass(DtHlaObject* hlaObj,
125  RTI::ObjectClassHandle classHandle);
126 
129  virtual void processRemoveObject(
130 #if DtHLA_1516
131  RTI::ObjectInstanceHandle id
132 #else
133  RTI::ObjectHandle id
134 #endif
135  );
136 
140  virtual void processRemoveObject(DtHlaObject* obj);
141 
143  virtual void processReflectAttributeValues(const DtStateMsg &msg);
144 
146  virtual void processProvideUpdate(
147 #if DtHLA_1516
148  RTI::ObjectInstanceHandle id,
149 #else
150  RTI::ObjectHandle id,
151 #endif
152  const RTI::AttributeHandleSet& theAttributes);
153 
158  virtual void processLocalUpdateRequest(
159  RTI::ObjectClassHandle hand,
160  const RTI::AttributeHandleSet& set);
161 
164  virtual void localSubscriptionChanged(RTI::ObjectClassHandle handle);
165 
168  virtual void publicationChanged(RTI::ObjectClassHandle handle);
169 
171  virtual void processAttributeAcquisition(
172 #if DtHLA_1516
173  RTI::ObjectInstanceHandle id,
174 #else
175  RTI::ObjectHandle id,
176 #endif
177  const RTI::AttributeHandleSet& attrs);
178 
180  virtual void processAttributeDivestiture(
181 #if DtHLA_1516
182  RTI::ObjectInstanceHandle id,
183 #else
184  RTI::ObjectHandle id,
185 #endif
186  const RTI::AttributeHandleSet& attrs);
187 
189  virtual void processRequestAssumption(
190 #if DtHLA_1516
191  RTI::ObjectInstanceHandle id,
192  const RTI::AttributeHandleSet& attrs,
193  const RTI::VariableLengthData &tag);
194 #else
195  RTI::ObjectHandle id,
196  const RTI::AttributeHandleSet& attrs,
197  const char* tag);
198 #endif
199 
201  virtual void processRequestRelease(
202 #if DtHLA_1516
203  RTI::ObjectInstanceHandle id,
204  const RTI::AttributeHandleSet& attrs,
205  const RTI::VariableLengthData &tag);
206 #else
207  RTI::ObjectHandle id,
208  const RTI::AttributeHandleSet& attrs,
209  const char* tag);
210 #endif
211 
213  virtual void processConfirmAcquisitionCancellation(
214 #if DtHLA_1516
215  RTI::ObjectInstanceHandle id,
216 #else
217  RTI::ObjectHandle id,
218 #endif
219  const RTI::AttributeHandleSet& attrs);
220 
223  virtual DtHlaObject* registerHlaObject( RTI::ObjectClassHandle classHand,
224  const char* name, const DtDDMRegionSet* regionSet = 0);
225 
226  virtual void registerHlaObjectWithRegion(
227  RTI::ObjectClassHandle classHand,
228  const char* name, const DtDDMRegionSet& regionSet,
229 #if DtHLA_1516
230  RTI::ObjectInstanceHandle& id);
231 #else
232  RTI::ObjectHandle& id);
233 #endif
234 
238  virtual void deleteHlaObject(
239 #if DtHLA_1516
240  RTI::ObjectInstanceHandle objHand);
241 #else
242  RTI::ObjectHandle objHand);
243 #endif
244 
257 #if !DtHLA_1516
258 
259  virtual void setRegionsForRegister(int numAttrs,
260  RTI::AttributeHandle* attrs, RTI::Region** regions);
261  virtual void setNoRegionsForRegister();
262 #endif
263 
264 #if DtHLA_1516
265 
266 
267 
268 
269 
270 
271  virtual bool reserveName(const std::wstring &theName, bool pushRti);
272 
275  virtual bool isNameReserved(const std::wstring &theName)const;
276 
277  #if DtHLA_1516_EVOLVED
278 
279  virtual void releaseObjectInstanceName( const std::wstring& name);
280 
286  virtual bool reserveNames (
287  std::set<std::wstring> const& objectNames, bool pushRti);
288 
289  #endif
290 #endif
291 
292 public:
293 #if DtHLA_1516
294 
295 
296  static double requestNameTickMinTime();
297  static void setRequestNameTickMinTime(double time);
298 
299  static double requestNameTickMaxTime();
300  static void setRequestNameTickMaxTime(double time);
301 
303  static int numberOfRequestNameTries();
304  static void setNumberOfRequestNameTries(int tries);
305 #endif
306 
308  virtual void removeAllObjects();
309 
310 protected:
311 
312 #if DtHLA_1516
313 
314 
315  static void nameReservationSuceededCb(const std::wstring &theName, void *theUserData);
316  static void nameReservationFailedCb(const std::wstring &theName, void *theUserData);
317 
318  #if DtHLA_1516_EVOLVED
319  static void nameSetReservationSucceededCb(const std::set<std::wstring>& nameSet,
320  void* userData );
321  static void nameSetReservationFailedCb(const std::set<std::wstring>& nameSet,
322  void* userData );
323  #endif
324 #endif
325 
326 protected:
327 
331 
333  DtHlaObjectManager(const DtHlaObjectManager& orig);
334 
336  DtHlaObjectManager& operator=( const DtHlaObjectManager& orig);
337 
340  virtual void objectProcessRemoveObject(DtHlaObject* hlaObj);
341 
344  virtual void objectProcessReflect(DtHlaObject* hlaObj,
345  const DtStateMsg &msg);
346 
350  virtual DtHlaObject* addKnownObject(
351 #if DtHLA_1516
352  RTI::ObjectInstanceHandle id,
353  RTI::ObjectClassHandle hand,
354  const std::wstring &name,
355  bool reflecting);
356 #else
357  RTI::ObjectHandle id,
358  RTI::ObjectClassHandle hand,
359  const char* name,
360  bool reflecting);
361 #endif
362 
365  virtual void removeKnownObject(
366  DtHlaObject* hlaObj);
367 
370  virtual DtList* discoverCbList(RTI::ObjectClassHandle handle);
371 
372 
373 #if DtHLA_1516
374 
375 
376  virtual void reservedNameSuceeded(const std::wstring &theName);
377 
379  virtual void reservedNameFailed(const std::wstring &theName);
380 
381 #if DtHLA_1516_EVOLVED
382 
383 
384  virtual void reservedNameSuceeded(const std::set<std::wstring>& theNames);
385 
387  virtual void reservedNameFailed(const std::set<std::wstring>& theNames);
388 #endif
389 
390 #endif
391 
392 protected:
393 #if DtHLA_1516
394  static double theRequestNameTickMinTime;
395  static double theRequestNameTickMaxTime;
396  static int theNumberOfRequestNameTries;
397 #endif
398 
399 protected:
400 
403  DtHashlist myDiscoverCbLists;
404 
405  DtHlaObjectFactory* myFactory;
406 
408  DtHlaObjectMap myObjectList;
409 
411  DtHashlist myObjectListByName;
412 
414  DtHlaObjectMap myRegObjectList;
415 
418  DtHlaObjectMap myDiscObjectList;
419 
420  DtExerciseConn* myExConn;
421 
422 #if DtHLA_1516
423 
424  std::set<std::wstring> myReservedObjectInstanceNameSet;
425 
428  bool myPendingNameReservationPassedFlag;
429  bool myPendingNameReservationFailedFlag;
430  int myReportedNameReservationCount;
431  std::wstring myPendingNameReservationName;
432  std::set<std::wstring> myPendingNameReservationNameSet;
433 
434 #if DtHLA_1516_EVOLVED
435  std::map<DtObjectId, RTI::FederateHandle> myRegisteringFederateMap;
436 #endif
437 #endif
438 
439 #if !DtHLA_1516
440 
441  RTI::AttributeHandle* myAttrsForDDMRegister;
442  RTI::Region** myRegionsForDDMRegister;
443 #endif
444  int myNumAttrsForDDMRegister;
445 };
446 
447 inline const DtHlaObjectMap& DtHlaObjectManager::allHlaObjects() const
448 {
449  return myObjectList;
450 }
451 
452 inline const DtHlaObjectMap& DtHlaObjectManager::registeredObjects() const
453 {
454  return myRegObjectList;
455 }
456 
457 inline const std::map<DtObjectId, DtHlaObject*>& DtHlaObjectManager::discoveredObjects() const
458 {
459  return myDiscObjectList;
460 }
461 
462 #endif
463 #endif
464 

Document ID: Generated on Thu Feb 22 04:26:36 EST 2018 from SVN revision 186468
Copyright © 2005-2016 VT MÄK. All Rights Reserved (www.mak.com)