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  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
class DtReflectedObjectList
Definition: reflectedObjectListHLA.h:36
DtHashList myObjectListByName
Definition: reflectedObjectListHLA.h:314
std::map< DtObjectId, DtReflectedObject * > DtRefHlaObjectMap
Definition: reflectedObjectListHLA.h:27
Instances of DtExerciseConn are used to provide an application&#39;s interface or connection to the netwo...
Definition: exerciseConnHLA.h:58
#define DT_DLL_VL
Definition: vlMachineTypes.h:108
DtTime myWaitlistTime
Definition: reflectedObjectListHLA.h:325
virtual void setTimeoutInterval(DtTime time)
Set/Get the remote object timeout period.
Definition: reflectedObjectListHLA.h:349
DtList myTimedOutObjectList
Definition: reflectedObjectListHLA.h:316
DtTime myTimeoutInterval
Definition: reflectedObjectListHLA.h:320
static bool theRequestClassUpdateFlag
Definition: reflectedObjectListHLA.h:333
DtIntrusiveList myObjectRemovedCallbacks
Definition: reflectedObjectListHLA.h:319
This file contains typedefs used to represent objects in a protocol neutral way.
std::set< DtDDMRegionSP > DtDDMRegionSet
Definition: region13.h:34
virtual DtReflectedObject * firstObj() const
Get the first/last object in the list.
Definition: reflectedObjectListHLA.h:337
DtRefHlaObjectMap myWaitList
Definition: reflectedObjectListHLA.h:315
An intrusive list is a list that assumes that the elements that you add are pointers to instances of ...
Definition: vlList.h:196
Instances of DtHlaObject are used to represent HLA objects which are communicated across the network...
Definition: hlaObject.h:56
DtList is deprecated, please use std::list&lt;T&gt;.
Definition: vlList.h:71
bool(* DtDiscoveryCondition)(DtReflectedObject *refObj, void *usr)
Definition: reflectedObjectListHLA.h:26
virtual void setWaitlistRefreshPeriod(DtTime time)
Set/Get the wait list refresh period.
Definition: reflectedObjectListHLA.h:359
class DtReflectedObject:
Definition: reflectedObjectHLA.h:36
DtDDMRegionSet mySubscribedRegions
Definition: reflectedObjectListHLA.h:327
void * myDiscoveryConditionParameter
Definition: reflectedObjectListHLA.h:324
DtDiscoveryCondition myDiscoveryCondition
Definition: reflectedObjectListHLA.h:323
bool myWaitListRequestUpdateFlag
Definition: reflectedObjectListHLA.h:322
static bool theRequestObjectUpdateFlag
Definition: reflectedObjectListHLA.h:334
DtString myUpdateRateTag
Definition: reflectedObjectListHLA.h:328
DtHashlist is deprecated and provided for backwards compatibility only.
Definition: vlHashlist.h:69
DtTime myWaitlistRefreshPeriod
Definition: reflectedObjectListHLA.h:326
DtObjectId instances are used to represent RTI::ObjectInstances in VR-Link.
Definition: objectId.h:38
DtIntrusiveList myObjectAddedCallbacks
Definition: reflectedObjectListHLA.h:318
virtual DtExerciseConn * exerciseConn() const
Get my exerciseConn.
Definition: reflectedObjectListHLA.h:369
void(* DtReflectedObjectCallbackFunction)(DtReflectedObject *obj, void *userData)
Callback function that takes a DtReflectedObject and user data.
Definition: reflectedObjectCallbackInfo.h:19
virtual DtReflectedObject * lastObj() const
Definition: reflectedObjectListHLA.h:343
virtual DtTime timeoutInterval()
Definition: reflectedObjectListHLA.h:354
Instances of DtString are used to represent strings.
Definition: vlString.h:29
DtRefHlaObjectMap myObjectList
Definition: reflectedObjectListHLA.h:313
class DtStateMsg:
Definition: stateMsgHLA.h:32
virtual DtTime waitlistRefreshPeriod()
Definition: reflectedObjectListHLA.h:364
bool myTimeoutProcessingFlag
Definition: reflectedObjectListHLA.h:321
DtExerciseConn * myExConn
Definition: reflectedObjectListHLA.h:312
static bool theAutoSubscribeFlag
Definition: reflectedObjectListHLA.h:332
std::vector< RTI::ObjectClassHandle > myHandleList
Definition: reflectedObjectListHLA.h:317

Document ID: Generated on Tue Feb 2 21:02:17 EST 2021 from SVN revision 223668
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)