VR-Link API Documentation for HLA 1.3
hRefObjList.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 hRefObjList_H_
8 #define hRefObjList_H_
9 
10 #if DtHLA
11 
12 
13 #include "objIdHashLst.h"
14 #include "refObjCbInfo.h"
15 #include "globalObjDes.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 
39 {
40 public:
41 
44  const DtDDMRegionSet* regionSetToUse = 0,
45  const DtString& updateRateTag = DtString("") );
46 
48  virtual ~DtReflectedObjectList();
49 
50 private:
51 
54 
56  DtReflectedObjectList& operator=(const DtReflectedObjectList& orig);
57 
58 public:
59 
61  virtual DtReflectedObject* lookupObj(
62 #if DtHLA_1516
63  RTI::ObjectInstanceHandle id);
64 #else
65  RTI::ObjectHandle id);
66 #endif
67 
69  virtual DtReflectedObject* lookupObj(
70  const DtGlobalObjectDesignator& objName);
71 
73  virtual DtReflectedObject* firstObj() const;
74  virtual DtReflectedObject* lastObj() const;
75 
77  virtual int count() const;
78 
80  virtual DtExerciseConn *exerciseConn() const;
81 
91  virtual void manageObjectClass(RTI::ObjectClassHandle handle);
92 
101  virtual bool removeObject(const DtObjectId& id);
102 
104  virtual void addObjectAdditionCallback(
105  DtReflectedObjectCallbackFunction cb, void* userData);
106  virtual void removeObjectAdditionCallback(
107  DtReflectedObjectCallbackFunction cb, void* userData);
108 
110  virtual void addObjectRemovalCallback(
111  DtReflectedObjectCallbackFunction cb, void* userData);
112  virtual void removeObjectRemovalCallback(
113  DtReflectedObjectCallbackFunction cb, void* userData);
114 
116  virtual void print();
117 
120  virtual void setTimeoutProcessing(bool onOff);
121 
125  virtual void setWaitListRefreshEnabled(bool on);
126 
128  virtual void setTimeoutInterval(DtTime time);
129  virtual DtTime timeoutInterval();
130 
132  virtual void setWaitlistRefreshPeriod(DtTime time);
133  virtual DtTime waitlistRefreshPeriod();
134 
137  virtual void setDiscoveryCondition(DtDiscoveryCondition fn, void* usr);
138 
141  virtual void clearDiscoveryCondition();
142 
144  virtual const DtDDMRegionSet& subscribedRegions();
145 
146 
147 public:
148 
152  static void setAutoSubscribeFlag(bool flag);
153  static bool autoSubscribeFlag();
154 
158  static void setRequestClassUpdateFlag(bool onOff);
159  static bool requestClassUpdateFlag();
160 
163  static void setRequestObjectUpdateFlag(bool onOff);
164  static bool requestObjectUpdateFlag();
165 
167  static void findDiscoveredObjectsCb(void* usr);
168 
169 
170 protected:
171 
174  virtual void processDiscoverObject(DtHlaObject* obj);
175 
178  virtual void processRemoveObject(DtHlaObject* obj);
179 
182  virtual void processTimedOutObjectReflect(const DtStateMsg& msg,
183  DtHlaObject* obj);
184 
188  virtual void doTimeouts();
189 
192  virtual void doRequestWaitListUpdates();
193 
196  virtual DtReflectedObject* newReflectedObject(DtHlaObject* obj) const = 0;
197 
200  virtual void removeAndDelete(DtReflectedObject* obj,
201  char* msg = NULL);
202 
208  virtual void objectAdded(DtReflectedObject* object);
209 
212  virtual bool shouldBeTimedOut(DtReflectedObject* object);
213 
217  virtual void timeOutObject(DtReflectedObject* object);
218 
221  virtual void unTimeOutObject(DtHlaObject* obj);
222 
225  virtual void addObjectClass(RTI::ObjectClassHandle handle);
226 
229  virtual void addObjectClassByName(const char* className);
230 
233  virtual void init(const DtList* handleList);
234 
237  void emptyLists();
238 
241  void emptyCallbackLists();
242 
244  virtual void processObjectAdditionCallbacks(
245  DtReflectedObject* object);
246  virtual void processObjectRemovalCallbacks(
247  DtReflectedObject* object);
248 
253  virtual void findAlreadyDiscoveredObjects();
254 
255  virtual void checkDiscoveryCondition(DtReflectedObject* refObj);
256 
259  virtual bool readyToAdd(DtReflectedObject* obj);
260 
262  virtual void addToObjectList(DtReflectedObject* refObj);
263 
265  virtual DtReflectedObject* lookupObjInWaitList(
266  const DtGlobalObjectDesignator& name);
267 
268  void unsubscribeRegions();
269 
270 #if DtHLA_1516_EVOLVED
271 
272 
273  const DtString& updateRateSubscriptionName() const;
274 #endif
275 
276 protected:
277 
280  static void discoverObjectCb(DtHlaObject* hlaObj, void* rel);
281 
284  static void removeObjectCb(DtHlaObject* hlaObj, void* rel);
285 
288  static void timedOutObjectReflectCb(const DtStateMsg& msg,
289  DtHlaObject* obj,
290  void* usr);
291 
293  static void doTimeoutsPostDrainCb(void* usr);
294 
296  static void doRequestWaitListUpdatesPostDrainCb(void* usr);
297 
299  static void postUpdateCb(DtReflectedObject* obj, void* usr);
300 
301 protected:
302 
308  std::vector<RTI::ObjectClassHandle> myHandleList;
320 
321 protected:
322 
323  static bool theAutoSubscribeFlag;
326 };
327 
329 {
330  return myObjectList.list()->first() ?
331  (DtReflectedObject* ) myObjectList.list()->first()->data() : NULL;
332 }
333 
335 {
336  return myObjectList.list()->last() ?
337  (DtReflectedObject* ) myObjectList.list()->last()->data() : NULL;
338 }
339 
341 {
342  myTimeoutInterval = time;
343 }
344 
346 {
347  return myTimeoutInterval;
348 }
349 
351 {
353 }
354 
356 {
358 }
359 
361 {
362  return myExConn;
363 }
364 
365 #endif
366 #endif
367 

Document ID: Generated on Wed Aug 14 15:35:11 EDT 2013 from SVN revision 130445
Copyright © 2005-2013 VT MÄK. All Rights Reserved (www.mak.com)