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 decodeObjectHandle(
const DtPacket* packet);
58 static void setObjectHandle(DtPacket* packet,DtLgrHlaHandle handle);
61 static DtLgrHlaHandle decodeObjectClassHandle(
const DtPacket* packet);
64 static void decodeRegionID(
const DtNetDDMRegionHeader *regionHeader, DtRegionID& regionID,
unsigned int index );
68 static bool decodeInteractionRegionID(
const DtPacket *packet, DtRegionID& regionID,
unsigned int index = 0);
72 static bool decodeObjectRegionID(
const DtPacket *packet, DtRegionID& regionID,
unsigned int index = 0 );
75 static void decodeRegionIdSet(
const DtNetDDMRegionHeader *regionHeader,
unsigned int numRegions, DtRegionIDSet& regionIDSet );
79 static unsigned int decodeObjectRegionIdSet(
const DtPacket *packet, DtRegionIDSet& regionIDSet );
83 static unsigned int decodeInteractionRegionIdSet(
const DtPacket *packet, DtRegionIDSet& regionIDSet );
86 static void setObjectClassHandle( DtPacket* packet, DtLgrHlaHandle handle);
89 static const char* decodeObjectName(
const DtPacket* packet,
int& length);
92 static const char* decodeObjectTag(
const DtPacket* packet,
int& length);
95 static const char* decodeInteractionTag(
const DtPacket* packet,
int& length);
97 static DtLgrHlaHandle decodeInteractionClassHandle(
const DtPacket* packet);
99 static void setInteractionClassHandle( DtPacket* packet,DtLgrHlaHandle handle);
103 DtLgrHlaHandle objectHandle,
104 DtLgrHlaHandle classHandle,
105 const DtLgrHandleValueReferenceMap& referenceMap,
106 const DtString& objectName,
107 const DtLgrValueReference& tag );
111 DtLgrHlaHandle objectHandle,
112 DtLgrHlaHandle classHandle,
113 const DtLgrHandleValueReferenceMap& referenceMap,
114 const DtString& objectName,
115 const DtLgrValueReference& tag,
116 const DtRegionDescSet& regionDescSet );
120 const DtTimedHandleValueMapList& outputList, DtLgrHlaHandle objectHandle,
121 DtLgrHlaHandle classHandle,
const DtString& objectName);
126 static DtTimedHandleValueMapList* decodeUpdates(
const DtPacket* packet);
128 static DtPacket* encodeRemoval(
DtAbsoluteTime time,DtLgrHlaHandle objectId,
129 DtLgrHlaHandle classHandle, DtString name,DtString tag);
133 static size_t calculateInteractionSize(
134 const DtLgrHandleValueReferenceMap& parameters,
135 const DtLgrValueReference& tag);
139 static size_t calculateInteractionSize(
140 const DtLgrHandleValueReferenceMap& parameters,
141 const DtLgrValueReference& tag,
142 const DtRegionDescSet& regionDescSet
147 static void encodeInteraction(DtPacket&,
148 DtLgrHlaHandle classHandle,
149 const DtLgrHandleValueReferenceMap& parameters,
150 const DtLgrValueReference& tag
156 static void encodeInteraction(DtPacket&,
157 DtLgrHlaHandle classHandle,
158 const DtLgrHandleValueReferenceMap& parameters,
159 const DtLgrValueReference& tag,
160 const DtRegionDescSet& regionDescSet
163 static std::auto_ptr<DtLgrHandleValueMap> decodeParameterHandleValues(
const DtPacket* packet);
164 static std::auto_ptr<DtLgrHandleValueReferenceMap> decodeParameterReferences(
const DtPacket* packet);
166 static void decodeParameterHandles(
const DtPacket* packet,std::vector<DtLgrHlaHandle>& handles);
167 static void setParameterHandles(DtPacket* packet,
const std::vector<DtLgrHlaHandle>& handles);
169 static std::auto_ptr<DtLgrHandleValueMap> decodeAttributeHandleValues(
const DtPacket* packet);
170 static std::auto_ptr<DtLgrHandleValueReferenceMap> decodeAttributeReferences(
const DtPacket* packet);
172 static void decodeAttributeHandles(
const DtPacket* packet,std::vector<DtLgrHlaHandle>& handles);
173 static void setAttributeHandles(DtPacket* packet,
const std::vector<DtLgrHlaHandle>& handles);
178 static DtDDMRegionSP decodeInteractionDDMRegion(
const DtPacket *packet,
180 DtIDRegionMap* regionCache=0,
bool updateRegionExtents=
false);
185 static DtDDMRegionSP decodeObjectDDMRegion(
const DtPacket *packet,
187 DtIDRegionMap* regionCache=0,
bool updateRegionExtents=
false);
193 static unsigned int decodeInteractionDDMRegionSet(
const DtPacket *packet,
195 DtIDRegionMap* regionCache=0,
bool updateRegionExtents=
false );
201 static unsigned int decodeObjectDDMRegionSet(
const DtPacket *packet,
203 DtIDRegionMap* regionCache=0,
bool updateRegionExtents=
false );
207 static unsigned int decodeInteractionDDMRegionDescSet(
const DtPacket *packet,
208 DtRegionDescSet& regionSet );
212 static unsigned int decodeObjectDDMRegionDescSet(
const DtPacket *packet,
213 DtRegionDescSet& regionSet );
218 static int bufferSizeOfMap(
const RTI::AttributeHandleValueMap& map);
219 static int bufferSizeOfMap(
const RTI::ParameterHandleValueMap& map);
221 static int bufferSizeOfSet(
const RTI::ParameterHandleValuePairSet&
set);
222 static int bufferSizeOfSet(
const RTI::AttributeHandleValuePairSet&
set);
224 static int bufferSizeOfMap(
const DtLgrHandleValueMap& map);
225 static int bufferSizeOfMap(
const DtLgrHandleValueReferenceMap& map);
227 static int bufferSizeOfRegionDimensionSet(
const DtDimensionDescSet&
set );
228 static int bufferSizeOfRegionDescriptorSet(
const DtRegionDescSet&
set );
240 static void getRegionExtents(
const char* data,
241 DtExtentDescSet& extentSet,
unsigned int numExtents, std::set<DtString>* dimensionNameSet=0);
245 static bool decodeDDMRegion(
const DtNetDDMRegionHeader *regionHeader, DtRegionDesc& regionDesc);
248 static void updateRegion(DtDDMRegionSP region, DtExtentDescSet& extentSet);
254 static DtDDMRegionSP decodeAndCreateDDMRegion(
const DtNetDDMRegionHeader *regionHeader,
255 const DtExerciseConn *exerciseConn, DtIDRegionMap* regionCache=0,
bool updateRegionExtents=
false );
257 static bool readFromBufferToMap(DtLgrHandleValueMap& map,
258 const void* buffer,
unsigned int memorySize,
int numItems);
260 static bool readFromBufferToMap(DtLgrHandleValueReferenceMap& map,
261 const void* buffer,
unsigned int memorySize,
int numItems);
263 static bool readFromMapToBuffer(
const DtLgrHandleValueMap& map,
264 void* buffer,
unsigned int memorySize);
266 static bool readFromMapToBuffer(
const DtLgrHandleValueReferenceMap& map,
267 void* buffer,
unsigned int memorySize);
273 static bool readFromRegionSetToBuffer(
const DtRegionDescSet& rset,
274 void *buffer,
unsigned int memorySize );