18 #include <vl/globalObjectDesignator.h>
20 #include <vl/entityStateRepository.h>
21 #include <vlpi/entityType.h>
23 #include <TENA/GeocentricSpatialReferenceFrame/Pointer.h>
24 #include <TENA/PlatformDetails/ServantPtr.h>
25 #include <TENA/PlatformDetails/ProxyPtr.h>
26 #include <TENA/PlatformDetails/Servant.h>
27 #include <TENA/PlatformDetails/Proxy.h>
28 #include <TENA/PlatformType/Includes.h>
29 #include <TENA/Platform/ServantPtr.h>
30 #include <TENA/Platform/ProxyPtr.h>
31 #include <TENA/Platform/Servant.h>
32 #include <TENA/Platform/Proxy.h>
33 #include <TENA/UniqueID/Includes.h>
34 #include <TENA/Time/Pointer.h>
39 namespace MAKVrExchange
42 namespace DtTenaBroker
57 class DtEntityServantObject :
public DtTenaServantObject
61 DtEntityServantObject( TENA::Platform::ServantPtr sp,
62 TENA::PlatformDetails::ServantPtr dp):
64 myDetailsServantPtr(dp){}
67 virtual ~DtEntityServantObject() {}
70 virtual const TENA::Platform::ServantPtr servant()
const {
return myServantPtr;}
73 virtual TENA::Platform::ServantPtr servant() {
return myServantPtr;}
76 virtual const TENA::PlatformDetails::ServantPtr detailsServant()
const
77 {
return myDetailsServantPtr; }
80 virtual TENA::PlatformDetails::ServantPtr detailsServant()
81 {
return myDetailsServantPtr;}
84 TENA::Platform::ServantPtr myServantPtr;
85 TENA::PlatformDetails::ServantPtr myDetailsServantPtr;
92 DtEntityInterface(DtExerciseConn* exConn);
95 virtual ~DtEntityInterface();
102 virtual DtTenaServantObject* createServantObject(DtExerciseConn* exConn);
105 virtual void processServantCleanup(DtTenaServantObject* servant);
108 virtual void subscribe();
114 virtual bool needUpdate(
const DtStateRepository& stateRep,
115 const DtStateRepository& asSeenByRemote,
116 bool useThresholding =
true);
120 virtual void decode(
const DtTenaServantObject* servant,
121 DtStateRepository* stateRep)
const;
125 virtual void encode(DtTenaServantObject* servant,
126 const DtStateRepository* stateRep,
127 TENA::Time::Pointer timeForStamping,
128 bool forceUpdate =
false);
131 virtual DtReflectedObject *createReflectedObject()
const;
134 virtual void processAddition(TENA::Platform::ProxyPtr
const &proxy);
137 virtual void processUpdate(TENA::Platform::ProxyPtr
const &proxy);
140 virtual void processRemoval(TENA::Platform::ProxyPtr
const &proxy);
143 virtual void processAddition(TENA::PlatformDetails::ProxyPtr
const &proxy);
146 virtual void processUpdate(TENA::PlatformDetails::ProxyPtr
const &proxy);
149 virtual void processRemoval(TENA::PlatformDetails::ProxyPtr
const &proxy);
154 virtual void decode(
const TENA::Platform::ImmutablePublicationStatePtr pubStatePtr,
155 DtStateRepository* stateRep )
const;
158 virtual void decodeDetails(
const TENA::PlatformDetails::ImmutablePublicationStatePtr pubStatePtr,
159 DtStateRepository* stateRep )
const;
162 virtual bool needDetailsUpdate(
const DtEntityStateRepository& stateRep,
163 const DtEntityStateRepository& asSeenByRemote );
166 virtual void encodeDetails(DtTenaServantObject* servant,
167 const DtEntityStateRepository* esr, TENA::Time::Pointer timeForStamping )
const;
173 virtual void checkForWaitingDetails( TENA::Platform::ProxyPtr
const& proxy );
175 virtual DtForceType tenaForceToVrlinkForce( TENA::Force tenaForce )
const;
176 virtual TENA::Force vrlinkForceToTenaForce( DtForceType vrlinkForce )
const;
181 DtEntityInterface(
const DtEntityInterface &other);
184 DtEntityInterface& operator=(
const DtEntityInterface &other);
189 TENA::GeocentricSpatialReferenceFrame::Pointer myGeocSRF;
191 TENA::Platform::SubscriptionInfoPtr mySubscriptionInfoPtr;
192 TENA::PlatformDetails::SubscriptionInfoPtr myDetailsSubscriptionInfoPtr;
194 typedef std::map<TENA::Platform::ProxyPtr, DtReflectedObject *> PlatProxyToRefObjMap;
195 typedef std::map<TENA::PlatformDetails::ProxyPtr, DtReflectedObject*> DetailsProxyToRefObjMap;
196 PlatProxyToRefObjMap myRefEntMap;
197 DetailsProxyToRefObjMap myRefDetailsMap;
199 PlatProxyToRefObjMap myEntityWaitList;
200 std::list<TENA::PlatformDetails::ProxyPtr> myDetailsWaitList;
201 bool myNeedPlatformUpdate;
202 bool myNeedDetailsUpdate;