MAK Data Logger API Documentation for HLA
 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-2016 VT MAK
3 ** All rights reserved.
4 ******************************************************************************/
5 
8 
9 #pragma once
10 
11 #include <lgrCore/lgrCore.h>
12 #include <lgrUtil/observeEvent.h>
13 
14 #include <vlutil/vlMachineTypes.h>
15 #include <vlutil/vlNetTypes.h>
16 
17 #include <list>
18 #include <map>
19 
20 namespace MAKLogger
21 {
22  class DtMessageBuffer;
23  class DtStateObject;
24  class DtPacket;
25  class DtMessageIOInfo;
26  class DtAbsoluteTime;
27  class DtLgrSimManager;
28 
34  {
35  public:
36 
38  {
41  ProcessFirstCheckpoint
42  };
43 
45  {
48  DrainInteractions
49  };
50 
51  // Used to create linked checkpoints
53  {
55  DtNetU64 nextCheckpoint;
56  DtNetU64 numCheckpoints;
57  };
58 
59  // Used to create an initial state
61  {
62  DtNetFloat64 offset;
64  };
65 
67  typedef std::list<DtPacket*> DtPacketList;
68 
71  virtual ~DtMessageState();
72 
74  virtual const DtLgrSimManager* simMgr() const;
75 
77  virtual void startDiff();
78 
80  virtual void generateDiff(DtMessageBuffer& stateBuffer, const DtAbsoluteTime& time,
81  bool addUpdates, InteractionProcessing processInteractions);
82 
84  virtual void endDiff();
85 
87  virtual bool isDiffInProgress() const;
88 
97  virtual void updateState(DtMessageBuffer& stateBuffer);
98 
99 
109  virtual void updateState(DtPacket* packet);
110 
112  virtual void postUpdate();
113 
124  virtual void setState(DtMessageBuffer& completeStateBuffer,const DtAbsoluteTime& time, DtMessageBuffer* diffBuffer=0);
125 
127  virtual void addState(DtMessageBuffer& stateBuffer, const DtAbsoluteTime& time);
128 
134  virtual void clearState(DtMessageBuffer& emptyBuffer,
135  const DtAbsoluteTime& time);
136 
141  virtual void getState(DtMessageBuffer& emptyBuffer,const DtAbsoluteTime* time, bool modifyMessages=true);
142 
144  virtual void getStateObjects(DtMessageBuffer& buffer, const DtAbsoluteTime* time, bool modifyMessages=true);
145 
148  virtual void getStateInteractions(DtMessageBuffer& buffer, const DtAbsoluteTime* time, bool modifyMessages=true);
149 
151  virtual void activate();
152 
154  virtual void deactivate();
155 
157 
158 
159  virtual DtStateObject* findObject(DtU64 uniqueId);
160  virtual const DtStateObject* findObject(DtU64 uniqueId) const;
162 
164 
165 
166  virtual DtStateObject* findObjectByName(const DtString& name);
167  virtual const DtStateObject* findObjectByName(const DtString& name) const;
169 
171 
172  virtual void setLinkCheckpoints(bool enableLinking);
173  virtual bool linkCheckpointsEnabled() const;
175 
177 
178 
180  virtual void setInputInfo(const DtMessageIOInfo* info);
181 
183  virtual void setOutputInfo(const DtMessageIOInfo* info);
184 
186  virtual void decodeInitialState(const DtPacket& packet,DtMessageBuffer& buffer) = 0;
187 
189  virtual void decodeCheckpoint(const DtPacket& packet,DtMessageBuffer& buffer,
190  bool includeInteractions) = 0;
191 
193  virtual void decodeLinkedCheckpoint(const DtPacket& packet,DtMessageBuffer& buffer,
194  bool includeInteractions) = 0;
195 
200  virtual DtPacket* generateInitialState(const DtAbsoluteTime& timestamp,
201  const DtAbsoluteTime& currentTime, bool isTransition);
202 
206  virtual DtPacket* generateCheckpoint(const DtAbsoluteTime& timestamp,
207  bool includeInteractions);
208 
210 
212  virtual const std::list<DtStateObject*>& stateObjectList() const;
213 
215 
216 
217  virtual DtObserveEvent<DtMessageState>* inputChangedEvent();
218  virtual DtObserveEvent<DtMessageState>* outputChangedEvent();
219  virtual DtObserveEvent<DtMessageState>* stateModifiedEvent();
220  virtual DtObserveEvent<DtMessageState>* stateActivatedEvent();
221  virtual DtObserveEvent<DtMessageState>* stateDeactivatedEvent();
222  virtual DtObserveEvent<DtMessageState>* endDiffEvent();
223  virtual DtObserveEvent<DtStateObject>* objectAddedEvent();
224  virtual DtObserveEvent<DtStateObject>* objectToBeRemovedEvent();
225  virtual DtObserveEvent<DtStateObject>* objectUpdatedEvent();
227 
229  virtual void clearState();
230 
232  virtual CheckpointProcessing processCheckpoints();
233 
235  virtual void setProcessCheckpoints(CheckpointProcessing value);
236 
238  virtual void setInteractionsCollectedForCheckpoints(bool enable);
239 
241  virtual bool interactionsCollectedForCheckpoints() const;
242 
244  virtual void setInteractionsCollectedFromCheckpoints(bool enable);
245 
247  virtual bool interactionsCollectedFromCheckpoints() const;
248 
254  virtual void modifyMessages(DtMessageBuffer& messages) const;
255 
260  virtual void modifyMessage(DtPacket& packet) const = 0;
261 
264  virtual bool isInitialStateMessage(const DtPacket& packet) const;
265 
268  virtual bool isCheckpointMessage(const DtPacket& packet) const;
269 
271  virtual bool isUpdateMessage(const DtPacket& packet) const = 0;
272 
274  virtual bool isRemovalMessage(const DtPacket& packet) const = 0;
275 
277  virtual bool isInteractionMessage(const DtPacket& packet) const = 0;
278 
280  virtual void createUpdate(const DtStateObject& object,
281  const DtAbsoluteTime* time, DtPacketList& packetlist ) const = 0;
282 
284  virtual DtPacket* createRemoval(const DtStateObject& object,
285  const DtAbsoluteTime& time) const = 0;
286 
287  protected:
288 
290  typedef std::list<DtStateObject*> DtStateObjectList;
291 
293  typedef std::map<DtU64,DtStateObject*> DtStateObjectMap;
294 
296  typedef std::map<DtString, DtStateObject*> DtStateObjectNameMap;
297 
299  DtMessageState(const DtLgrSimManager* simMgr=0);
300 
303 
305  DtMessageState& operator=(const DtMessageState&);
306 
308  virtual void activateState() = 0;
309 
311  virtual void deactivateState() = 0;
312 
317  virtual DtPacket* createInitialStatePacket(const DtMessageBuffer& initialStateBuffer,
318  const DtAbsoluteTime& timestamp, double offsetTime) = 0;
319 
321  virtual DtPacket* createCheckpointPacket(const DtMessageBuffer& checkpointBuffer,
322  const DtAbsoluteTime& timestamp) = 0;
323 
330  virtual bool updateStateObjects(const DtPacket& packet);
331 
335  virtual DtStateObject* createStateObject(const DtPacket& packet);
336 
340  virtual DtStateObject* updateStateObject(const DtPacket& packet);
341 
345  virtual DtStateObject* findStateObject(const DtPacket& packet);
346 
348  virtual void removeStateObject(const DtStateObject* object);
349 
351  virtual void createUpdate(const DtStateObject& object,const DtAbsoluteTime* time,
352  DtMessageBuffer& buffer ) const;
353 
357  virtual bool removeStateObject(const DtPacket& packet);
358 
361  virtual void clearObjectList(DtStateObjectList& objectList, DtMessageBuffer* emptyStateBuffer,
362  DtAbsoluteTime time);
363 
365  virtual void clearObjectList(DtStateObjectList& objectList);
366 
368  virtual void clearInteractionList(DtPacketList& interactionList);
369 
370  protected:
371 
374 
377 
380 
383 
386 
389 
391 
402 
404 
411  };
412 
413 }
414 

Document ID: Generated on Tue Aug 1 09:00:26 EDT 2017 from SVN revision 179128
Copyright © 2017 VT MÄK. All Rights Reserved (www.mak.com)