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 DtLgrBaseSimManager;
27 
31  {
32  public:
33 
34  typedef int TrackerUpdateId;
35  typedef int EntryHandle;
36  typedef std::set<DtLgrEntityTracker::EntryHandle> EntryHandleSet;
37 
40  struct TrackerEntry
41  {
42  bool temporary;
43  double firstTime;
44  double lastTime;
45  DtForceType force;
46  DtString name;
47  DtString type;
48  DtString marking;
49  };
50 
51 
52  public:
53 
55 
56 
57  virtual ~DtLgrEntityTracker();
58 
59  private:
60 
62  DtLgrEntityTracker(const DtLgrEntityTracker&);
64  DtLgrEntityTracker& operator=(const DtLgrEntityTracker&);
65 
66  public:
67 
72  virtual void simInitialize(DtLgrBaseSimManager* simMgr);
73 
75  virtual EntryHandle begin() const;
76 
78  virtual EntryHandle end() const;
79 
82  virtual DtLgrEntityTracker::TrackerUpdateId lastUpdateId() const;
83 
88  virtual EntryHandle addEntry(double firstTime, double lastTime,
89  const DtString& name, const DtString& type, DtForceType force, const DtString& marking,
90  DtLgrEntityTracker::EntryHandle handle = -1);
91 
96  virtual EntryHandle addEntry(const TrackerEntry& entry,
97  DtLgrEntityTracker::EntryHandle handle = -1);
98 
103  virtual EntryHandle addTemporaryEntry(const DtString& name);
104 
107  virtual EntryHandle findEntry(const DtString& name) const;
108 
110  virtual int entityCount() const;
111 
113  virtual void clearEntries();
114 
116  virtual bool isPermanentEntry(EntryHandle handle) const;
117 
120  virtual const TrackerEntry& entry(DtLgrEntityTracker::EntryHandle handle) const;
121 
123  virtual double entityFirstTime(EntryHandle handle) const;
124 
126  virtual double entityLastTime(EntryHandle handle) const;
127 
129  virtual DtString entityName(EntryHandle handle) const;
130 
132  virtual DtString entityType(EntryHandle handle) const;
133 
135  virtual DtForceType entityForce(EntryHandle handle) const;
136 
138  virtual DtString entityMarking(EntryHandle handle) const;
139 
141  virtual void parsePacket(const DtPacket& packet);
142 
145  virtual EntryHandle entityId(const DtPacket& packet) const;
146 
148 
149 
153  virtual DtLgrEntityTracker* createFromPacket(const DtPacket& packet) = 0;
154 
156  virtual DtString entityName(const DtPacket& packet) const = 0;
157 
159  virtual DtString entityType(const DtPacket& packet) const = 0;
160 
162  virtual DtForceType entityForce(const DtPacket& packet) const = 0;
163 
165  virtual DtString entityMarking(const DtPacket& packet) const = 0;
166 
168 
170  virtual int encodedSize() const;
171 
173  virtual DtPacket* encodePacket() const;
174 
178  virtual void decodePacket(const DtPacket*);
179 
181  virtual void deserializeFromString(const DtString& data);
182 
184  virtual DtString serialize();
185 
186  protected:
187 
189  {
190  DtTrackName = 0,
191  DtTrackType = 1,
192  DtTrackMarking = 2
193  };
194 
197  {
198  DtNetFloat64 firstTime;
199  DtNetFloat64 lastTime;
200  DtNetU32 entrySize;
201  DtNetU32 force;
202  DtNetU16 dataSize[1];
203  };
204 
207  {
208  DtNetU32 numEntries;
209  DtNetU32 unused;
210  };
211 
231 
232  typedef std::vector<TrackerEntry> TrackerEntryList;
233  typedef std::map<DtString, EntryHandle> TrackerEntryIndex;
234 
235  protected:
236 
238  virtual TrackerEntry makeInvalidEntry() const;
239 
241  virtual unsigned encodedEntrySize(const TrackerEntry& entry, bool includePadding=true) const;
242 
245  virtual char* encodeEntry(char* entryData, const TrackerEntry& entry) const;
246 
249  virtual const char* decodeEntry(const char* entryData);
250 
252  virtual void advanceToNextToken(const char*& data, const char* dataEnd);
253 
254  bool getFloat(const char*& token, const char* dataEnd, const DtString& tokenName, float& value);
255  bool getInt(const char*& token, const char* dataEnd, const DtString& tokenName, int& value);
256  bool getString(const char*& token, const char* dataEnd, const DtString& tokenName, DtString& value);
257 
260  virtual void deserializeEntryFromString(const char** data, const char* dataEnd, int index);
261 
263  virtual void serializeEntry(DtString& serialized, unsigned index, const TrackerEntry& entry);
264 
265  protected:
266 
269 
272 
275 
278 
281 
284 
286 
287  const char myFieldSeparator;
288  const DtString myFieldSeparatorString;
290  };
291 }

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)