VR-Link API Documentation for HLA 1.3
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
reflectedObjectListDIS.h
Go to the documentation of this file.
1 /*********************************************************************
2 ** Copyright (c) 1992-2013 VT MAK
3 ** All rights reserved.
4 *********************************************************************/
5 
6 
9 
10 #pragma once
11 
12 #if DtDIS
13 
14 
15 #include <vlutil/vlMachineTypes.h>
16 #include <vlutil/vlTime.h>
18 #include <vlutil/vlHashlist.h>
19 #include <vl/attributePdu.h>
20 #include <set>
21 
24 class DT_DLL_VL DtStateMsg;
29 
30 typedef bool (*DtDiscoveryCondition)(DtReflectedObject* refObj, void* usr);
31 typedef std::map<DtSimulationAddress, DtAttributeRecordSet*> DtRecordSetBySimulationAddressMap;
32 typedef std::map<DtObjectId, DtRecordSetBySimulationAddressMap> DtAttributesByObjectIdMap;
39 {
40 
41 public:
42 
45 
48  virtual ~DtReflectedObjectList();
49 
51  virtual void initializeAttributePduKindsOfInterest(const std::set<DtPduKind>& pduKinds);
52 
54  virtual DtReflectedObject* firstObj() const;
55  virtual DtReflectedObject* lastObj() const;
56 
58  virtual int count() const;
59 
61  virtual DtReflectedObject* lookupObj(const DtBaseHashKey& key) const;
62 
64  virtual DtExerciseConn* exerciseConn() const;
65 
67  virtual void addObjectAdditionCallback(
68  DtReflectedObjectCallbackFunction cb, void* userData);
69  virtual void removeObjectAdditionCallback(
70  DtReflectedObjectCallbackFunction cb, void* userData);
71 
73  virtual void addObjectRemovalCallback(
74  DtReflectedObjectCallbackFunction cb, void* userData);
75  virtual void removeObjectRemovalCallback(
76  DtReflectedObjectCallbackFunction cb, void* userData);
77 
79  virtual void print() const;
80 
83  virtual void setTimeoutProcessing(bool onOff);
84 
86  virtual void setTimeoutInterval(DtTime time);
87  virtual DtTime timeoutInterval();
88 
91  virtual void setDiscoveryCondition(DtDiscoveryCondition fn, void* usr);
92 
95  virtual void clearDiscoveryCondition();
96 
99  virtual void removeAndDelete(DtReflectedObject* obj, char* msg = NULL);
100 
103  virtual void removeObject(DtReflectedObject* obj);
104 
105 private:
106 
109 
111  DtReflectedObjectList& operator=(const DtReflectedObjectList& orig);
112 
113 protected:
114 
116  virtual DtReflectedObject* newReflectedObj(const DtStateMsg& msg) = 0;
117 
119  virtual DtReflectedObject* processStateMessage(const DtStateMsg& msg);
120 
124  virtual void doTimeouts();
125 
130  virtual void objectAdded(DtReflectedObject* object);
131 
134  virtual bool shouldBeTimedOut(DtReflectedObject* object);
135 
139  void emptyLists();
140  void emptyCallbackLists();
141 
143  virtual void processObjectAdditionCallbacks(
144  DtReflectedObject* object);
145  virtual void processObjectRemovalCallbacks(
146  DtReflectedObject* object);
147 
149  virtual const DtBaseHashKey&
150  hashKeyFromStateMessage(const DtStateMsg* msg) = 0;
151 
153  virtual DtBaseHashKey*
154  hashKeyFromAttributeRecordSet(const DtAttributeRecordSet& recordSet);
155 
158  virtual int acceptPdu(const DtStateMsg&) const;
159 
162  virtual bool readyToAdd(DtReflectedObject* obj);
163 
164 protected:
165 
167  static void doTimeoutsPostDrainCb(void* usr);
168 
169  static void processAttributePduCb(DtAttributeInteraction *inter, void *usr);
170  virtual void processAttributePduCb(DtAttributeInteraction *inter);
171  virtual void processAttributePduRecordSet(const DtAttributeRecordSet& recordSet, const DtSimulationAddress& simAddr, DtReflectedObject* obj = 0);
172 
173  static void processAttributePduWaitListCb(DtReflectedObject* obj, void* userData);
174  virtual void processAttributePduWaitListCb(DtReflectedObject* obj);
175  virtual void deleteRecordSetBySimulationAddressMap(DtRecordSetBySimulationAddressMap& recordSetMap, const DtSimulationAddress& simAddr = DtSimulationAddress()) const;
176 
177 protected:
178 
179  DtExerciseConn* myExConn;
180  DtIntrusiveList myObjectAddedCallbacks;
181  DtIntrusiveList myObjectRemovedCallbacks;
182  DtIntrusiveList myObjectList;
183  DtIntrusiveList myWaitList;
184  DtHashlist myObjectHashlist;
185  DtHashlist myWaitHashlist;
186  DtAttributesByObjectIdMap myAttributeWaitHashlist;
187  DtTime myTimeoutInterval;
188  bool myTimeoutProcessingFlag;
189  DtDiscoveryCondition myDiscoveryCondition;
190  void* myDiscoveryConditionParameter;
191  std::set<DtPduKind> myPduKindSet;
192 };
193 
194 #endif
195 

Document ID: Generated on Mon Apr 8 04:49:21 EDT 2019 from SVN revision 197403
Copyright © 2005-2016 VT MÄK. All Rights Reserved (www.mak.com)