VR-Link API Documentation for HLA Evolved
dRefObjList.h
Go to the documentation of this file.
1 /*********************************************************************
2 ** Copyright (c) 1992-2010 VT MAK
3 ** All rights reserved.
4 *********************************************************************/
5 
6 
9 
10 #ifndef DtDisReflectedObjectList_H_
11 #define DtDisReflectedObjectList_H_
12 
13 #if DtDIS
14 
15 
16 #include <vlutil/vlMachineTypes.h>
17 #include <vlutil/vlTime.h>
18 #include "refObjCbInfo.h"
19 #include <vlutil/vlHashlist.h>
20 
23 class DT_DLL_VL DtStateMsg;
26 
27 typedef bool (*DtDiscoveryCondition)(DtReflectedObject* refObj, void* usr);
28 
35 {
36 
37 public:
38 
41 
44  virtual ~DtReflectedObjectList();
45 
47  virtual DtReflectedObject* firstObj() const;
48  virtual DtReflectedObject* lastObj() const;
49 
51  virtual int count() const;
52 
54  virtual DtReflectedObject* lookupObj(const DtBaseHashKey& key) const;
55 
57  virtual DtExerciseConn* exerciseConn() const;
58 
60  virtual void addObjectAdditionCallback(
61  DtReflectedObjectCallbackFunction cb, void* userData);
62  virtual void removeObjectAdditionCallback(
63  DtReflectedObjectCallbackFunction cb, void* userData);
64 
66  virtual void addObjectRemovalCallback(
67  DtReflectedObjectCallbackFunction cb, void* userData);
68  virtual void removeObjectRemovalCallback(
69  DtReflectedObjectCallbackFunction cb, void* userData);
70 
72  virtual void print() const;
73 
76  virtual void setTimeoutProcessing(bool onOff);
77 
79  virtual void setTimeoutInterval(DtTime time);
80  virtual DtTime timeoutInterval();
81 
84  virtual void setDiscoveryCondition(DtDiscoveryCondition fn, void* usr);
85 
88  virtual void clearDiscoveryCondition();
89 
90 protected:
91 
94 
96  DtReflectedObjectList& operator=(const DtReflectedObjectList& orig);
97 
98 protected:
99 
101  virtual DtReflectedObject* newReflectedObj(const DtStateMsg& msg) = 0;
102 
104  virtual DtReflectedObject* processStateMessage(const DtStateMsg& msg);
105 
109  virtual void doTimeouts();
110 
113  virtual void removeAndDelete(DtReflectedObject* obj,
114  char* msg = NULL);
115 
120  virtual void objectAdded(DtReflectedObject* object);
121 
124  virtual bool shouldBeTimedOut(DtReflectedObject* object);
125 
129  void emptyLists();
130  void emptyCallbackLists();
131 
133  virtual void processObjectAdditionCallbacks(
134  DtReflectedObject* object);
135  virtual void processObjectRemovalCallbacks(
136  DtReflectedObject* object);
137 
139  virtual const DtBaseHashKey&
140  hashKeyFromStateMessage(const DtStateMsg* msg) = 0;
141 
144  virtual int acceptPdu(const DtStateMsg&) const;
145 
148  virtual bool readyToAdd(DtReflectedObject* obj);
149 
150 protected:
151 
153  static void doTimeoutsPostDrainCb(void* usr);
154 
155 protected:
156 
157  DtExerciseConn* myExConn;
158  DtIntrusiveList myObjectAddedCallbacks;
159  DtIntrusiveList myObjectRemovedCallbacks;
160  DtIntrusiveList myObjectList;
161  DtIntrusiveList myWaitList;
162  DtHashlist myObjectHashlist;
163  DtHashlist myWaitHashlist;
164  DtTime myTimeoutInterval;
165  bool myTimeoutProcessingFlag;
166  DtDiscoveryCondition myDiscoveryCondition;
167  void* myDiscoveryConditionParameter;
168 };
169 
170 #endif
171 #endif
172 

Document ID: Generated on Wed Aug 14 15:35:11 EDT 2013 from SVN revision 130445
Copyright © 2005-2013 VT MÄK. All Rights Reserved (www.mak.com)