8 #ifndef tEntityInterface_H_
9 #define tEntityInterface_H_
21 #include <TENA/Time/Pointer.h>
22 #include <TENA/GeocentricSpatialReferenceFrame/Pointer.h>
23 #include <TENA/UniqueID/Includes.h>
24 #include <TENA/PlatformType/Includes.h>
25 #include <TENA/Platform/Proxy.h>
26 #include <TENA/Platform/ProxyPtr.h>
27 #include <TENA/Platform/ServantPtr.h>
28 #include <TENA/Platform/Servant.h>
30 #include <TENA/PlatformDetails/Proxy.h>
31 #include <TENA/PlatformDetails/ProxyPtr.h>
32 #include <TENA/PlatformDetails/ServantPtr.h>
33 #include <TENA/PlatformDetails/Servant.h>
35 #include <TENA/GeocentricSpatialReferenceFrame/Pointer.h>
54 class DtEntityServantObject :
public DtTenaServantObject
58 DtEntityServantObject( TENA::Platform::ServantPtr sp,
59 TENA::PlatformDetails::ServantPtr dp):
61 myDetailsServantPtr(dp){}
64 virtual ~DtEntityServantObject() {}
67 virtual const TENA::Platform::ServantPtr servant()
const {
return myServantPtr;}
70 virtual TENA::Platform::ServantPtr servant() {
return myServantPtr;}
73 virtual const TENA::PlatformDetails::ServantPtr detailsServant()
const
74 {
return myDetailsServantPtr; }
77 virtual TENA::PlatformDetails::ServantPtr detailsServant()
78 {
return myDetailsServantPtr;}
81 TENA::Platform::ServantPtr myServantPtr;
82 TENA::PlatformDetails::ServantPtr myDetailsServantPtr;
92 virtual ~DtEntityInterface();
97 DtEntityInterface(
const DtEntityInterface &other);
100 DtEntityInterface& operator=(
const DtEntityInterface &other);
107 virtual DtTenaServantObject* createServantObject(
DtExerciseConn* exConn);
110 virtual void processServantCleanup(DtTenaServantObject* servant);
113 virtual void subscribe();
121 bool useThresholding =
true);
125 virtual void decode(
const DtTenaServantObject* servant,
130 virtual void encode(DtTenaServantObject* servant,
132 TENA::Time::Pointer timeForStamping,
133 bool forceUpdate =
false);
139 virtual void processAddition(TENA::Platform::ProxyPtr
const &proxy);
142 virtual void processUpdate(TENA::Platform::ProxyPtr
const &proxy);
145 virtual void processRemoval(TENA::Platform::ProxyPtr
const &proxy);
148 virtual void processAddition(TENA::PlatformDetails::ProxyPtr
const &proxy);
151 virtual void processUpdate(TENA::PlatformDetails::ProxyPtr
const &proxy);
154 virtual void processRemoval(TENA::PlatformDetails::ProxyPtr
const &proxy);
158 virtual void decode(
const TENA::Platform::ImmutablePublicationStatePtr pubStatePtr,
162 virtual void decodeDetails(
const TENA::PlatformDetails::ImmutablePublicationStatePtr pubStatePtr,
170 virtual void encodeDetails(DtTenaServantObject* servant,
172 TENA::Time::Pointer timeForStamping)
const;
178 virtual void checkForWaitingDetails(TENA::Platform::ProxyPtr
const &proxy);
180 virtual DtForceType tenaForceToVrlinkForce(TENA::Force tenaForce)
const;
181 virtual TENA::Force vrlinkForceToTenaForce(
DtForceType vrlinkForce)
const;
185 TENA::GeocentricSpatialReferenceFrame::Pointer myGeocSRF;
187 TENA::Platform::SubscriptionInfoPtr mySubscriptionInfoPtr;
188 TENA::PlatformDetails::SubscriptionInfoPtr myDetailsSubscriptionInfoPtr;
190 typedef std::map<TENA::Platform::ProxyPtr, DtReflectedObject *> PlatProxyToRefObjMap;
191 typedef std::map<TENA::PlatformDetails::ProxyPtr, DtReflectedObject*> DetailsProxyToRefObjMap;
192 PlatProxyToRefObjMap myRefEntMap;
193 DetailsProxyToRefObjMap myRefDetailsMap;
195 PlatProxyToRefObjMap myEntityWaitList;
196 std::list<TENA::PlatformDetails::ProxyPtr> myDetailsWaitList;
197 bool myNeedPlatformUpdate;
198 bool myNeedDetailsUpdate;