Go to the documentation of this file.00001
00002
00003
00004
00005
00009
00010 #ifndef onlineFomDesc_H_
00011 #define onlineFomDesc_H_
00012
00013 #if DtHLA
00014
00015 #include "baseFomDesc.h"
00016 #include "lgrHlaAttribute.h"
00017 #include "virtualConstructor.h"
00018
00019 #include <vl/rtiCompatibility.h>
00020 #include <vl/rtiNamespace.h>
00021 #include <set>
00022
00023 class DtExerciseConn;
00024 class DtObjClassDesc;
00025 class DtInterClassDesc;
00026 class DtFomMapper;
00027
00028 namespace MAKLogger
00029 {
00030
00034 class DT_DLL_LGRSIM DtLgrOnlineFomDesc : public DtBaseFomDesc
00035 {
00036 public:
00037
00039 DT_VIRTUAL_CTR_DEFAULTS(DtLgrOnlineFomDesc,
00040 (DtExerciseConn* exconn, const std::map<DtString, DtLgrSimDriver::HeartbeatTimeRecord>* heartbeatTimes,
00041 const std::map<DtString, DtLgrSimDriver::HeartbeatTimeRecord>* timeoutTimes),
00042 (DtExerciseConn* exconn, const std::map<DtString, DtLgrSimDriver::HeartbeatTimeRecord>* heartbeatTimes=0,
00043 const std::map<DtString, DtLgrSimDriver::HeartbeatTimeRecord>* timeoutTimes=0))
00044
00045
00046 DT_VIRTUAL_COPY_ASSIGN(DtLgrOnlineFomDesc)
00047
00048 virtual ~DtLgrOnlineFomDesc();
00049
00050 public:
00051
00053 inline RTI::RTIambassador* const rtiAmb() const;
00054
00056 virtual DtBaseObjClassDesc* addObjectClass(const DtBaseObjClassDesc&);
00057
00059 virtual DtBaseInterClassDesc* addInteractionClass(const DtBaseInterClassDesc&);
00060
00062
00063 virtual DtBaseObjClassDesc* objDesc(RTI::ObjectClassHandle);
00064 virtual const DtBaseObjClassDesc* objDesc(RTI::ObjectClassHandle) const;
00066
00068
00069 virtual DtBaseInterClassDesc* interDesc( RTI::InteractionClassHandle );
00070 virtual const DtBaseInterClassDesc* interDesc( RTI::InteractionClassHandle) const;
00072
00074 virtual bool isEntity(RTI::ObjectClassHandle handle) const;
00075
00077 virtual bool isAggregate(RTI::ObjectClassHandle handle ) const;
00078
00080 virtual double heartbeatTime(RTI::ObjectClassHandle handle ) const;
00081
00083 virtual double timeoutTime(RTI::ObjectClassHandle handle ) const;
00084
00085 protected:
00086
00088 void setFomMapperLists(DtFomMapper*);
00089
00091 void setFromFom( DtFom& fom );
00092
00094 virtual void deleteObjClasses();
00095
00097 virtual void deleteIntClasses();
00098
00100 void addObjectFromFom( DtObjClassDesc* dsc
00101 #if DtHLA_1516
00102 , DtDynamicBuffer &dynBfr, DtLgrHlaHandle objectHandle
00103 #endif
00104 );
00105
00107 void addInteractionFromFom( DtInterClassDesc* item
00108 #if DtHLA_1516
00109 , DtDynamicBuffer &dynBfr, DtLgrHlaHandle interHandle
00110 #endif
00111 );
00112
00113 #if DtHLA_1516
00114
00115 void addAttributeFromFom( RTI::AttributeHandleSet::const_iterator it,
00116 RTI::ObjectClassHandle handleObj, DtDynamicBuffer &dynBfr,
00117 size_t aHnd, DtBaseObjClassDesc* objDsc );
00118
00120 void addParameterFromFom( RTI::ParameterHandleSet::const_iterator it,
00121 RTI::InteractionClassHandle handleObj, DtDynamicBuffer &dynBfr,
00122 size_t pHnd, DtBaseInterClassDesc* intDsc );
00123 #endif
00124
00125 protected:
00126
00127 typedef std::map<DtLgrVariableLengthData,DtBaseObjClassDesc*> ObjectCodeMap;
00128 typedef std::map<DtLgrVariableLengthData,DtBaseInterClassDesc*> InteractionCodeMap;
00129
00130 ObjectCodeMap myObjectCodeLookupMap;
00131 InteractionCodeMap myInteractionCodeLookupMap;
00132
00133 typedef std::set<RTI::ObjectClassHandle> DtHandleSet;
00134 DtHandleSet myEntityClassHandles;
00135 DtHandleSet myAggregateClassHandles;
00136 std::map<RTI::ObjectClassHandle, double> myHandleHeartbeats;
00137 std::map<RTI::ObjectClassHandle, double> myHandleTimeouts;
00138
00139 RTI::RTIambassador* myRtiAmb;
00140 };
00141
00142 inline RTI::RTIambassador* const DtLgrOnlineFomDesc::rtiAmb() const
00143 {
00144 return myRtiAmb;
00145 }
00146
00147 }
00148
00149 #endif
00150
00151 #endif