onlineFomDesc.h
Go to the documentation of this file.
00001 /******************************************************************************
00002 ** Copyright (c) 1992-2010 VT MAK
00003 ** All rights reserved.
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

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)