MAK Data Logger API Documentation for DIS
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.h"
15 #include "hlaTimeStampedAttr.h"
16 #include "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 
35  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 decodeObjectHandle(const DtPacket* packet);
56 
58  static void setObjectHandle(DtPacket* packet,DtLgrHlaHandle handle);
59 
61  static DtLgrHlaHandle decodeObjectClassHandle(const DtPacket* packet);
62 
64  static void decodeRegionID( const DtNetDDMRegionHeader *regionHeader, DtRegionID& regionID, unsigned int index /* = 0 */ );
65 
68  static bool decodeInteractionRegionID( const DtPacket *packet, DtRegionID& regionID, unsigned int index = 0);
69 
72  static bool decodeObjectRegionID( const DtPacket *packet, DtRegionID& regionID, unsigned int index = 0 );
73 
75  static void decodeRegionIdSet( const DtNetDDMRegionHeader *regionHeader, unsigned int numRegions, DtRegionIDSet& regionIDSet );
76 
79  static unsigned int decodeObjectRegionIdSet( const DtPacket *packet, DtRegionIDSet& regionIDSet );
80 
83  static unsigned int decodeInteractionRegionIdSet( const DtPacket *packet, DtRegionIDSet& regionIDSet );
84 
86  static void setObjectClassHandle( DtPacket* packet, DtLgrHlaHandle handle);
87 
89  static const char* decodeObjectName(const DtPacket* packet,int& length);
90 
92  static const char* decodeObjectTag(const DtPacket* packet,int& length);
93 
95  static const char* decodeInteractionTag(const DtPacket* packet,int& length);
96 
97  static DtLgrHlaHandle decodeInteractionClassHandle(const DtPacket* packet);
98 
99  static void setInteractionClassHandle( DtPacket* packet,DtLgrHlaHandle handle);
100 
102  static DtPacket* encodeUpdate( const DtAbsoluteTime& time,
103  DtLgrHlaHandle objectHandle,
104  DtLgrHlaHandle classHandle,
105  const DtLgrHandleValueReferenceMap& referenceMap,
106  const DtString& objectName,
107  const DtLgrValueReference& tag );
108 
110  static DtPacket* encodeUpdate( const DtAbsoluteTime& time,
111  DtLgrHlaHandle objectHandle,
112  DtLgrHlaHandle classHandle,
113  const DtLgrHandleValueReferenceMap& referenceMap,
114  const DtString& objectName,
115  const DtLgrValueReference& tag,
116  const DtRegionDescSet& regionDescSet );
117 
119  static DtPacket* encodeUpdates(const DtAbsoluteTime& time,
120  const DtTimedHandleValueMapList& outputList, DtLgrHlaHandle objectHandle,
121  DtLgrHlaHandle classHandle, const DtString& objectName);
122 
123 
124 
126  static DtTimedHandleValueMapList* decodeUpdates(const DtPacket* packet);
127 
128  static DtPacket* encodeRemoval(DtAbsoluteTime time,DtLgrHlaHandle objectId,
129  DtLgrHlaHandle classHandle, DtString name,DtString tag);
130 
133  static size_t calculateInteractionSize(
134  const DtLgrHandleValueReferenceMap& parameters,
135  const DtLgrValueReference& tag);
136 
139  static size_t calculateInteractionSize(
140  const DtLgrHandleValueReferenceMap& parameters,
141  const DtLgrValueReference& tag,
142  const DtRegionDescSet& regionDescSet
143  );
144 
147  static void encodeInteraction(DtPacket&,
148  DtLgrHlaHandle classHandle,
149  const DtLgrHandleValueReferenceMap& parameters,
150  const DtLgrValueReference& tag
151  );
152 
156  static void encodeInteraction(DtPacket&,
157  DtLgrHlaHandle classHandle,
158  const DtLgrHandleValueReferenceMap& parameters,
159  const DtLgrValueReference& tag,
160  const DtRegionDescSet& regionDescSet
161  );
162 
163  static std::auto_ptr<DtLgrHandleValueMap> decodeParameterHandleValues(const DtPacket* packet);
164  static std::auto_ptr<DtLgrHandleValueReferenceMap> decodeParameterReferences(const DtPacket* packet);
165 
166  static void decodeParameterHandles(const DtPacket* packet,std::vector<DtLgrHlaHandle>& handles);
167  static void setParameterHandles(DtPacket* packet,const std::vector<DtLgrHlaHandle>& handles);
168 
169  static std::auto_ptr<DtLgrHandleValueMap> decodeAttributeHandleValues(const DtPacket* packet);
170  static std::auto_ptr<DtLgrHandleValueReferenceMap> decodeAttributeReferences(const DtPacket* packet);
171 
172  static void decodeAttributeHandles(const DtPacket* packet,std::vector<DtLgrHlaHandle>& handles);
173  static void setAttributeHandles(DtPacket* packet,const std::vector<DtLgrHlaHandle>& handles);
174 
178  static DtDDMRegionSP decodeInteractionDDMRegion( const DtPacket *packet,
179  const DtExerciseConn *exerciseConn, unsigned int index=0,
180  DtIDRegionMap* regionCache=0, bool updateRegionExtents=false);
181 
185  static DtDDMRegionSP decodeObjectDDMRegion( const DtPacket *packet,
186  const DtExerciseConn *exerciseConn, unsigned int index=0,
187  DtIDRegionMap* regionCache=0, bool updateRegionExtents=false);
188 
193  static unsigned int decodeInteractionDDMRegionSet( const DtPacket *packet,
194  const DtExerciseConn *exerciseConn, DtDDMRegionSet& regionSet,
195  DtIDRegionMap* regionCache=0, bool updateRegionExtents=false );
196 
201  static unsigned int decodeObjectDDMRegionSet( const DtPacket *packet,
202  const DtExerciseConn *exerciseConn, DtDDMRegionSet& regionSet,
203  DtIDRegionMap* regionCache=0, bool updateRegionExtents=false );
204 
207  static unsigned int decodeInteractionDDMRegionDescSet( const DtPacket *packet,
208  DtRegionDescSet& regionSet );
209 
212  static unsigned int decodeObjectDDMRegionDescSet( const DtPacket *packet,
213  DtRegionDescSet& regionSet );
214 
215  protected:
216 
217 #if DtHLA_1516
218  static int bufferSizeOfMap(const RTI::AttributeHandleValueMap& map);
219  static int bufferSizeOfMap(const RTI::ParameterHandleValueMap& map);
220 #else
221  static int bufferSizeOfSet(const RTI::ParameterHandleValuePairSet& set);
222  static int bufferSizeOfSet(const RTI::AttributeHandleValuePairSet& set);
223 #endif
224  static int bufferSizeOfMap(const DtLgrHandleValueMap& map);
225  static int bufferSizeOfMap(const DtLgrHandleValueReferenceMap& map);
226 
227  static int bufferSizeOfRegionDimensionSet( const DtDimensionDescSet& set );
228  static int bufferSizeOfRegionDescriptorSet( const DtRegionDescSet& set );
229 
230 /*
231  static bool readFromSetToBuffer(const RTI::ParameterHandleValuePairSet& set,void* memory,unsigned int memorySize);
232  static bool readFromSetToBuffer(const RTI::AttributeHandleValuePairSet& set,void* memory,unsigned int memorySize);
233 
234  static bool readFromBufferToSet(DtLgrHandleValueMap& set,const void* memory,unsigned int memorySize, int numItems);
235  static bool readFromBufferToSet(RTI::AttributeHandleValuePairSet& set,const void* memory,unsigned int memorySize, int numItems);
236 
237 */
238 
240  static void getRegionExtents(const char* data,
241  DtExtentDescSet& extentSet, unsigned int numExtents, std::set<DtString>* dimensionNameSet=0);
242 
245  static bool decodeDDMRegion( const DtNetDDMRegionHeader *regionHeader, DtRegionDesc& regionDesc);
246 
248  static void updateRegion(DtDDMRegionSP region, DtExtentDescSet& extentSet);
249 
254  static DtDDMRegionSP decodeAndCreateDDMRegion( const DtNetDDMRegionHeader *regionHeader,
255  const DtExerciseConn *exerciseConn, DtIDRegionMap* regionCache=0, bool updateRegionExtents=false );
256 
257  static bool readFromBufferToMap(DtLgrHandleValueMap& map,
258  const void* buffer,unsigned int memorySize, int numItems);
259 
260  static bool readFromBufferToMap(DtLgrHandleValueReferenceMap& map,
261  const void* buffer,unsigned int memorySize, int numItems);
262 
263  static bool readFromMapToBuffer(const DtLgrHandleValueMap& map,
264  void* buffer,unsigned int memorySize);
265 
266  static bool readFromMapToBuffer(const DtLgrHandleValueReferenceMap& map,
267  void* buffer,unsigned int memorySize);
268 
270  //static bool readFromRegionSetToBuffer( const DtDimensionDescSet& set,
272 
273  static bool readFromRegionSetToBuffer( const DtRegionDescSet& rset,
274  void *buffer, unsigned int memorySize );
275 
276  };
277 
283 
289 
290 
302 
303 }
304 
305 #endif
306 #endif

Document ID: Generated on Thu Apr 10 18:53:01 EDT 2014 from SVN revision 138105
Copyright © 2005-2012 VT MÄK. All Rights Reserved (www.mak.com)