MAK Data Logger API Documentation for DIS
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
lgrEntityTracker.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/filePosition.h>
14 
15 #include <vlutil/vlNetTypes.h>
16 #include <vlutil/vlString.h>
17 #include <vlpi/disEnums.h>
18 
19 #include <vector>
20 #include <map>
21 #include <set>
22 
23 namespace MAKLogger
24 {
25  class DtPacket;
26  class DtMessageBuffer;
27  class DtAbsoluteTime;
28  class DtLgrBaseSimManager;
29 
33  {
34  public:
35 
36  typedef int TrackerUpdateId;
37  typedef int EntryHandle;
38  typedef std::set<DtLgrEntityTracker::EntryHandle> EntryHandleSet;
39 
42  struct TrackerEntry
43  {
44  bool temporary;
45  double firstTime;
46  double lastTime;
47  DtForceType force;
48  DtString name;
49  DtString type;
50  DtString marking;
51  };
52 
53 
54  public:
55 
57 
58 
59  virtual ~DtLgrEntityTracker();
60 
61  private:
62 
64  DtLgrEntityTracker(const DtLgrEntityTracker&);
66  DtLgrEntityTracker& operator=(const DtLgrEntityTracker&);
67 
68  public:
69 
74  virtual void simInitialize(DtLgrBaseSimManager* simMgr);
75 
77  virtual EntryHandle begin() const;
78 
80  virtual EntryHandle end() const;
81 
84  virtual DtLgrEntityTracker::TrackerUpdateId lastUpdateId() const;
85 
90  virtual EntryHandle addEntry(double firstTime, double lastTime,
91  const DtString& name, const DtString& type, DtForceType force, const DtString& marking,
92  DtLgrEntityTracker::EntryHandle handle = -1);
93 
98  virtual EntryHandle addEntry(const TrackerEntry& entry,
99  DtLgrEntityTracker::EntryHandle handle = -1);
100 
105  virtual EntryHandle addTemporaryEntry(const DtString& name);
106 
112  virtual EntryHandle addTemporaryMarking(const DtString& marking);
113 
116  virtual EntryHandle findEntry(const DtString& name) const;
117 
119  virtual int entityCount() const;
120 
122  virtual void clearEntries();
123 
125  virtual bool isPermanentEntry(EntryHandle handle) const;
126 
129  virtual const TrackerEntry& entry(DtLgrEntityTracker::EntryHandle handle) const;
130 
132  virtual double entityFirstTime(EntryHandle handle) const;
133 
135  virtual double entityLastTime(EntryHandle handle) const;
136 
138  virtual DtString entityName(EntryHandle handle) const;
139 
141  virtual DtString entityType(EntryHandle handle) const;
142 
144  virtual DtForceType entityForce(EntryHandle handle) const;
145 
147  virtual DtString entityMarking(EntryHandle handle) const;
148 
151  virtual void parsePacket(const DtPacket& packet, const DtAbsoluteTime* time=0);
152 
155  virtual void parsePackets(const DtMessageBuffer& packetBuffer, const DtAbsoluteTime* time=0);
156 
159  virtual EntryHandle entityId(const DtPacket& packet) const;
160 
162 
163 
167  virtual DtLgrEntityTracker* createFromPacket(const DtPacket& packet) = 0;
168 
170  virtual DtString entityName(const DtPacket& packet) const = 0;
171 
173  virtual DtString entityType(const DtPacket& packet) const = 0;
174 
176  virtual DtForceType entityForce(const DtPacket& packet) const = 0;
177 
179  virtual DtString entityMarking(const DtPacket& packet) const = 0;
180 
182 
184  virtual int encodedSize() const;
185 
187  virtual DtPacket* encodePacket() const;
188 
192  virtual void decodePacket(const DtPacket*);
193 
195  virtual void deserializeFromString(const DtString& data);
196 
198  virtual DtString serialize();
199 
200  protected:
201 
203  {
204  DtTrackName = 0,
205  DtTrackType = 1,
206  DtTrackMarking = 2
207  };
208 
211  {
212  DtNetFloat64 firstTime;
213  DtNetFloat64 lastTime;
214  DtNetU32 entrySize;
215  DtNetU32 force;
216  DtNetU16 dataSize[1];
217  };
218 
221  {
222  DtNetU32 numEntries;
223  DtNetU32 unused;
224  };
225 
245 
246  typedef std::vector<TrackerEntry> TrackerEntryList;
247  typedef std::map<DtString, EntryHandle> TrackerEntryIndex;
248 
249  protected:
250 
252  virtual TrackerEntry makeInvalidEntry() const;
253 
255  virtual unsigned encodedEntrySize(const TrackerEntry& entry, bool includePadding=true) const;
256 
259  virtual char* encodeEntry(char* entryData, const TrackerEntry& entry) const;
260 
263  virtual const char* decodeEntry(const char* entryData);
264 
266  virtual void advanceToNextToken(const char*& data, const char* dataEnd);
267 
268  bool getFloat(const char*& token, const char* dataEnd, const DtString& tokenName, float& value);
269  bool getInt(const char*& token, const char* dataEnd, const DtString& tokenName, int& value);
270  bool getString(const char*& token, const char* dataEnd, const DtString& tokenName, DtString& value);
271 
274  virtual void deserializeEntryFromString(const char** data, const char* dataEnd, int index);
275 
277  virtual void serializeEntry(DtString& serialized, unsigned index, const TrackerEntry& entry);
278 
279  protected:
280 
283 
286 
289 
292 
295 
298 
301 
303 
304  const char myFieldSeparator;
305  const DtString myFieldSeparatorString;
307  };
308 }

Document ID: Generated on Wed Jun 5 18:45:18 EDT 2019 from SVN revision 198968
Copyright © 2019 VT MAK. All Rights Reserved (www.mak.com)