MAK Data Logger API Documentation for DIS
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
messageState.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 1992-2010 VT MAK
3 ** All rights reserved.
4 ******************************************************************************/
5 
8 
9 #ifndef messageState_H_
10 #define messageState_H_
11 
12 #include <lgrCore/lgrCore.h>
13 #include <lgrUtil/observeEvent.h>
14 
15 #include <vlutil/vlMachineTypes.h>
16 #include <vlutil/vlNetTypes.h>
17 
18 #include <list>
19 #include <map>
20 
21 namespace MAKLogger
22 {
23  class DtMessageBuffer;
24  class DtStateObject;
25  class DtPacket;
26  class DtMessageIOInfo;
27  class DtAbsoluteTime;
28  class DtLgrSimManager;
29 
35  {
36  public:
37 
39  {
42  ProcessFirstCheckpoint
43  };
44 
46  {
49  DrainInteractions
50  };
51 
52  // Used to create linked checkpoints
54  {
56  DtNetU64 nextCheckpoint;
57  DtNetU64 numCheckpoints;
58  };
59 
61  typedef std::list<DtPacket*> DtPacketList;
62 
65  virtual ~DtMessageState();
66 
68  virtual void startDiff();
69 
71  virtual void generateDiff(DtMessageBuffer& stateBuffer, const DtAbsoluteTime& time,
72  InteractionProcessing processInteractions);
73 
75  virtual void endDiff();
76 
85  virtual void updateState(DtMessageBuffer& stateBuffer);
86 
87 
97  virtual void updateState(DtPacket* packet);
98 
100  virtual void postUpdate();
101 
112  virtual void setState(DtMessageBuffer& completeStateBuffer,const DtAbsoluteTime& time, DtMessageBuffer* diffBuffer=0);
113 
119  virtual void clearState(DtMessageBuffer& emptyBuffer,
120  const DtAbsoluteTime& time);
121 
126  virtual void getState(DtMessageBuffer& emptyBuffer,const DtAbsoluteTime& time, bool modifyMessages=true);
127 
129  virtual void getStateObjects(DtMessageBuffer& buffer, const DtAbsoluteTime& time, bool modifyMessages=true);
130 
133  virtual void getStateInteractions(DtMessageBuffer& buffer, const DtAbsoluteTime& time, bool modifyMessages=true);
134 
136  virtual void activate();
137 
139  virtual void deactivate();
140 
142 
143 
144  virtual DtStateObject* findObject(DtU64 uniqueId);
145  virtual const DtStateObject* findObject(DtU64 uniqueId) const;
147 
149 
150 
151  virtual DtStateObject* findObjectByName(const DtString& name);
152  virtual const DtStateObject* findObjectByName(const DtString& name) const;
154 
156 
157  virtual void setLinkCheckpoints(bool enableLinking);
158  virtual bool linkCheckpointsEnabled() const;
160 
162 
163 
165  virtual void setInputInfo(const DtMessageIOInfo* info);
166 
168  virtual void setOutputInfo(const DtMessageIOInfo* info);
169 
171  virtual void decodeCheckpoint(const DtPacket& packet,DtMessageBuffer& buffer, bool includeInteractions) = 0;
172 
174  virtual void decodeLinkedCheckpoint(const DtPacket& packet,DtMessageBuffer& buffer, bool includeInteractions) = 0;
175 
177  virtual DtPacket* generateCheckpoint(const DtAbsoluteTime& timestamp,bool includeInteractions) = 0;
178 
180 
182  virtual const std::list<DtStateObject*>& stateObjectList() const;
183 
185 
186 
187  virtual DtObserveEvent<DtMessageState>* inputChangedEvent();
188  virtual DtObserveEvent<DtMessageState>* outputChangedEvent();
189  virtual DtObserveEvent<DtMessageState>* stateModifiedEvent();
190  virtual DtObserveEvent<DtMessageState>* stateActivatedEvent();
191  virtual DtObserveEvent<DtMessageState>* stateDeactivatedEvent();
192  virtual DtObserveEvent<DtMessageState>* endDiffEvent();
193  virtual DtObserveEvent<DtStateObject>* objectAddedEvent();
194  virtual DtObserveEvent<DtStateObject>* objectToBeRemovedEvent();
195  virtual DtObserveEvent<DtStateObject>* objectUpdatedEvent();
197 
199  virtual void clearState();
200 
202  virtual CheckpointProcessing processCheckpoints();
203 
205  virtual void setProcessCheckpoints(CheckpointProcessing value);
206 
208  virtual void setInteractionsCollectedForCheckpoints(bool enable);
209 
211  virtual bool interactionsCollectedForCheckpoints() const;
212 
214  virtual void setInteractionsCollectedFromCheckpoints(bool enable);
215 
217  virtual bool interactionsCollectedFromCheckpoints() const;
218 
224  virtual void modifyMessages(DtMessageBuffer& messages) const;
225 
230  virtual void modifyMessage(DtPacket& packet) const = 0;
231 
234  virtual bool isCheckpointMessage(const DtPacket& packet) const;
235 
237  virtual bool isUpdateMessage(const DtPacket& packet) const = 0;
238 
240  virtual bool isRemovalMessage(const DtPacket& packet) const = 0;
241 
243  virtual bool isInteractionMessage(const DtPacket& packet) const = 0;
244 
246  virtual void createUpdate(const DtStateObject& object,
247  const DtAbsoluteTime& time, DtPacketList& packetlist ) const = 0;
248 
250  virtual DtPacket* createRemoval(const DtStateObject& object,
251  const DtAbsoluteTime& time) const = 0;
252 
253  protected:
254 
256  typedef std::list<DtStateObject*> DtStateObjectList;
257 
259  typedef std::map<DtU64,DtStateObject*> DtStateObjectMap;
260 
262  typedef std::map<DtString, DtStateObject*> DtStateObjectNameMap;
263 
265  DtMessageState(const DtLgrSimManager* simMgr=0);
266 
269 
271  DtMessageState& operator=(const DtMessageState&);
272 
274  virtual void activateState() = 0;
275 
277  virtual void deactivateState() = 0;
278 
285  virtual bool updateStateObjects(const DtPacket& packet);
286 
290  virtual DtStateObject* createStateObject(const DtPacket& packet);
291 
295  virtual DtStateObject* updateStateObject(const DtPacket& packet);
296 
300  virtual DtStateObject* findStateObject(const DtPacket& packet);
301 
303  virtual void removeStateObject(const DtStateObject* object);
304 
306  virtual void createUpdate(const DtStateObject& object,const DtAbsoluteTime& time,
307  DtMessageBuffer& buffer ) const;
308 
312  virtual bool removeStateObject(const DtPacket& packet);
313 
314 
315  protected:
316 
319 
322 
325 
328 
331 
334 
336 
347 
349 
354  };
355 
356 }
357 
358 #endif

Document ID: Generated on Thu Apr 7 20:50:59 EDT 2016 from SVN revision 163818
Copyright © 2005-2012 VT MÄK. All Rights Reserved (www.mak.com)