VR-Link API Documentation for HLA Evolved
tEntityInterface.h
Go to the documentation of this file.
1 //********************************************************************
4 //********************************************************************
5 //********************************************************************
7 //********************************************************************
8 #ifndef tEntityInterface_H_
9 #define tEntityInterface_H_
10 
14 
15 #if DtTENA
16 
17 #include "coLromMapExport.h"
18 #include <vl/tObjectInterface.h>
19 #include <vl/tReflectedEnt.h>
20 #include <vl/entitySR.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>
29 
30 #include <TENA/PlatformDetails/Proxy.h>
31 #include <TENA/PlatformDetails/ProxyPtr.h>
32 #include <TENA/PlatformDetails/ServantPtr.h>
33 #include <TENA/PlatformDetails/Servant.h>
34 
35 #include <TENA/GeocentricSpatialReferenceFrame/Pointer.h>
36 #include <vlpi/entityType.h>
37 #include <vl/globalObjDes.h>
38 
39 #include <map>
40 #include <list>
41 
47 class DT_DLL_COMMONLROM DtEntityInterface: public DtObjectInterface
48 {
49 protected:
50 
54  class DtEntityServantObject : public DtTenaServantObject
55  {
56  public:
58  DtEntityServantObject( TENA::Platform::ServantPtr sp,
59  TENA::PlatformDetails::ServantPtr dp):
60  myServantPtr(sp),
61  myDetailsServantPtr(dp){}
62 
64  virtual ~DtEntityServantObject() {}
65 
67  virtual const TENA::Platform::ServantPtr servant() const { return myServantPtr;}
68 
70  virtual TENA::Platform::ServantPtr servant() { return myServantPtr;}
71 
73  virtual const TENA::PlatformDetails::ServantPtr detailsServant() const
74  { return myDetailsServantPtr; }
75 
77  virtual TENA::PlatformDetails::ServantPtr detailsServant()
78  { return myDetailsServantPtr;}
79 
80  protected:
81  TENA::Platform::ServantPtr myServantPtr;
82  TENA::PlatformDetails::ServantPtr myDetailsServantPtr;
83  };
84 
85 
86 public:
87 
89  DtEntityInterface(DtExerciseConn* exConn);
90 
92  virtual ~DtEntityInterface();
93 
94 private:
95 
97  DtEntityInterface(const DtEntityInterface &other);
98 
100  DtEntityInterface& operator=(const DtEntityInterface &other);
101 
102 public:
103 
107  virtual DtTenaServantObject* createServantObject(DtExerciseConn* exConn);
108 
110  virtual void processServantCleanup(DtTenaServantObject* servant);
111 
113  virtual void subscribe();
114 
119  virtual bool needUpdate(const DtStateRepository& stateRep,
120  const DtStateRepository& asSeenByRemote,
121  bool useThresholding = true);
122 
123 
125  virtual void decode(const DtTenaServantObject* servant,
126  DtStateRepository* stateRep)const;
127 
130  virtual void encode(DtTenaServantObject* servant,
131  const DtStateRepository* stateRep,
132  TENA::Time::Pointer timeForStamping,
133  bool forceUpdate = false);
134 
136  virtual DtReflectedObject *createReflectedObject()const;
137 
139  virtual void processAddition(TENA::Platform::ProxyPtr const &proxy);
140 
142  virtual void processUpdate(TENA::Platform::ProxyPtr const &proxy);
143 
145  virtual void processRemoval(TENA::Platform::ProxyPtr const &proxy);
146 
148  virtual void processAddition(TENA::PlatformDetails::ProxyPtr const &proxy);
149 
151  virtual void processUpdate(TENA::PlatformDetails::ProxyPtr const &proxy);
152 
154  virtual void processRemoval(TENA::PlatformDetails::ProxyPtr const &proxy);
155 
156 protected:
158  virtual void decode(const TENA::Platform::ImmutablePublicationStatePtr pubStatePtr,
159  DtStateRepository* stateRep)const;
160 
162  virtual void decodeDetails(const TENA::PlatformDetails::ImmutablePublicationStatePtr pubStatePtr,
163  DtStateRepository* stateRep) const;
164 
166  virtual bool needDetailsUpdate(const DtEntityStateRepository& stateRep,
167  const DtEntityStateRepository& asSeenByRemote);
168 
170  virtual void encodeDetails(DtTenaServantObject* servant,
171  const DtEntityStateRepository* esr,
172  TENA::Time::Pointer timeForStamping) const;
173 
178  virtual void checkForWaitingDetails(TENA::Platform::ProxyPtr const &proxy);
179 
180  virtual DtForceType tenaForceToVrlinkForce(TENA::Force tenaForce) const;
181  virtual TENA::Force vrlinkForceToTenaForce(DtForceType vrlinkForce) const;
182 protected:
183 
185  TENA::GeocentricSpatialReferenceFrame::Pointer myGeocSRF;
186 
187  TENA::Platform::SubscriptionInfoPtr mySubscriptionInfoPtr;
188  TENA::PlatformDetails::SubscriptionInfoPtr myDetailsSubscriptionInfoPtr;
189 
190  typedef std::map<TENA::Platform::ProxyPtr, DtReflectedObject *> PlatProxyToRefObjMap;
191  typedef std::map<TENA::PlatformDetails::ProxyPtr, DtReflectedObject*> DetailsProxyToRefObjMap;
192  PlatProxyToRefObjMap myRefEntMap;
193  DetailsProxyToRefObjMap myRefDetailsMap;
194 
195  PlatProxyToRefObjMap myEntityWaitList;
196  std::list<TENA::PlatformDetails::ProxyPtr> myDetailsWaitList;
197  bool myNeedPlatformUpdate;
198  bool myNeedDetailsUpdate;
199 };
200 
201 
202 #endif
203 #endif
204 
205 
206 

Document ID: Generated on Wed Aug 14 15:35:11 EDT 2013 from SVN revision 130445
Copyright © 2005-2013 VT MÄK. All Rights Reserved (www.mak.com)