hlaMessageFactory.h
Go to the documentation of this file.
00001 /******************************************************************************
00002 ** Copyright (c) 1992-2010 VT MAK
00003 ** All rights reserved.
00004 ******************************************************************************/
00005 
00008 
00009 #ifndef hlaMessageFactory_H_
00010 #define hlaMessageFactory_H_
00011 
00012 #if DtHLA
00013 
00014 #include "lgrSim.h"
00015 #include "hlaTimeStampedAttr.h"
00016 #include "lgrHlaAttribute.h"
00017 #include "lgrHlaNetStructures.h"
00018 #include "subscriptionListFile.h"
00019 
00020 #include <list>
00021 #include <utility>
00022 #include <vlutil/vlNetTypes.h>
00023 
00024 #include <vl/rtiCompatibility.h>
00025 #include <vl/hlaObj.h>
00026 
00027 namespace MAKLogger
00028 {
00029 
00030    class DtPacket;
00031    class DtAbsoluteTime;
00032 
00033 #ifdef DtHLA_1516
00034 
00035    typedef DtString DtRegionID;
00036 #else
00037    typedef RTI::RegionToken DtRegionID;
00038 #endif
00039 
00040    typedef DtSubscriptionListFile::DimensionDesc DtDimensionDesc;
00041    typedef DtSubscriptionListFile::ExtentDesc DtExtentDesc;
00042    typedef DtSubscriptionListFile::RegionDesc DtRegionDesc;
00043    typedef std::set<DtRegionDesc> DtRegionDescSet;
00044    typedef std::set<DtDimensionDesc> DtDimensionDescSet;
00045    typedef std::set<DtExtentDesc> DtExtentDescSet;
00046    typedef std::set<DtRegionID> DtRegionIDSet;
00047    typedef std::map<DtRegionID,DtDDMRegionSP> DtIDRegionMap;
00048 
00051    class DT_DLL_LGRSIM DtLgrHlaMessageFactory
00052    {
00053    public:
00055       static DtLgrHlaHandle decodeObjectHandle(const DtPacket* packet);
00056 
00058       static void setObjectHandle(DtPacket* packet,DtLgrHlaHandle handle);
00059 
00061       static DtLgrHlaHandle decodeObjectClassHandle(const DtPacket* packet);
00062 
00064       static void decodeRegionID( const DtNetDDMRegionHeader *regionHeader, DtRegionID& regionID, unsigned int index /* = 0 */ );
00065 
00068       static bool decodeInteractionRegionID( const DtPacket *packet, DtRegionID& regionID, unsigned int index = 0);
00069 
00072       static bool decodeObjectRegionID( const DtPacket *packet, DtRegionID& regionID, unsigned int index = 0 );
00073 
00075       static void decodeRegionIdSet( const DtNetDDMRegionHeader *regionHeader, unsigned int numRegions, DtRegionIDSet& regionIDSet );
00076 
00079       static unsigned int decodeObjectRegionIdSet( const DtPacket *packet, DtRegionIDSet& regionIDSet );
00080 
00083       static unsigned int decodeInteractionRegionIdSet( const DtPacket *packet, DtRegionIDSet& regionIDSet );
00084 
00086       static void setObjectClassHandle( DtPacket* packet, DtLgrHlaHandle handle);
00087 
00089       static const char* decodeObjectName(const DtPacket* packet,int& length);
00090 
00092       static const char* decodeObjectTag(const DtPacket* packet,int& length);
00093 
00095       static const char* decodeInteractionTag(const DtPacket* packet,int& length);
00096 
00097       static DtLgrHlaHandle decodeInteractionClassHandle(const DtPacket* packet);
00098 
00099       static void setInteractionClassHandle( DtPacket* packet,DtLgrHlaHandle handle);
00100 
00102       static DtPacket* encodeUpdate( const DtAbsoluteTime& time,
00103          DtLgrHlaHandle objectHandle,
00104          DtLgrHlaHandle classHandle,
00105          const DtLgrHandleValueReferenceMap& referenceMap,
00106          const DtString& objectName,
00107          const DtLgrValueReference& tag );
00108 
00110       static DtPacket* encodeUpdate( const DtAbsoluteTime& time,
00111          DtLgrHlaHandle objectHandle,
00112          DtLgrHlaHandle classHandle,
00113          const DtLgrHandleValueReferenceMap& referenceMap,
00114          const DtString& objectName,
00115          const DtLgrValueReference& tag,
00116          const DtRegionDescSet& regionDescSet );
00117 
00119       static DtPacket* encodeUpdates(const DtAbsoluteTime& time,
00120          const DtTimedHandleValueMapList& outputList, DtLgrHlaHandle objectHandle,
00121          DtLgrHlaHandle classHandle, const DtString& objectName);
00122 
00123 
00124 
00126       static DtTimedHandleValueMapList* decodeUpdates(const DtPacket* packet);
00127 
00128       static DtPacket* encodeRemoval(DtAbsoluteTime time,DtLgrHlaHandle objectId,
00129          DtLgrHlaHandle classHandle,   DtString name,DtString tag);
00130 
00133       static size_t calculateInteractionSize(
00134          const DtLgrHandleValueReferenceMap& parameters,
00135          const DtLgrValueReference& tag);
00136 
00139       static size_t calculateInteractionSize(
00140          const DtLgrHandleValueReferenceMap& parameters,
00141          const DtLgrValueReference& tag,
00142          const DtRegionDescSet& regionDescSet 
00143       );
00144 
00147       static void encodeInteraction(DtPacket&,
00148          DtLgrHlaHandle classHandle,
00149          const DtLgrHandleValueReferenceMap& parameters,
00150          const DtLgrValueReference& tag
00151          );
00152 
00156       static void encodeInteraction(DtPacket&,
00157          DtLgrHlaHandle classHandle,
00158          const DtLgrHandleValueReferenceMap& parameters,
00159          const DtLgrValueReference& tag,
00160          const DtRegionDescSet& regionDescSet
00161          );
00162 
00163       static DtLgrHandleValueMap* decodeParameterHandleValues(const DtPacket* packet);
00164       static DtLgrHandleValueReferenceMap* decodeParameterReferences(const DtPacket* packet);
00165 
00166       static void decodeParameterHandles(const DtPacket* packet,std::vector<DtLgrHlaHandle>& handles);
00167       static void setParameterHandles(DtPacket* packet,const std::vector<DtLgrHlaHandle>& handles);
00168 
00169       static DtLgrHandleValueMap* decodeAttributeHandleValues(const DtPacket* packet);
00170       static DtLgrHandleValueReferenceMap* decodeAttributeReferences(const DtPacket* packet);
00171 
00172       static void decodeAttributeHandles(const DtPacket* packet,std::vector<DtLgrHlaHandle>& handles);
00173       static void setAttributeHandles(DtPacket* packet,const std::vector<DtLgrHlaHandle>& handles);
00174 
00178       static DtDDMRegionSP decodeInteractionDDMRegion( const DtPacket *packet,
00179          const DtExerciseConn *exerciseConn, unsigned int index=0,
00180          DtIDRegionMap* regionCache=0, bool updateRegionExtents=false);
00181 
00185       static DtDDMRegionSP decodeObjectDDMRegion( const DtPacket *packet,
00186          const DtExerciseConn *exerciseConn, unsigned int index=0,
00187          DtIDRegionMap* regionCache=0, bool updateRegionExtents=false);
00188 
00193       static unsigned int decodeInteractionDDMRegionSet( const DtPacket *packet,
00194          const DtExerciseConn *exerciseConn, DtDDMRegionSet& regionSet,
00195          DtIDRegionMap* regionCache=0, bool updateRegionExtents=false );
00196 
00201       static unsigned int decodeObjectDDMRegionSet( const DtPacket *packet,
00202          const DtExerciseConn *exerciseConn, DtDDMRegionSet& regionSet,
00203          DtIDRegionMap* regionCache=0, bool updateRegionExtents=false );
00204 
00207       static unsigned int decodeInteractionDDMRegionDescSet( const DtPacket *packet,
00208          DtRegionDescSet& regionSet );
00209 
00212       static unsigned int decodeObjectDDMRegionDescSet( const DtPacket *packet,
00213          DtRegionDescSet& regionSet );
00214 
00215    protected:
00216 
00217 #if DtHLA_1516
00218       static int bufferSizeOfMap(const RTI::AttributeHandleValueMap& map);
00219       static int bufferSizeOfMap(const RTI::ParameterHandleValueMap& map);
00220 #else
00221       static int bufferSizeOfSet(const RTI::ParameterHandleValuePairSet& set);
00222       static int bufferSizeOfSet(const RTI::AttributeHandleValuePairSet& set);
00223 #endif
00224       static int bufferSizeOfMap(const DtLgrHandleValueMap& map);
00225       static int bufferSizeOfMap(const DtLgrHandleValueReferenceMap& map);
00226 
00227       static int bufferSizeOfRegionDimensionSet( const DtDimensionDescSet& set );
00228       static int bufferSizeOfRegionDescriptorSet( const DtRegionDescSet& set );
00229 
00230 /*
00231       static bool readFromSetToBuffer(const RTI::ParameterHandleValuePairSet& set,void* memory,unsigned int memorySize);
00232       static bool readFromSetToBuffer(const RTI::AttributeHandleValuePairSet& set,void* memory,unsigned int memorySize);
00233 
00234       static bool readFromBufferToSet(DtLgrHandleValueMap& set,const void* memory,unsigned int memorySize, int numItems);
00235       static bool readFromBufferToSet(RTI::AttributeHandleValuePairSet& set,const void* memory,unsigned int memorySize, int numItems);
00236 
00237 */
00238 
00240       static void getRegionExtents(const char* data,
00241          DtExtentDescSet& extentSet, unsigned int numExtents, std::set<DtString>* dimensionNameSet=0);
00242 
00245       static bool decodeDDMRegion( const DtNetDDMRegionHeader *regionHeader, DtRegionDesc& regionDesc);
00246 
00248       static void updateRegion(DtDDMRegionSP region, DtExtentDescSet& extentSet);
00249 
00254       static DtDDMRegionSP decodeAndCreateDDMRegion( const DtNetDDMRegionHeader *regionHeader,
00255          const DtExerciseConn *exerciseConn, DtIDRegionMap* regionCache=0, bool updateRegionExtents=false );
00256 
00257       static bool readFromBufferToMap(DtLgrHandleValueMap& map,
00258          const void* buffer,unsigned int memorySize, int numItems);
00259 
00260       static bool readFromBufferToMap(DtLgrHandleValueReferenceMap& map,
00261          const void* buffer,unsigned int memorySize, int numItems);
00262 
00263       static bool readFromMapToBuffer(const DtLgrHandleValueMap& map,
00264          void* buffer,unsigned int memorySize);
00265 
00266       static bool readFromMapToBuffer(const DtLgrHandleValueReferenceMap& map,
00267          void* buffer,unsigned int memorySize);
00268 
00270       //static bool readFromRegionSetToBuffer( const DtDimensionDescSet& set,
00272 
00273       static bool readFromRegionSetToBuffer( const DtRegionDescSet& rset,
00274          void *buffer, unsigned int memorySize );
00275 
00276    };
00277 
00283 
00289 
00290 
00302 
00303 }
00304 
00305 #endif
00306 #endif

Document ID: Generated on Tue Oct 11 19:41:03 EDT 2011 from SVN revision 107422
Copyright © 2005-2011 VT MÄK Inc. All Rights Reserved (www.mak.com)