VR-Link API Documentation for DIS
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 
23 class DT_DLL_VL DtHlaObject;
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 
96 protected:
97 
100 
102  DtReflectedObjectList& operator=(const DtReflectedObjectList& orig);
103 
104 protected:
105 
107  virtual DtReflectedObject* newReflectedObj(const DtStateMsg& msg) = 0;
108 
110  virtual DtReflectedObject* processStateMessage(const DtStateMsg& msg);
111 
115  virtual void doTimeouts();
116 
119  virtual void removeAndDelete(DtReflectedObject* obj,
120  char* msg = NULL);
121 
126  virtual void objectAdded(DtReflectedObject* object);
127 
130  virtual bool shouldBeTimedOut(DtReflectedObject* object);
131 
135  void emptyLists();
136  void emptyCallbackLists();
137 
139  virtual void processObjectAdditionCallbacks(
140  DtReflectedObject* object);
141  virtual void processObjectRemovalCallbacks(
142  DtReflectedObject* object);
143 
145  virtual const DtBaseHashKey&
146  hashKeyFromStateMessage(const DtStateMsg* msg) = 0;
147 
149  virtual DtBaseHashKey*
150  hashKeyFromAttributeRecordSet(const DtAttributeRecordSet& recordSet);
151 
154  virtual int acceptPdu(const DtStateMsg&) const;
155 
158  virtual bool readyToAdd(DtReflectedObject* obj);
159 
160 protected:
161 
163  static void doTimeoutsPostDrainCb(void* usr);
164 
165  static void processAttributePduCb(DtAttributeInteraction *inter, void *usr);
166  virtual void processAttributePduCb(DtAttributeInteraction *inter);
167 protected:
168 
180  std::set<DtPduKind> myPduKindSet;
181 };
182 
183 #endif
184 

Document ID: Generated on Wed Oct 23 22:25:48 EDT 2013 from SVN revision 132765
Copyright © 2005-2013 VT MÄK. All Rights Reserved (www.mak.com)