9 #ifndef hlaMessageFactory_H_
10 #define hlaMessageFactory_H_
22 #include <vlutil/vlNetTypes.h>
24 #include <vl/rtiCompatibility.h>
25 #include <vl/hlaObject.h>
35 typedef DtString DtRegionID;
37 typedef RTI::RegionToken DtRegionID;
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;
55 static DtLgrHlaHandle decodeUpdateObjectHandle(
const DtPacket* packet);
58 static DtLgrHlaHandle decodeRemoveObjectHandle(
const DtPacket* packet);
61 static void setUpdateObjectHandle(DtPacket* packet,DtLgrHlaHandle handle);
64 static void setRemoveObjectHandle(DtPacket* packet,DtLgrHlaHandle handle);
67 static DtLgrHlaHandle decodeUpdateObjectClassHandle(
const DtPacket* packet);
70 static DtLgrHlaHandle decodeRemoveObjectClassHandle(
const DtPacket* packet);
72 static DtLgrHlaHandle decodeInteractionClassHandle(
const DtPacket* packet);
75 static void setUpdateObjectClassHandle( DtPacket* packet, DtLgrHlaHandle handle);
78 static void setRemoveObjectClassHandle( DtPacket* packet, DtLgrHlaHandle handle);
81 static void setInteractionClassHandle( DtPacket* packet,DtLgrHlaHandle handle);
84 static const char* decodeUpdateObjectName(
const DtPacket* packet,
int& length);
87 static const char* decodeRemoveObjectName(
const DtPacket* packet,
int& length);
90 static const char* decodeUpdateObjectTag(
const DtPacket* packet,
int& length);
93 static const char* decodeRemoveObjectTag(
const DtPacket* packet,
int& length);
96 static const char* decodeInteractionTag(
const DtPacket* packet,
int& length);
99 static void decodeRegionID(
const DtNetDDMRegionHeader *regionHeader, DtRegionID& regionID,
unsigned int index );
103 static bool decodeInteractionRegionID(
const DtPacket *packet, DtRegionID& regionID,
unsigned int index = 0);
107 static bool decodeObjectRegionID(
const DtPacket *packet, DtRegionID& regionID,
unsigned int index = 0 );
110 static void decodeRegionIdSet(
const DtNetDDMRegionHeader *regionHeader,
unsigned int numRegions, DtRegionIDSet& regionIDSet );
114 static unsigned int decodeObjectRegionIdSet(
const DtPacket *packet, DtRegionIDSet& regionIDSet );
118 static unsigned int decodeInteractionRegionIdSet(
const DtPacket *packet, DtRegionIDSet& regionIDSet );
122 DtLgrHlaHandle objectHandle,
123 DtLgrHlaHandle classHandle,
124 const DtLgrHandleValueReferenceMap& referenceMap,
125 const DtString& objectName,
126 const DtLgrValueReference& tag );
130 DtLgrHlaHandle objectHandle,
131 DtLgrHlaHandle classHandle,
132 const DtLgrHandleValueReferenceMap& referenceMap,
133 const DtString& objectName,
134 const DtLgrValueReference& tag,
135 const DtRegionDescSet& regionDescSet );
139 const DtTimedHandleValueMapList& outputList, DtLgrHlaHandle objectHandle,
140 DtLgrHlaHandle classHandle,
const DtString& objectName);
143 static DtTimedHandleValueMapList* decodeUpdates(
const DtPacket* packet);
145 static DtPacket* encodeRemoval(
DtAbsoluteTime time,DtLgrHlaHandle objectId,
146 DtLgrHlaHandle classHandle, DtString name,DtString tag);
150 static size_t calculateInteractionSize(
151 const DtLgrHandleValueReferenceMap& parameters,
152 const DtLgrValueReference& tag);
156 static size_t calculateInteractionSize(
157 const DtLgrHandleValueReferenceMap& parameters,
158 const DtLgrValueReference& tag,
159 const DtRegionDescSet& regionDescSet
164 static void encodeInteraction(DtPacket&,
165 DtLgrHlaHandle classHandle,
166 const DtLgrHandleValueReferenceMap& parameters,
167 const DtLgrValueReference& tag
173 static void encodeInteraction(DtPacket&,
174 DtLgrHlaHandle classHandle,
175 const DtLgrHandleValueReferenceMap& parameters,
176 const DtLgrValueReference& tag,
177 const DtRegionDescSet& regionDescSet
180 static std::auto_ptr<DtLgrHandleValueMap> decodeParameterHandleValues(
const DtPacket* packet);
181 static std::auto_ptr<DtLgrHandleValueReferenceMap> decodeParameterReferences(
const DtPacket* packet);
183 static void decodeParameterHandles(
const DtPacket* packet,std::vector<DtLgrHlaHandle>& handles);
184 static void setParameterHandles(DtPacket* packet,
const std::vector<DtLgrHlaHandle>& handles);
186 static std::auto_ptr<DtLgrHandleValueMap> decodeAttributeHandleValues(
const DtPacket* packet);
187 static std::auto_ptr<DtLgrHandleValueReferenceMap> decodeAttributeReferences(
const DtPacket* packet);
189 static void decodeAttributeHandles(
const DtPacket* packet,std::vector<DtLgrHlaHandle>& handles);
190 static void setAttributeHandles(DtPacket* packet,
const std::vector<DtLgrHlaHandle>& handles);
195 static DtDDMRegionSP decodeInteractionDDMRegion(
const DtPacket *packet,
197 DtIDRegionMap* regionCache=0,
bool updateRegionExtents=
false);
202 static DtDDMRegionSP decodeObjectDDMRegion(
const DtPacket *packet,
204 DtIDRegionMap* regionCache=0,
bool updateRegionExtents=
false);
210 static unsigned int decodeInteractionDDMRegionSet(
const DtPacket *packet,
212 DtIDRegionMap* regionCache=0,
bool updateRegionExtents=
false );
218 static unsigned int decodeObjectDDMRegionSet(
const DtPacket *packet,
220 DtIDRegionMap* regionCache=0,
bool updateRegionExtents=
false );
224 static unsigned int decodeInteractionDDMRegionDescSet(
const DtPacket *packet,
225 DtRegionDescSet& regionSet );
229 static unsigned int decodeObjectDDMRegionDescSet(
const DtPacket *packet,
230 DtRegionDescSet& regionSet );
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);
245 static int bufferSizeOfMap(
const RTI::AttributeHandleValueMap& map);
246 static int bufferSizeOfMap(
const RTI::ParameterHandleValueMap& map);
248 static int bufferSizeOfSet(
const RTI::ParameterHandleValuePairSet&
set);
249 static int bufferSizeOfSet(
const RTI::AttributeHandleValuePairSet&
set);
251 static int bufferSizeOfMap(
const DtLgrHandleValueMap& map);
252 static int bufferSizeOfMap(
const DtLgrHandleValueReferenceMap& map);
254 static int bufferSizeOfRegionDimensionSet(
const DtDimensionDescSet&
set );
255 static int bufferSizeOfRegionDescriptorSet(
const DtRegionDescSet&
set );
258 static void getRegionExtents(
const char* data,
259 DtExtentDescSet& extentSet,
unsigned int numExtents, std::set<DtString>* dimensionNameSet=0);
263 static bool decodeDDMRegion(
const DtNetDDMRegionHeader *regionHeader, DtRegionDesc& regionDesc);
266 static void updateRegion(DtDDMRegionSP region, DtExtentDescSet& extentSet);
272 static DtDDMRegionSP decodeAndCreateDDMRegion(
const DtNetDDMRegionHeader *regionHeader,
273 const DtExerciseConn *exerciseConn, DtIDRegionMap* regionCache=0,
bool updateRegionExtents=
false );
275 static bool readFromBufferToMap(DtLgrHandleValueMap& map,
276 const void* buffer,
unsigned int memorySize,
int numItems);
278 static bool readFromBufferToMap(DtLgrHandleValueReferenceMap& map,
279 const void* buffer,
unsigned int memorySize,
int numItems);
281 static bool readFromMapToBuffer(
const DtLgrHandleValueMap& map,
282 void* buffer,
unsigned int memorySize);
284 static bool readFromMapToBuffer(
const DtLgrHandleValueReferenceMap& map,
285 void* buffer,
unsigned int memorySize);
291 static bool readFromRegionSetToBuffer(
const DtRegionDescSet& rset,
292 void *buffer,
unsigned int memorySize );