VR-Link API Documentation for HLA 1.3
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
reflectedObjectListHLA.h
Go to the documentation of this file.
1 /****************************************************************************
2  * Copyright (c) 2014 VT MAK
3  * All rights reserved.
4  ****************************************************************************/
5 
9 
10 #pragma once
11 
12 #if DtHLA
13 
14 
17 #include <vl/objectIdHashlist.h>
18 #include <vl/region.h>
19 #include <vector>
20 
21 class DtStateMsg;
22 class DtHlaObject;
23 class DtExerciseConn;
24 class DtReflectedObject;
25 
26 typedef bool (*DtDiscoveryCondition)(DtReflectedObject* refObj, void* usr);
27 typedef std::map<DtObjectId, DtReflectedObject*> DtRefHlaObjectMap;
28 
37 {
38 public:
39 
42  const DtDDMRegionSet* regionSetToUse = 0,
43  const DtString& updateRateTag = DtString("") );
44 
46  virtual ~DtReflectedObjectList();
47 
48 private:
49 
52 
54  DtReflectedObjectList& operator=(const DtReflectedObjectList& orig);
55 
56 public:
57 
59  virtual DtReflectedObject* lookupObj(
60 #if DtHLA_1516
61  RTI::ObjectInstanceHandle id);
62 #else
63  RTI::ObjectHandle id);
64 #endif
65 
67  virtual DtReflectedObject* lookupObj(
68  const DtGlobalObjectDesignator& objName);
69 
71  virtual DtReflectedObject* firstObj() const;
72  virtual DtReflectedObject* lastObj() const;
73 
75  virtual int count() const;
76 
78  virtual DtExerciseConn *exerciseConn() const;
79 
89  virtual void manageObjectClass(RTI::ObjectClassHandle handle);
90 
99  virtual bool removeObject(const DtObjectId& id);
100 
102  virtual void addObjectAdditionCallback(
103  DtReflectedObjectCallbackFunction cb, void* userData);
104  virtual void removeObjectAdditionCallback(
105  DtReflectedObjectCallbackFunction cb, void* userData);
106 
108  virtual void addObjectRemovalCallback(
109  DtReflectedObjectCallbackFunction cb, void* userData);
110  virtual void removeObjectRemovalCallback(
111  DtReflectedObjectCallbackFunction cb, void* userData);
112 
114  virtual void print();
115 
118  virtual void setTimeoutProcessing(bool onOff);
119 
121  virtual bool isTimeoutProcessing() const;
122 
126  virtual void setWaitListRefreshEnabled(bool on);
127 
129  virtual void setTimeoutInterval(DtTime time);
130  virtual DtTime timeoutInterval();
131 
133  virtual void setWaitlistRefreshPeriod(DtTime time);
134  virtual DtTime waitlistRefreshPeriod();
135 
138  virtual void setDiscoveryCondition(DtDiscoveryCondition fn, void* usr);
139 
142  virtual void clearDiscoveryCondition();
143 
145  virtual const DtDDMRegionSet& subscribedRegions();
146 
147 
148 public:
149 
153  static void setAutoSubscribeFlag(bool flag);
154  static bool autoSubscribeFlag();
155 
159  static void setRequestClassUpdateFlag(bool onOff);
160  static bool requestClassUpdateFlag();
161 
164  static void setRequestObjectUpdateFlag(bool onOff);
165  static bool requestObjectUpdateFlag();
166 
168  static void findDiscoveredObjectsCb(void* usr);
169 
170 
171 protected:
172 
175  virtual void processDiscoverObject(DtHlaObject* obj);
176 
179  virtual void processRemoveObject(DtHlaObject* obj);
180 
183  virtual void processTimedOutObjectReflect(const DtStateMsg& msg,
184  DtHlaObject* obj);
185 
189  virtual void doTimeouts();
190 
193  virtual void doRequestWaitListUpdates();
194 
197  virtual DtReflectedObject* newReflectedObject(DtHlaObject* obj) const = 0;
198 
201  virtual void removeAndDelete(DtReflectedObject* obj,
202  char* msg = NULL);
203 
209  virtual void objectAdded(DtReflectedObject* object);
210 
213  virtual bool shouldBeTimedOut(DtReflectedObject* object);
214 
218  virtual void timeOutObject(DtReflectedObject* object);
219 
222  virtual void unTimeOutObject(DtHlaObject* obj);
223 
226  virtual void addObjectClass(RTI::ObjectClassHandle handle);
227 
230  virtual void addObjectClassByName(const char* className);
231 
234  virtual void init(const DtList* handleList);
235 
238  void emptyLists();
239 
242  void emptyCallbackLists();
243 
245  virtual void processObjectAdditionCallbacks(
246  DtReflectedObject* object);
247  virtual void processObjectRemovalCallbacks(
248  DtReflectedObject* object);
249 
254  virtual void findAlreadyDiscoveredObjects();
255 
256  virtual void checkDiscoveryCondition(DtReflectedObject* refObj);
257 
260  virtual bool readyToAdd(DtReflectedObject* obj);
261 
263  virtual void addToObjectList(DtReflectedObject* refObj);
264 
266  virtual DtReflectedObject* lookupObjInWaitList(
267 #if DtHLA_1516
268  RTI::ObjectInstanceHandle id);
269 #else
270  RTI::ObjectHandle id);
271 #endif
272 
274  virtual DtReflectedObject* lookupObjInWaitList(
275  const DtGlobalObjectDesignator& name);
276 
277  void unsubscribeRegions();
278 
279 #if DtHLA_1516_EVOLVED
280 
281 
282  const DtString& updateRateSubscriptionName() const;
283 #endif
284 
285 protected:
286 
289  static void discoverObjectCb(DtHlaObject* hlaObj, void* rel);
290 
293  static void removeObjectCb(DtHlaObject* hlaObj, void* rel);
294 
297  static void timedOutObjectReflectCb(const DtStateMsg& msg,
298  DtHlaObject* obj,
299  void* usr);
300 
302  static void doTimeoutsPostDrainCb(void* usr);
303 
305  static void doRequestWaitListUpdatesPostDrainCb(void* usr);
306 
308  static void postUpdateCb(DtReflectedObject* obj, void* usr);
309 
310 protected:
311 
317  std::vector<RTI::ObjectClassHandle> myHandleList;
329 
330 protected:
331 
332  static bool theAutoSubscribeFlag;
335 };
336 
338 {
339  return myObjectList.size() > 0 ?
340  (DtReflectedObject* ) myObjectList.begin()->second : NULL;
341 }
342 
344 {
345  return myObjectList.size() > 0 ?
346  (DtReflectedObject* ) myObjectList.rend()->second : NULL;
347 }
348 
350 {
351  myTimeoutInterval = time;
352 }
353 
355 {
356  return myTimeoutInterval;
357 }
358 
360 {
362 }
363 
365 {
367 }
368 
370 {
371  return myExConn;
372 }
373 
374 #endif

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)