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 
44  DtReflectedObjectList(DtExerciseConn* exConn, int numBucketsPrimeNumber = 503); // 10007 default for hashtable is 127 upped to 503
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  virtual DtTime timeoutCheckInterval() const { return myTimeoutCheckInterval; }
106  virtual void setTimeoutCheckInterval(DtTime interval) { myTimeoutCheckInterval = interval; }
107 
108 private:
109 
112 
114  DtReflectedObjectList& operator=(const DtReflectedObjectList& orig);
115 
116 protected:
117 
119  virtual DtReflectedObject* newReflectedObj(const DtStateMsg& msg) = 0;
120 
122  virtual DtReflectedObject* processStateMessage(const DtStateMsg& msg);
123 
127  virtual void doTimeouts();
128 
133  virtual void objectAdded(DtReflectedObject* object);
134 
137  virtual bool shouldBeTimedOut(DtReflectedObject* object);
138 
142  void emptyLists();
143  void emptyCallbackLists();
144 
146  virtual void processObjectAdditionCallbacks(
147  DtReflectedObject* object);
148  virtual void processObjectRemovalCallbacks(
149  DtReflectedObject* object);
150 
152  virtual const DtBaseHashKey&
153  hashKeyFromStateMessage(const DtStateMsg* msg) = 0;
154 
156  virtual DtBaseHashKey*
157  hashKeyFromAttributeRecordSet(const DtAttributeRecordSet& recordSet);
158 
161  virtual int acceptPdu(const DtStateMsg&) const;
162 
165  virtual bool readyToAdd(DtReflectedObject* obj);
166 
167 protected:
168 
170  static void doTimeoutsPostDrainCb(void* usr);
171 
172  static void processAttributePduCb(DtAttributeInteraction *inter, void *usr);
173  virtual void processAttributePduCb(DtAttributeInteraction *inter);
174  virtual void processAttributePduRecordSet(const DtAttributeRecordSet& recordSet, const DtSimulationAddress& simAddr, DtReflectedObject* obj = 0);
175 
176  static void processAttributePduWaitListCb(DtReflectedObject* obj, void* userData);
177  virtual void processAttributePduWaitListCb(DtReflectedObject* obj);
178  virtual void deleteRecordSetBySimulationAddressMap(DtRecordSetBySimulationAddressMap& recordSetMap, const DtSimulationAddress& simAddr = DtSimulationAddress()) const;
179 
180 protected:
181 
182  DtExerciseConn* myExConn;
183  DtIntrusiveList myObjectAddedCallbacks;
184  DtIntrusiveList myObjectRemovedCallbacks;
185  DtIntrusiveList myObjectList;
186  DtIntrusiveList myWaitList;
187  DtHashlist myObjectHashlist;
188  DtHashlist myWaitHashlist;
189  DtAttributesByObjectIdMap myAttributeWaitHashlist;
190  DtTime myTimeoutInterval;
191  DtTime myNextTimeoutCheck;
192  DtTime myTimeoutCheckInterval;
193  bool myTimeoutProcessingFlag;
194  DtDiscoveryCondition myDiscoveryCondition;
195  void* myDiscoveryConditionParameter;
196  std::set<DtPduKind> myPduKindSet;
197 };
198 
199 #endif
200 
Instances of DtEntityIdentifierHashKey are hash keys made from DtEntityIdentifiers.
Definition: entityIdentifierHashKey.h:21
class DtReflectedObjectList
Definition: reflectedObjectListHLA.h:36
A DtSimulationAddress is used in DIS to identify a particular simulator.
Definition: simulationAddress.h:29
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
DtBaseHashKey is an abstract base class for hash keys.
Definition: vlHashKeys.h:39
This file contains the declaration of DtClock and DtTime.
An intrusive list is a list that assumes that the elements that you add are pointers to instances of ...
Definition: vlList.h:196
Defines DtHashlist and several helper functions.
Instances of DtHlaObject are used to represent HLA objects which are communicated across the network...
Definition: hlaObject.h:56
bool(* DtDiscoveryCondition)(DtReflectedObject *refObj, void *usr)
Definition: reflectedObjectListHLA.h:26
class DtReflectedObject:
Definition: reflectedObjectHLA.h:36
Definition: attributeRecordSet.h:11
DtHashlist is deprecated and provided for backwards compatibility only.
Definition: vlHashlist.h:69
class DT_DLL_VLPROTIND DtSimulationAddress
Definition: netStructs.h:24
void(* DtReflectedObjectCallbackFunction)(DtReflectedObject *obj, void *userData)
Callback function that takes a DtReflectedObject and user data.
Definition: reflectedObjectCallbackInfo.h:19
class DtStateMsg:
Definition: stateMsgHLA.h:32
This file contains typedefs for machine dependant types.
This file declares DtAttributePdu and DtAttributeInteraction (DIS ONLY)

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)