![]() |
MAK RTIspy API Documentation for HLA 1516
|
00001 /********************************************************************* 00002 ** Copyright(c) 2001 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 *********************************************************************/ 00005 /********************************************************************* 00006 ** $RCSfile: momSR.h,v $ $Revision: 1.21 $ $State: Exp $ 00007 *********************************************************************/ 00008 #ifdef DtMOM 00009 00010 00011 00012 #ifndef DtMomSR_H_ 00013 #define DtMomSR_H_ 00014 00015 #include <vlutil/vlHashlist.h> 00016 #include "momInspector.h" 00017 #include "momElement.h" 00018 #include "objMgr.h" 00019 00020 #if defined(DtIFSPEC1516) || defined(DtIFSPEC1516E) 00021 #include <RTI/LogicalTime.h> 00022 #include <RTI/LogicalTimeInterval.h> 00023 #else 00024 #ifdef DtIFSPEC13DLC 00025 #include "RTI13.h" 00026 #define RTI rti13 00027 #else 00028 #include "RTI.hh" 00029 #endif 00030 #endif 00031 00032 enum DT_DLL_LRC DtMomUpdateType 00033 { 00034 DtMomUpdateStatic, 00035 DtMomUpdateConditional, 00036 DtMomUpdatePeriodic 00037 }; 00038 00039 class DtFomClassMgr; 00040 class DtMomInspector; 00041 class DtMomHandleList; 00042 class DtAhvps; 00043 00044 class DT_DLL_LRC DtMomSR 00045 { 00046 public: 00047 00049 DtMomSR(DtFomClassMgr* fomPtr, DtMomInspector* servicePtr, 00050 DtRtiObject* objPtr); 00051 00053 virtual ~DtMomSR(); 00054 00056 DtMomSR(const DtMomSR& orig); 00057 00059 DtMomSR& operator=(const DtMomSR& orig); 00060 00062 virtual void forceUpdate(DtAttributeHandleSet const & set); 00063 00067 virtual void putElement(char* name, DtMomElement element, 00068 DtMomUpdateType updateType); 00069 00071 virtual DtMomElement element(DtAttributeHandle attribute); 00072 00074 virtual DtAttributeHandle attribute(DtMomElement element); 00075 00077 virtual void encodeAttribute(DtAhvps* vp, DtAttributeHandle attribute) = 0; 00078 00080 virtual DtAttributeHandleSet const& updateAttributes() const; 00081 00083 virtual DtAttributeHandleSet const& fullAttributes() const; 00084 00086 virtual DtAttributeHandleSet const& conditionalAttributes() const; 00087 00089 virtual DtAttributeHandleSet const& periodicAttributes() const; 00090 00092 virtual DtAttributeHandleSet const& staticAttributes() const; 00093 00095 inline DtObjectInstanceHandle objectInstanceHandle() const; 00096 00097 protected: 00098 00100 virtual DtMomInspector* localService(); 00101 virtual DtMomInspector const * localService() const; 00102 00103 protected: 00104 00105 DtFomClassMgr* myFom; 00106 DtMomInspector* myService; 00107 DtRtiObject* myObject; 00108 DtHandle myPrivilege; 00109 DtHandle myClassHandle; 00110 MAKRti::DtHashList myElementMap; 00111 MAKRti::DtHashList myAttributeMap; 00112 DtUpdateType myUpdateType; 00113 DtAttributeHandleSet myUpdateAttributes; 00114 DtAttributeHandleSet myConditionalAttributes; 00115 DtAttributeHandleSet myPeriodicAttributes; 00116 DtAttributeHandleSet myStaticAttributes; 00118 DtAttributeHandleSet myFullAttributes; 00119 00120 #ifdef DtIFSPEC1516 00121 std::auto_ptr<rti1516::LogicalTime> myTime; 00122 std::auto_ptr<rti1516::LogicalTimeInterval> myInterval; 00123 #elif defined(DtIFSPEC1516E) 00124 std::auto_ptr<rti1516e::LogicalTime> myTime; 00125 std::auto_ptr<rti1516e::LogicalTimeInterval> myInterval; 00126 #else 00127 std::auto_ptr<RTI::FedTime> myTime; 00128 std::auto_ptr<RTI::FedTime> myInterval; 00129 #endif 00130 00131 }; 00132 00133 00134 inline DtObjectInstanceHandle DtMomSR::objectInstanceHandle() const 00135 { 00136 DtObjectInstanceHandle hdl = 0; 00137 if(myObject) 00138 { 00139 hdl = myObject->objHandle(); 00140 } 00141 return hdl; 00142 } 00143 00144 #endif 00145 #endif