VR-Link API Documentation for HLA Evolved
 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) 1992-2010 VT MAK
3 ** All rights reserved.
4 *********************************************************************/
5 
6 
7 #ifndef reflectedObjectListHLA_H_
8 #define reflectedObjectListHLA_H_
9 
10 #if DtHLA
11 
12 
13 #include "objectIdHashlist.h"
15 #include "globalObjectDesignator.h"
16 #include "region.h"
17 
18 #include <vector>
19 
24 
25 class DtExerciseConn;
26 class DtHlaObject;
27 class DtStateMsg;
28 class DtReflectedObject;
29 
30 typedef bool (*DtDiscoveryCondition)(DtReflectedObject* refObj, void* usr);
31 typedef std::map<DtObjectId, DtReflectedObject*> DtRefHlaObjectMap;
32 
40 {
41 public:
42 
45  const DtDDMRegionSet* regionSetToUse = 0,
46  const DtString& updateRateTag = DtString("") );
47 
49  virtual ~DtReflectedObjectList();
50 
51 private:
52 
55 
57  DtReflectedObjectList& operator=(const DtReflectedObjectList& orig);
58 
59 public:
60 
62  virtual DtReflectedObject* lookupObj(
63 #if DtHLA_1516
64  RTI::ObjectInstanceHandle id);
65 #else
66  RTI::ObjectHandle id);
67 #endif
68 
70  virtual DtReflectedObject* lookupObj(
71  const DtGlobalObjectDesignator& objName);
72 
74  virtual DtReflectedObject* firstObj() const;
75  virtual DtReflectedObject* lastObj() const;
76 
78  virtual int count() const;
79 
81  virtual DtExerciseConn *exerciseConn() const;
82 
92  virtual void manageObjectClass(RTI::ObjectClassHandle handle);
93 
102  virtual bool removeObject(const DtObjectId& id);
103 
105  virtual void addObjectAdditionCallback(
106  DtReflectedObjectCallbackFunction cb, void* userData);
107  virtual void removeObjectAdditionCallback(
108  DtReflectedObjectCallbackFunction cb, void* userData);
109 
111  virtual void addObjectRemovalCallback(
112  DtReflectedObjectCallbackFunction cb, void* userData);
113  virtual void removeObjectRemovalCallback(
114  DtReflectedObjectCallbackFunction cb, void* userData);
115 
117  virtual void print();
118 
121  virtual void setTimeoutProcessing(bool onOff);
122 
124  virtual bool isTimeoutProcessing() const;
125 
129  virtual void setWaitListRefreshEnabled(bool on);
130 
132  virtual void setTimeoutInterval(DtTime time);
133  virtual DtTime timeoutInterval();
134 
136  virtual void setWaitlistRefreshPeriod(DtTime time);
137  virtual DtTime waitlistRefreshPeriod();
138 
141  virtual void setDiscoveryCondition(DtDiscoveryCondition fn, void* usr);
142 
145  virtual void clearDiscoveryCondition();
146 
148  virtual const DtDDMRegionSet& subscribedRegions();
149 
150 
151 public:
152 
156  static void setAutoSubscribeFlag(bool flag);
157  static bool autoSubscribeFlag();
158 
162  static void setRequestClassUpdateFlag(bool onOff);
163  static bool requestClassUpdateFlag();
164 
167  static void setRequestObjectUpdateFlag(bool onOff);
168  static bool requestObjectUpdateFlag();
169 
171  static void findDiscoveredObjectsCb(void* usr);
172 
173 
174 protected:
175 
178  virtual void processDiscoverObject(DtHlaObject* obj);
179 
182  virtual void processRemoveObject(DtHlaObject* obj);
183 
186  virtual void processTimedOutObjectReflect(const DtStateMsg& msg,
187  DtHlaObject* obj);
188 
192  virtual void doTimeouts();
193 
196  virtual void doRequestWaitListUpdates();
197 
200  virtual DtReflectedObject* newReflectedObject(DtHlaObject* obj) const = 0;
201 
204  virtual void removeAndDelete(DtReflectedObject* obj,
205  char* msg = NULL);
206 
212  virtual void objectAdded(DtReflectedObject* object);
213 
216  virtual bool shouldBeTimedOut(DtReflectedObject* object);
217 
221  virtual void timeOutObject(DtReflectedObject* object);
222 
225  virtual void unTimeOutObject(DtHlaObject* obj);
226 
229  virtual void addObjectClass(RTI::ObjectClassHandle handle);
230 
233  virtual void addObjectClassByName(const char* className);
234 
237  virtual void init(const DtList* handleList);
238 
241  void emptyLists();
242 
245  void emptyCallbackLists();
246 
248  virtual void processObjectAdditionCallbacks(
249  DtReflectedObject* object);
250  virtual void processObjectRemovalCallbacks(
251  DtReflectedObject* object);
252 
257  virtual void findAlreadyDiscoveredObjects();
258 
259  virtual void checkDiscoveryCondition(DtReflectedObject* refObj);
260 
263  virtual bool readyToAdd(DtReflectedObject* obj);
264 
266  virtual void addToObjectList(DtReflectedObject* refObj);
267 
269  virtual DtReflectedObject* lookupObjInWaitList(
270 #if DtHLA_1516
271  RTI::ObjectInstanceHandle id);
272 #else
273  RTI::ObjectHandle id);
274 #endif
275 
277  virtual DtReflectedObject* lookupObjInWaitList(
278  const DtGlobalObjectDesignator& name);
279 
280  void unsubscribeRegions();
281 
282 #if DtHLA_1516_EVOLVED
283 
284 
285  const DtString& updateRateSubscriptionName() const;
286 #endif
287 
288 protected:
289 
292  static void discoverObjectCb(DtHlaObject* hlaObj, void* rel);
293 
296  static void removeObjectCb(DtHlaObject* hlaObj, void* rel);
297 
300  static void timedOutObjectReflectCb(const DtStateMsg& msg,
301  DtHlaObject* obj,
302  void* usr);
303 
305  static void doTimeoutsPostDrainCb(void* usr);
306 
308  static void doRequestWaitListUpdatesPostDrainCb(void* usr);
309 
311  static void postUpdateCb(DtReflectedObject* obj, void* usr);
312 
313 protected:
314 
320  std::vector<RTI::ObjectClassHandle> myHandleList;
332 
333 protected:
334 
335  static bool theAutoSubscribeFlag;
338 };
339 
341 {
342  return myObjectList.size() > 0 ?
343  (DtReflectedObject* ) myObjectList.begin()->second : NULL;
344 }
345 
347 {
348  return myObjectList.size() > 0 ?
349  (DtReflectedObject* ) myObjectList.rend()->second : NULL;
350 }
351 
353 {
354  myTimeoutInterval = time;
355 }
356 
358 {
359  return myTimeoutInterval;
360 }
361 
363 {
365 }
366 
368 {
370 }
371 
373 {
374  return myExConn;
375 }
376 
377 #endif
378 #endif
379 

Document ID: Generated on Wed Jan 7 13:31:29 EST 2015 from SVN revision 149162
Copyright © 2005-2014 VT MÄK. All Rights Reserved (www.mak.com)