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-2025 MAK Technologies, Inc
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 
201  virtual DtString serializeAdded();
202 
203  protected:
204 
206  {
207  DtTrackName = 0,
208  DtTrackType = 1,
209  DtTrackMarking = 2
210  };
211 
214  {
215  DtNetFloat64 firstTime;
216  DtNetFloat64 lastTime;
217  DtNetU32 entrySize;
218  DtNetU32 force;
219  DtNetU16 dataSize[1];
220  };
221 
224  {
225  DtNetU32 numEntries;
226  DtNetU32 unused;
227  };
228 
248 
249  typedef std::vector<TrackerEntry> TrackerEntryList;
250  typedef std::map<DtString, EntryHandle> TrackerEntryIndex;
251 
252  protected:
253 
255  virtual TrackerEntry makeInvalidEntry() const;
256 
258  virtual unsigned encodedEntrySize(const TrackerEntry& entry, bool includePadding=true) const;
259 
262  virtual char* encodeEntry(char* entryData, const TrackerEntry& entry) const;
263 
266  virtual const char* decodeEntry(const char* entryData);
267 
269  virtual void advanceToNextToken(const char*& data, const char* dataEnd);
270 
271  bool getFloat(const char*& token, const char* dataEnd, const DtString& tokenName, float& value);
272  bool getInt(const char*& token, const char* dataEnd, const DtString& tokenName, int& value);
273  bool getString(const char*& token, const char* dataEnd, const DtString& tokenName, DtString& value);
274 
277  virtual void deserializeEntryFromString(const char** data, const char* dataEnd);
278 
280  virtual void serializeEntry(DtString& serialized, unsigned index, const TrackerEntry& entry);
281 
282  protected:
283 
286 
289 
292  std::map<unsigned int, TrackerEntry> myAddedEntities;
293 
296 
299 
302 
305 
308 
310 
311  const char myFieldSeparator;
312  const DtString myFieldSeparatorString;
314 
315  static DtString theSerializeLabel;
316  };
317 }
std::map< DtString, EntryHandle > TrackerEntryIndex
Definition: lgrEntityTracker.h:250
std::vector< TrackerEntry > TrackerEntryList
The format encoded in the entity table packet (all in network byte order) is as follows: ...
Definition: lgrEntityTracker.h:249
#define DT_PURE_VIRTUAL_CTR(CLASS_NAME, ARG_TYPES_LIST)
Declare a pure virtual constructor.
Definition: virtualConstructor.h:138
The entries stored in the packet.
Definition: lgrEntityTracker.h:213
DtLgrBaseSimManager * mySimMgr
The simulation manager.
Definition: lgrEntityTracker.h:285
bool temporary
Definition: lgrEntityTracker.h:44
DtNetFloat64 firstTime
Definition: lgrEntityTracker.h:215
Contains MAKLogger::DtFilePosition typedef.
int TrackerUpdateId
Definition: lgrEntityTracker.h:36
DtNetU32 unused
Definition: lgrEntityTracker.h:226
DtNetU32 numEntries
Definition: lgrEntityTracker.h:225
Contains DT_VIRTUAL_CTR DT_VIRTUAL_CTR_DEFAULTS DT_VIRTUAL_COPY_ASSIGN DT_VIRTUAL_BASE_CTR DT_PURE_VI...
std::set< DtLgrEntityTracker::EntryHandle > EntryHandleSet
Definition: lgrEntityTracker.h:38
double lastTime
Definition: lgrEntityTracker.h:46
Message buffer class responsible for storing a list of messages and iterating through that list...
Definition: messageBuffer.h:23
const TrackerEntry myInvalidEntry
An invalid entry.
Definition: lgrEntityTracker.h:307
std::map< unsigned int, TrackerEntry > myAddedEntities
Recently added tracked entities (as of last serialize) Includes temporary entities.
Definition: lgrEntityTracker.h:292
int myAlignmentSize
Byte alignment size.
Definition: lgrEntityTracker.h:304
int myNumberTrackedData
Number of variable tracked data in an encoded entry.
Definition: lgrEntityTracker.h:301
DtString name
Definition: lgrEntityTracker.h:48
TrackerUpdateId myLastUpdateId
The update ID counter.
Definition: lgrEntityTracker.h:298
static DtString theSerializeLabel
Definition: lgrEntityTracker.h:315
double firstTime
Definition: lgrEntityTracker.h:45
TrackedDataIndex
Definition: lgrEntityTracker.h:205
A generic packed of typed binary data.
Definition: packet.h:41
const char myFieldSeparator
Serialize field separator.
Definition: lgrEntityTracker.h:311
DtString type
Definition: lgrEntityTracker.h:49
DtForceType force
Definition: lgrEntityTracker.h:47
const DtString myFieldSeparatorString
Serialize field separator.
Definition: lgrEntityTracker.h:312
#define DT_DLL_LGRCORE
Definition: lgrCore.h:19
Shared implementation of the Sim Manager.
Definition: lgrBaseSimManager.h:29
TrackerEntryList myTrackedEntities
The tracked entities.
Definition: lgrEntityTracker.h:288
Indexes packets in a file.
Definition: lgrEntityTracker.h:32
class DT_DLL_LGRUTIL DtAbsoluteTime
Definition: absoluteTime.h:22
TrackerEntryIndex myEntityIndex
Map of tracked entity handles by name.
Definition: lgrEntityTracker.h:295
DtNetU32 entrySize
Definition: lgrEntityTracker.h:217
int EntryHandle
Definition: lgrEntityTracker.h:37
An entry in the list of tracked entities Constructor used for const value.
Definition: lgrEntityTracker.h:42
DtNetU32 force
Definition: lgrEntityTracker.h:218
DtString marking
Definition: lgrEntityTracker.h:50
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.
The table stored at the beginning of the packet followed by the net entries.
Definition: lgrEntityTracker.h:223
DtNetFloat64 lastTime
Definition: lgrEntityTracker.h:216

Document ID: Generated on Thu Dec 18 15:35:09 EST 2025 from SVN revision 282494
Copyright © 2024 MAK Technologies. All Rights Reserved (www.mak.com)