MAK Data Logger API Documentation for DIS
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.h"
13 #include "observeEvent.h"
14 #include <vlutil/vlMachineTypes.h>
15 #include <list>
16 #include <map>
17 
18 namespace MAKLogger
19 {
20  class DtMessageBuffer;
21  class DtStateObject;
22  class DtPacket;
23  class DtMessageIOInfo;
24  class DtAbsoluteTime;
25 
31  {
32  public:
33 
35  {
38  ProcessFirstCheckpoint
39  };
40 
43  virtual ~DtMessageState();
44 
46  DtAbsoluteTime convertTime(DtAbsoluteTime inputCurrentTime,
47  DtAbsoluteTime inputTime,DtAbsoluteTime outputCurrentTime);
48 
50  virtual void startDiff();
51 
53  virtual void generateDiff(DtMessageBuffer& stateBuffer,
54  const DtAbsoluteTime& time);
55 
57  virtual void endDiff();
58 
67  void updateState(DtMessageBuffer& stateBuffer);
68 
69 
79  void updateState(DtPacket* packet);
80 
82  virtual void postUpdate();
83 
92  void setState(DtMessageBuffer& completeStateBuffer,const DtAbsoluteTime& time);
93 
99  virtual void clearState(DtMessageBuffer& emptyBuffer,
100  const DtAbsoluteTime& time);
101 
106  virtual void getState(DtMessageBuffer& emptyBuffer,const DtAbsoluteTime& time);
107 
108 
110  virtual void activate();
111 
113  virtual void deactivate();
114 
116 
117 
118  virtual DtStateObject* findObject(DtU64 uniqueId);
119  virtual const DtStateObject* findObject(DtU64 uniqueId) const;
121 
123 
124 
126  virtual void setInputInfo(const DtMessageIOInfo* info);
127 
129  virtual void setOutputInfo(const DtMessageIOInfo* info);
130 
132  virtual void decodeCheckpoint(const DtPacket& packet,DtMessageBuffer& buffer) = 0;
133 
135  virtual DtPacket* generateCheckpoint(const DtAbsoluteTime& timestamp) = 0;
136 
138 
140  virtual const std::list<DtStateObject*>& stateObjectList() const;
141 
143 
144 
145  DtObserveEvent<DtMessageState>* inputChangedEvent();
146  DtObserveEvent<DtMessageState>* outputChangedEvent();
147  DtObserveEvent<DtMessageState>* stateModifiedEvent();
148  DtObserveEvent<DtMessageState>* stateActivatedEvent();
149  DtObserveEvent<DtMessageState>* stateDeactivatedEvent();
150  DtObserveEvent<DtMessageState>* endDiffEvent();
151  DtObserveEvent<DtStateObject>* objectAddedEvent();
152  DtObserveEvent<DtStateObject>* objectToBeRemovedEvent();
153  DtObserveEvent<DtStateObject>* objectUpdatedEvent();
155 
157  virtual void clearState();
158 
160  virtual CheckpointProcessing processCheckpoints();
161 
163  virtual void setProcessCheckpoints(CheckpointProcessing value);
164 
170  virtual void modifyMessages(DtMessageBuffer& messages);
171 
176  virtual void modifyMessage(DtPacket& packet) = 0;
177 
180  virtual bool isCheckpointMessage(const DtPacket& packet) const;
181 
183  virtual bool isUpdateMessage(const DtPacket& packet) const = 0;
184 
186  virtual bool isRemovalMessage(const DtPacket& packet) const = 0;
187 
188  protected:
189 
191  virtual void activateState() = 0;
192 
194  virtual void deactivateState() = 0;
195 
197  DtMessageState();
198 
201 
203  DtMessageState& operator=(const DtMessageState&);
204 
211  virtual bool updateStateObjects(DtPacket& packet);
212 
214  virtual void createUpdate(DtStateObject& object,
215  const DtAbsoluteTime& time, std::list<DtPacket*>& packetlist ) = 0;
216 
218  virtual DtPacket* createRemoval(DtStateObject& object,
219  const DtAbsoluteTime& time) = 0;
220 
221 
225  virtual DtStateObject* createStateObject(DtPacket& packet);
226 
230  virtual DtStateObject* updateStateObject(DtPacket& packet);
231 
235  virtual DtStateObject* findStateObject(DtPacket& packet);
236 
240  virtual bool removeStateObject(DtPacket& packet);
241 
243  void removeStateObject( DtStateObject* object );
244 
246  typedef std::list<DtStateObject*> DtStateObjectList;
247 
249  typedef std::map<DtU64,DtStateObject*> DtStateObjectMap;
250 
253 
256 
259 
261 
272 
274 
276  };
277 
278 }
279 
280 #endif

Document ID: Generated on Sun Dec 15 18:04:30 EST 2013 from SVN revision 134418
Copyright © 2005-2012 VT MÄK. All Rights Reserved (www.mak.com)