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 
38 {
39 
40 public:
41 
44 
47  virtual ~DtReflectedObjectList();
48 
50  virtual void initializeAttributePduKindsOfInterest(const std::set<DtPduKind>& pduKinds);
51 
53  virtual DtReflectedObject* firstObj() const;
54  virtual DtReflectedObject* lastObj() const;
55 
57  virtual int count() const;
58 
60  virtual DtReflectedObject* lookupObj(const DtBaseHashKey& key) const;
61 
63  virtual DtExerciseConn* exerciseConn() const;
64 
66  virtual void addObjectAdditionCallback(
67  DtReflectedObjectCallbackFunction cb, void* userData);
68  virtual void removeObjectAdditionCallback(
69  DtReflectedObjectCallbackFunction cb, void* userData);
70 
72  virtual void addObjectRemovalCallback(
73  DtReflectedObjectCallbackFunction cb, void* userData);
74  virtual void removeObjectRemovalCallback(
75  DtReflectedObjectCallbackFunction cb, void* userData);
76 
78  virtual void print() const;
79 
82  virtual void setTimeoutProcessing(bool onOff);
83 
85  virtual void setTimeoutInterval(DtTime time);
86  virtual DtTime timeoutInterval();
87 
90  virtual void setDiscoveryCondition(DtDiscoveryCondition fn, void* usr);
91 
94  virtual void clearDiscoveryCondition();
95 
98  virtual void removeAndDelete(DtReflectedObject* obj, char* msg = NULL);
99 
102  virtual void removeObject(DtReflectedObject* obj);
103 
104 private:
105 
108 
110  DtReflectedObjectList& operator=(const DtReflectedObjectList& orig);
111 
112 protected:
113 
115  virtual DtReflectedObject* newReflectedObj(const DtStateMsg& msg) = 0;
116 
118  virtual DtReflectedObject* processStateMessage(const DtStateMsg& msg);
119 
123  virtual void doTimeouts();
124 
129  virtual void objectAdded(DtReflectedObject* object);
130 
133  virtual bool shouldBeTimedOut(DtReflectedObject* object);
134 
138  void emptyLists();
139  void emptyCallbackLists();
140 
142  virtual void processObjectAdditionCallbacks(
143  DtReflectedObject* object);
144  virtual void processObjectRemovalCallbacks(
145  DtReflectedObject* object);
146 
148  virtual const DtBaseHashKey&
149  hashKeyFromStateMessage(const DtStateMsg* msg) = 0;
150 
152  virtual DtBaseHashKey*
153  hashKeyFromAttributeRecordSet(const DtAttributeRecordSet& recordSet);
154 
157  virtual int acceptPdu(const DtStateMsg&) const;
158 
161  virtual bool readyToAdd(DtReflectedObject* obj);
162 
163 protected:
164 
166  static void doTimeoutsPostDrainCb(void* usr);
167 
168  static void processAttributePduCb(DtAttributeInteraction *inter, void *usr);
169  virtual void processAttributePduCb(DtAttributeInteraction *inter);
170 protected:
171 
172  DtExerciseConn* myExConn;
173  DtIntrusiveList myObjectAddedCallbacks;
174  DtIntrusiveList myObjectRemovedCallbacks;
175  DtIntrusiveList myObjectList;
176  DtIntrusiveList myWaitList;
177  DtHashlist myObjectHashlist;
178  DtHashlist myWaitHashlist;
179  DtTime myTimeoutInterval;
180  bool myTimeoutProcessingFlag;
181  DtDiscoveryCondition myDiscoveryCondition;
182  void* myDiscoveryConditionParameter;
183  std::set<DtPduKind> myPduKindSet;
184 };
185 
186 #endif
187 

Document ID: Generated on Thu Feb 22 04:26:36 EST 2018 from SVN revision 186468
Copyright © 2005-2016 VT MÄK. All Rights Reserved (www.mak.com)