MAK Data Logger API Documentation for DIS
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
hlaMessageFactory.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 hlaMessageFactory_H_
10 #define hlaMessageFactory_H_
11 
12 #if DtHLA
13 
14 #include <lgrSim/lgrSim.h>
16 #include <lgrSim/lgrHlaAttribute.h>
17 #include "lgrHlaNetStructures.h"
18 #include "subscriptionListFile.h"
19 
20 #include <list>
21 #include <utility>
22 #include <vlutil/vlNetTypes.h>
23 
24 #include <vl/rtiCompatibility.h>
25 #include <vl/hlaObject.h>
26 
27 namespace MAKLogger
28 {
29 
30  class DtPacket;
31  class DtAbsoluteTime;
32 
33 #ifdef DtHLA_1516
34  typedef DtString DtRegionID;
36 #else
37  typedef RTI::RegionToken DtRegionID;
38 #endif
39 
40  typedef DtSubscriptionListFile::DimensionDesc DtDimensionDesc;
41  typedef DtSubscriptionListFile::ExtentDesc DtExtentDesc;
42  typedef DtSubscriptionListFile::RegionDesc DtRegionDesc;
43  typedef std::set<DtRegionDesc> DtRegionDescSet;
44  typedef std::set<DtDimensionDesc> DtDimensionDescSet;
45  typedef std::set<DtExtentDesc> DtExtentDescSet;
46  typedef std::set<DtRegionID> DtRegionIDSet;
47  typedef std::map<DtRegionID,DtDDMRegionSP> DtIDRegionMap;
48 
51  class DT_DLL_LGRSIM DtLgrHlaMessageFactory
52  {
53  public:
55  static DtLgrHlaHandle decodeUpdateObjectHandle(const DtPacket* packet);
56 
58  static DtLgrHlaHandle decodeRemoveObjectHandle(const DtPacket* packet);
59 
61  static void setUpdateObjectHandle(DtPacket* packet,DtLgrHlaHandle handle);
62 
64  static void setRemoveObjectHandle(DtPacket* packet,DtLgrHlaHandle handle);
65 
67  static DtLgrHlaHandle decodeUpdateObjectClassHandle(const DtPacket* packet);
68 
70  static DtLgrHlaHandle decodeRemoveObjectClassHandle(const DtPacket* packet);
71 
72  static DtLgrHlaHandle decodeInteractionClassHandle(const DtPacket* packet);
73 
75  static void setUpdateObjectClassHandle( DtPacket* packet, DtLgrHlaHandle handle);
76 
78  static void setRemoveObjectClassHandle( DtPacket* packet, DtLgrHlaHandle handle);
79 
81  static void setInteractionClassHandle( DtPacket* packet,DtLgrHlaHandle handle);
82 
84  static const char* decodeUpdateObjectName(const DtPacket* packet,int& length);
85 
87  static const char* decodeRemoveObjectName(const DtPacket* packet,int& length);
88 
90  static const char* decodeUpdateObjectTag(const DtPacket* packet,int& length);
91 
93  static const char* decodeRemoveObjectTag(const DtPacket* packet,int& length);
94 
96  static const char* decodeInteractionTag(const DtPacket* packet,int& length);
97 
99  static void decodeRegionID( const DtNetDDMRegionHeader *regionHeader, DtRegionID& regionID, unsigned int index /* = 0 */ );
100 
103  static bool decodeInteractionRegionID( const DtPacket *packet, DtRegionID& regionID, unsigned int index = 0);
104 
107  static bool decodeObjectRegionID( const DtPacket *packet, DtRegionID& regionID, unsigned int index = 0 );
108 
110  static void decodeRegionIdSet( const DtNetDDMRegionHeader *regionHeader, unsigned int numRegions, DtRegionIDSet& regionIDSet );
111 
114  static unsigned int decodeObjectRegionIdSet( const DtPacket *packet, DtRegionIDSet& regionIDSet );
115 
118  static unsigned int decodeInteractionRegionIdSet( const DtPacket *packet, DtRegionIDSet& regionIDSet );
119 
121  static DtPacket* encodeUpdate( const DtAbsoluteTime& time,
122  DtLgrHlaHandle objectHandle,
123  DtLgrHlaHandle classHandle,
124  const DtLgrHandleValueReferenceMap& referenceMap,
125  const DtString& objectName,
126  const DtLgrValueReference& tag );
127 
129  static DtPacket* encodeUpdate( const DtAbsoluteTime& time,
130  DtLgrHlaHandle objectHandle,
131  DtLgrHlaHandle classHandle,
132  const DtLgrHandleValueReferenceMap& referenceMap,
133  const DtString& objectName,
134  const DtLgrValueReference& tag,
135  const DtRegionDescSet& regionDescSet );
136 
138  static DtPacket* encodeUpdates(const DtAbsoluteTime& time,
139  const DtTimedHandleValueMapList& outputList, DtLgrHlaHandle objectHandle,
140  DtLgrHlaHandle classHandle, const DtString& objectName);
141 
143  static DtTimedHandleValueMapList* decodeUpdates(const DtPacket* packet);
144 
145  static DtPacket* encodeRemoval(DtAbsoluteTime time,DtLgrHlaHandle objectId,
146  DtLgrHlaHandle classHandle, DtString name,DtString tag);
147 
150  static size_t calculateInteractionSize(
151  const DtLgrHandleValueReferenceMap& parameters,
152  const DtLgrValueReference& tag);
153 
156  static size_t calculateInteractionSize(
157  const DtLgrHandleValueReferenceMap& parameters,
158  const DtLgrValueReference& tag,
159  const DtRegionDescSet& regionDescSet
160  );
161 
164  static void encodeInteraction(DtPacket&,
165  DtLgrHlaHandle classHandle,
166  const DtLgrHandleValueReferenceMap& parameters,
167  const DtLgrValueReference& tag
168  );
169 
173  static void encodeInteraction(DtPacket&,
174  DtLgrHlaHandle classHandle,
175  const DtLgrHandleValueReferenceMap& parameters,
176  const DtLgrValueReference& tag,
177  const DtRegionDescSet& regionDescSet
178  );
179 
180  static std::auto_ptr<DtLgrHandleValueMap> decodeParameterHandleValues(const DtPacket* packet);
181  static std::auto_ptr<DtLgrHandleValueReferenceMap> decodeParameterReferences(const DtPacket* packet);
182 
183  static void decodeParameterHandles(const DtPacket* packet,std::vector<DtLgrHlaHandle>& handles);
184  static void setParameterHandles(DtPacket* packet,const std::vector<DtLgrHlaHandle>& handles);
185 
186  static std::auto_ptr<DtLgrHandleValueMap> decodeAttributeHandleValues(const DtPacket* packet);
187  static std::auto_ptr<DtLgrHandleValueReferenceMap> decodeAttributeReferences(const DtPacket* packet);
188 
189  static void decodeAttributeHandles(const DtPacket* packet,std::vector<DtLgrHlaHandle>& handles);
190  static void setAttributeHandles(DtPacket* packet,const std::vector<DtLgrHlaHandle>& handles);
191 
195  static DtDDMRegionSP decodeInteractionDDMRegion( const DtPacket *packet,
196  const DtExerciseConn *exerciseConn, unsigned int index=0,
197  DtIDRegionMap* regionCache=0, bool updateRegionExtents=false);
198 
202  static DtDDMRegionSP decodeObjectDDMRegion( const DtPacket *packet,
203  const DtExerciseConn *exerciseConn, unsigned int index=0,
204  DtIDRegionMap* regionCache=0, bool updateRegionExtents=false);
205 
210  static unsigned int decodeInteractionDDMRegionSet( const DtPacket *packet,
211  const DtExerciseConn *exerciseConn, DtDDMRegionSet& regionSet,
212  DtIDRegionMap* regionCache=0, bool updateRegionExtents=false );
213 
218  static unsigned int decodeObjectDDMRegionSet( const DtPacket *packet,
219  const DtExerciseConn *exerciseConn, DtDDMRegionSet& regionSet,
220  DtIDRegionMap* regionCache=0, bool updateRegionExtents=false );
221 
224  static unsigned int decodeInteractionDDMRegionDescSet( const DtPacket *packet,
225  DtRegionDescSet& regionSet );
226 
229  static unsigned int decodeObjectDDMRegionDescSet( const DtPacket *packet,
230  DtRegionDescSet& regionSet );
231 
232  protected:
233 
235 
236  static NetUpdateRecord* netUpdateRecord(DtPacket* packet);
237  static const NetUpdateRecord* netUpdateRecord(const DtPacket* packet);
238  static NetRemovalRecord* netRemovalRecord(DtPacket* packet);
239  static const NetRemovalRecord* netRemovalRecord(const DtPacket* packet);
240  static NetInteractionRecord* netInteractionRecord(DtPacket* packet);
241  static const NetInteractionRecord* netInteractionRecord(const DtPacket* packet);
243 
244 #if DtHLA_1516
245  static int bufferSizeOfMap(const RTI::AttributeHandleValueMap& map);
246  static int bufferSizeOfMap(const RTI::ParameterHandleValueMap& map);
247 #else
248  static int bufferSizeOfSet(const RTI::ParameterHandleValuePairSet& set);
249  static int bufferSizeOfSet(const RTI::AttributeHandleValuePairSet& set);
250 #endif
251  static int bufferSizeOfMap(const DtLgrHandleValueMap& map);
252  static int bufferSizeOfMap(const DtLgrHandleValueReferenceMap& map);
253 
254  static int bufferSizeOfRegionDimensionSet( const DtDimensionDescSet& set );
255  static int bufferSizeOfRegionDescriptorSet( const DtRegionDescSet& set );
256 
258  static void getRegionExtents(const char* data,
259  DtExtentDescSet& extentSet, unsigned int numExtents, std::set<DtString>* dimensionNameSet=0);
260 
263  static bool decodeDDMRegion( const DtNetDDMRegionHeader *regionHeader, DtRegionDesc& regionDesc);
264 
266  static void updateRegion(DtDDMRegionSP region, DtExtentDescSet& extentSet);
267 
272  static DtDDMRegionSP decodeAndCreateDDMRegion( const DtNetDDMRegionHeader *regionHeader,
273  const DtExerciseConn *exerciseConn, DtIDRegionMap* regionCache=0, bool updateRegionExtents=false );
274 
275  static bool readFromBufferToMap(DtLgrHandleValueMap& map,
276  const void* buffer,unsigned int memorySize, int numItems);
277 
278  static bool readFromBufferToMap(DtLgrHandleValueReferenceMap& map,
279  const void* buffer,unsigned int memorySize, int numItems);
280 
281  static bool readFromMapToBuffer(const DtLgrHandleValueMap& map,
282  void* buffer,unsigned int memorySize);
283 
284  static bool readFromMapToBuffer(const DtLgrHandleValueReferenceMap& map,
285  void* buffer,unsigned int memorySize);
286 
288  //static bool readFromRegionSetToBuffer( const DtDimensionDescSet& set,
290 
291  static bool readFromRegionSetToBuffer( const DtRegionDescSet& rset,
292  void *buffer, unsigned int memorySize );
293 
294  };
295 
301 
307 
308 
320 
321 }
322 
323 #endif
324 #endif
Contains Net structures for storing HLA data in network format (big endian).
Defines IMPORT/EXPORT macros for lgrSim library.
#define DT_DLL_LGRSIM
Definition: lgrSim.h:21
Contains MAKLogger::DtSubscriptionListFile class.
Contains MAKLogger::DtLgrHlaHandle typedef and MAKLogger::DtLgrValueReference and MAKLogger::DtLgrVal...
Contains MAKLogger::DtHlaTimeStampedAttribute class.
class DT_DLL_LGRUTIL DtAbsoluteTime
Definition: absoluteTime.h:22

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)