![]() |
VR-Link API Documentation for HLA 1516
|
00001 //******************************************************************** 00004 //******************************************************************** 00005 //******************************************************************** 00007 //******************************************************************** 00008 00009 #ifndef tRadXmitInterface_H_ 00010 #define tRadXmitInterface_H_ 00011 00012 #if DtTENA 00013 00014 #include "makLromMapExport.h" 00015 #include <vlutil/vlMachineTypes.h> 00016 #include <vl/tObjectInterface.h> 00017 #include <vl/tReflRadXmitr.h> 00018 #include <vl/radioXmitSR.h> 00019 #include <vlpi/entityType.h> 00020 #include <vl/globalObjDes.h> 00021 00022 #include <MAK/RadioTransmitter/ServantPtr.h> 00023 #include <MAK/RadioTransmitter/ProxyPtr.h> 00024 #include <MAK/RadioTransmitter/ImmutablePublicationStatePtr.h> 00025 #include <MAK/RadioTransmitter/SubscriptionInfoPtr.h> 00026 00027 #include <map> 00028 #include <list> 00029 00033 00035 // 00042 class DT_DLL_MAKLROM DtRadioTransmitterInterface: public DtObjectInterface 00043 { 00044 protected: 00047 class DtRadioTransmitterServantObject : public DtTenaServantObject 00048 { 00049 public: 00051 DtRadioTransmitterServantObject( MAK::RadioTransmitter::ServantPtr sp):myServantPtr(sp){} 00052 00054 virtual ~DtRadioTransmitterServantObject() {} 00055 00057 virtual const MAK::RadioTransmitter::ServantPtr servant() const { return myServantPtr;} 00058 00060 virtual MAK::RadioTransmitter::ServantPtr servant() { return myServantPtr;} 00061 00062 protected: 00063 MAK::RadioTransmitter::ServantPtr myServantPtr; 00064 }; 00065 00066 public: 00068 DtRadioTransmitterInterface(DtExerciseConn* exConn); 00069 00071 virtual ~DtRadioTransmitterInterface(); 00072 00073 private: 00075 DtRadioTransmitterInterface(const DtRadioTransmitterInterface &other); 00076 00078 DtRadioTransmitterInterface& operator=(const DtRadioTransmitterInterface &other); 00079 00080 public: 00083 virtual DtTenaServantObject* createServantObject(DtExerciseConn* exConn); 00084 00086 virtual void processServantCleanup(DtTenaServantObject* servantObject); 00087 00089 virtual void subscribe(); 00090 00092 virtual bool needUpdate(const DtStateRepository& stateRep, 00093 const DtStateRepository& asSeenByRemote, 00094 bool useThresholding = true); 00095 00097 virtual void decode(const DtTenaServantObject* servant, 00098 DtStateRepository* stateRep)const; 00099 00101 virtual void encode(DtTenaServantObject* servant, 00102 const DtStateRepository* stateRep, 00103 TENA::Time::Pointer timeForStamping, 00104 bool forceUpdate = false); 00105 00107 virtual DtReflectedObject *createReflectedObject()const; 00108 00110 virtual void processAddition(MAK::RadioTransmitter::ProxyPtr const &proxy); 00111 00113 virtual void processUpdate(MAK::RadioTransmitter::ProxyPtr const &proxy); 00114 00116 virtual void processRemoval(MAK::RadioTransmitter::ProxyPtr const &proxy); 00117 00118 00119 protected: 00121 virtual void decode(const MAK::RadioTransmitter::ImmutablePublicationStatePtr pubStatePtr, 00122 DtStateRepository* stateRep)const; 00123 00124 protected: 00125 00127 MAK::RadioTransmitter::SubscriptionInfoPtr mySubscriptionInfoPtr; 00128 typedef std::map<MAK::RadioTransmitter::ProxyPtr, DtReflectedObject *> ProxyToRefObjMap; 00129 ProxyToRefObjMap myRefRadXmitMap; 00130 ProxyToRefObjMap myTransmitterWaitList; 00131 }; 00132 00133 00134 #endif 00135 #endif 00136 00137 00138