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  virtual DtStateObject* findObject(DtU64 uniqueId);
160  virtual const DtStateObject* findObject(DtU64 uniqueId) const;
162 
164  virtual DtStateObject* findObjectByName(const DtString& name);
167  virtual const DtStateObject* findObjectByName(const DtString& name) const;
169 
171  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 
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  DtObserveEvent<DtMessageState> myInputChangedEvent;
402 
404 
411  };
412 
413 }
414 
DtStateObjectList myObjects
List of state objects.
Definition: messageState.h:373
std::map< DtString, DtStateObject * > DtStateObjectNameMap
Type for lookup objects by name.
Definition: messageState.h:296
DtNetU64 previousCheckpoint
Definition: messageState.h:54
DtStateObjectList mySnapshotOfObjects
List of objects used when diffing two different states.
Definition: messageState.h:385
CheckpointProcessing
Definition: messageState.h:37
DtStateObjectNameMap myObjectLookupNameMap
Map to lookup state objects.
Definition: messageState.h:382
const DtLgrSimManager * mySimMgr
The simulation manager.
Definition: messageState.h:388
bool myStateChanged
Definition: messageState.h:405
std::list< DtPacket * > DtPacketList
Type for the queue of interactions.
Definition: messageState.h:67
DtObserveEvent< DtMessageState > myStateActivatedEvent
Events called on certain actions of the messageState.
Definition: messageState.h:395
CheckpointProcessing myCheckpointProcessing
Definition: messageState.h:403
DtObserveEvent< DtStateObject > myObjectUpdatedEvent
Events called on certain actions of the messageState.
Definition: messageState.h:400
A generic object that has state.
Definition: stateObject.h:27
Necessary Predefinitions.
Definition: observeConnection.h:23
DtStateObjectMap myObjectLookupMap
Map to lookup state objects.
Definition: messageState.h:379
Message buffer class responsible for storing a list of messages and iterating through that list...
Definition: messageBuffer.h:23
bool myCollectInteractionsFromCheckpoint
Definition: messageState.h:409
DtObserveEvent< DtMessageState > myStateDeactivetedEvent
Events called on certain actions of the messageState.
Definition: messageState.h:396
bool myUseDiffTimeForStateObjects
Definition: messageState.h:408
DtNetU64 numberCheckpoints
Definition: messageState.h:63
Implements a protocol independent Simulation manager.
Definition: lgrSimManager.h:40
DtNetU64 numCheckpoints
Definition: messageState.h:56
DtObserveEvent< DtMessageState > myStateModifiedEvent
Events called on certain actions of the messageState.
Definition: messageState.h:394
DtPacketList myInteractions
List of interactions received since last flush.
Definition: messageState.h:376
A message IO info object stores information about a specific message input or output stage...
Definition: messageIoInfo.h:21
A generic packed of typed binary data.
Definition: packet.h:41
DtObserveEvent< DtStateObject > myObjectToBeRemovedEvent
Events called on certain actions of the messageState.
Definition: messageState.h:399
#define DT_DLL_LGRCORE
Definition: lgrCore.h:19
bool myLinkCheckpoints
Definition: messageState.h:407
InteractionProcessing
Definition: messageState.h:44
class DT_DLL_LGRUTIL DtAbsoluteTime
Definition: absoluteTime.h:22
DtNetFloat64 offset
Definition: messageState.h:62
DtNetU64 nextCheckpoint
Definition: messageState.h:55
bool myDiffInProgress
Definition: messageState.h:410
DtObserveEvent< DtMessageState > myOutputChangedEvent
Events called on certain actions of the messageState.
Definition: messageState.h:393
The Abstract message state maintained by the logger.
Definition: messageState.h:33
DtObserveEvent< DtStateObject > myObjectAddedEvent
Events called on certain actions of the messageState.
Definition: messageState.h:398
Contains MAKLogger::DtObserveEvent class.
bool myCheckpointInteractions
Definition: messageState.h:406
std::list< DtStateObject * > DtStateObjectList
Type for the list of objects.
Definition: messageState.h:290
std::map< DtU64, DtStateObject * > DtStateObjectMap
Type for lookup objects by unique id.
Definition: messageState.h:293
DtObserveEvent< DtMessageState > myEndDiffEvent
Events called on certain actions of the messageState.
Definition: messageState.h:397
Absolute Time, a particular measured instance in time, could be thought of as a set of relative times...
Definition: absoluteTime.h:82
Contains lgrCore library definitions.

Document ID: Generated on Thu Jul 14 15:45:33 EDT 2022 from SVN revision 244827
Copyright © 2021 MAK Technologies. All Rights Reserved (www.mak.com)