![]() |
VR-Link API Documentation for HLA 1.3
|
00001 //******************************************************************** 00004 //******************************************************************** 00005 //******************************************************************** 00007 //******************************************************************** 00008 #ifndef tEnvProcInterface_H_ 00009 #define tEnvProcInterface_H_ 00010 00014 00015 #if DtTENA 00016 00017 #include "makLromMapExport.h" 00018 #include <vlutil/vlMachineTypes.h> 00019 #include <vl/tObjectInterface.h> 00020 #include <vl/envProcessSR.h> 00021 #include <vl/globalObjDes.h> 00022 00024 #include <MAK/EnvironmentProcess/ServantPtr.h> 00025 #include <MAK/EnvironmentProcess/ProxyPtr.h> 00026 #include <MAK/EnvironmentProcess/ImmutablePublicationStatePtr.h> 00027 #include <MAK/EnvironmentProcess/SubscriptionInfoPtr.h> 00028 00029 #include <map> 00030 #include <list> 00031 00032 00039 class DT_DLL_MAKLROM DtEnvironmentProcessInterface: public DtObjectInterface 00040 { 00041 protected: 00044 class DtEnvironmentProcessServantObject : public DtTenaServantObject 00045 { 00046 public: 00048 DtEnvironmentProcessServantObject( MAK::EnvironmentProcess::ServantPtr sp):myServantPtr(sp){} 00049 00051 virtual ~DtEnvironmentProcessServantObject() {} 00052 00054 virtual const MAK::EnvironmentProcess::ServantPtr servant() const { return myServantPtr;} 00055 00057 virtual MAK::EnvironmentProcess::ServantPtr servant() { return myServantPtr;} 00058 00059 protected: 00060 MAK::EnvironmentProcess::ServantPtr myServantPtr; 00061 }; 00062 00063 public: 00065 DtEnvironmentProcessInterface(DtExerciseConn* exConn); 00066 00068 virtual ~DtEnvironmentProcessInterface(); 00069 00070 private: 00072 DtEnvironmentProcessInterface(const DtEnvironmentProcessInterface &other); 00073 00075 DtEnvironmentProcessInterface& operator=(const DtEnvironmentProcessInterface &other); 00076 00077 public: 00080 virtual DtTenaServantObject* createServantObject(DtExerciseConn* exConn); 00081 00083 virtual void processServantCleanup(DtTenaServantObject* servantObject); 00084 00086 virtual void subscribe(); 00087 00089 virtual bool needUpdate(const DtStateRepository& stateRep, 00090 const DtStateRepository& asSeenByRemote, 00091 bool useThresholding = true); 00092 00094 virtual void decode(const DtTenaServantObject* servant, 00095 DtStateRepository* stateRep)const; 00096 00098 virtual void encode(DtTenaServantObject* servant, 00099 const DtStateRepository* stateRep, 00100 TENA::Time::Pointer timeForStamping, 00101 bool forceUpdate = false); 00102 00104 virtual DtReflectedObject *createReflectedObject()const; 00105 00107 virtual void processAddition(MAK::EnvironmentProcess::ProxyPtr const &proxy); 00108 00110 virtual void processUpdate(MAK::EnvironmentProcess::ProxyPtr const &proxy); 00111 00113 virtual void processRemoval(MAK::EnvironmentProcess::ProxyPtr const &proxy); 00114 00115 00116 protected: 00118 virtual void decode(const MAK::EnvironmentProcess::ImmutablePublicationStatePtr pubStatePtr, 00119 DtStateRepository* stateRep)const; 00120 00121 protected: 00122 00124 MAK::EnvironmentProcess::SubscriptionInfoPtr mySubscriptionInfoPtr; 00125 typedef std::map<MAK::EnvironmentProcess::ProxyPtr, DtReflectedObject *> ProxyToRefObjMap; 00126 ProxyToRefObjMap myRefEnvironmentProcessMap; 00127 ProxyToRefObjMap myEnvProcWaitList; 00128 00129 }; 00130 00131 00132 #endif 00133 #endif 00134 00135 00136