VR-Exchange 2.6 API Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
entityInterface.h
Go to the documentation of this file.
1 /****************************************************************************
2  * Copyright (c) 2014 VT MAK
3  * All rights reserved.
4  ****************************************************************************/
5 
9 
10 #if DtTENA
11 
12 #pragma once
13 
15 
16 #include <vlTena/objectInterface.h>
17 #include <vlTena/reflectedEntity.h>
18 #include <vl/globalObjectDesignator.h>
19 
20 #include <vl/entityStateRepository.h>
21 #include <vlpi/entityType.h>
22 
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>
35 
36 #include <list>
37 #include <map>
38 
39 namespace MAKVrExchange
40 {
41 
42  namespace DtTenaBroker
43  {
44 
50  class DT_DLL_COMMONLROM DtEntityInterface: public DtObjectInterface
51  {
52  protected:
53 
57  class DtEntityServantObject : public DtTenaServantObject
58  {
59  public:
61  DtEntityServantObject( TENA::Platform::ServantPtr sp,
62  TENA::PlatformDetails::ServantPtr dp):
63  myServantPtr(sp),
64  myDetailsServantPtr(dp){}
65 
67  virtual ~DtEntityServantObject() {}
68 
70  virtual const TENA::Platform::ServantPtr servant() const { return myServantPtr;}
71 
73  virtual TENA::Platform::ServantPtr servant() { return myServantPtr;}
74 
76  virtual const TENA::PlatformDetails::ServantPtr detailsServant() const
77  { return myDetailsServantPtr; }
78 
80  virtual TENA::PlatformDetails::ServantPtr detailsServant()
81  { return myDetailsServantPtr;}
82 
83  protected:
84  TENA::Platform::ServantPtr myServantPtr;
85  TENA::PlatformDetails::ServantPtr myDetailsServantPtr;
86  };
87 
88 
89  public:
90 
92  DtEntityInterface(DtExerciseConn* exConn);
93 
95  virtual ~DtEntityInterface();
96 
97  public:
98 
102  virtual DtTenaServantObject* createServantObject(DtExerciseConn* exConn);
103 
105  virtual void processServantCleanup(DtTenaServantObject* servant);
106 
108  virtual void subscribe();
109 
114  virtual bool needUpdate(const DtStateRepository& stateRep,
115  const DtStateRepository& asSeenByRemote,
116  bool useThresholding = true);
117 
118 
120  virtual void decode(const DtTenaServantObject* servant,
121  DtStateRepository* stateRep)const;
122 
125  virtual void encode(DtTenaServantObject* servant,
126  const DtStateRepository* stateRep,
127  TENA::Time::Pointer timeForStamping,
128  bool forceUpdate = false);
129 
131  virtual DtReflectedObject *createReflectedObject()const;
132 
134  virtual void processAddition(TENA::Platform::ProxyPtr const &proxy);
135 
137  virtual void processUpdate(TENA::Platform::ProxyPtr const &proxy);
138 
140  virtual void processRemoval(TENA::Platform::ProxyPtr const &proxy);
141 
143  virtual void processAddition(TENA::PlatformDetails::ProxyPtr const &proxy);
144 
146  virtual void processUpdate(TENA::PlatformDetails::ProxyPtr const &proxy);
147 
149  virtual void processRemoval(TENA::PlatformDetails::ProxyPtr const &proxy);
150 
151  protected:
152 
154  virtual void decode( const TENA::Platform::ImmutablePublicationStatePtr pubStatePtr,
155  DtStateRepository* stateRep ) const;
156 
158  virtual void decodeDetails( const TENA::PlatformDetails::ImmutablePublicationStatePtr pubStatePtr,
159  DtStateRepository* stateRep ) const;
160 
162  virtual bool needDetailsUpdate( const DtEntityStateRepository& stateRep,
163  const DtEntityStateRepository& asSeenByRemote );
164 
166  virtual void encodeDetails(DtTenaServantObject* servant,
167  const DtEntityStateRepository* esr, TENA::Time::Pointer timeForStamping ) const;
168 
173  virtual void checkForWaitingDetails( TENA::Platform::ProxyPtr const& proxy );
174 
175  virtual DtForceType tenaForceToVrlinkForce( TENA::Force tenaForce ) const;
176  virtual TENA::Force vrlinkForceToTenaForce( DtForceType vrlinkForce ) const;
177 
178  private:
179 
181  DtEntityInterface(const DtEntityInterface &other);
182 
184  DtEntityInterface& operator=(const DtEntityInterface &other);
185 
186  protected:
187 
189  TENA::GeocentricSpatialReferenceFrame::Pointer myGeocSRF;
190 
191  TENA::Platform::SubscriptionInfoPtr mySubscriptionInfoPtr;
192  TENA::PlatformDetails::SubscriptionInfoPtr myDetailsSubscriptionInfoPtr;
193 
194  typedef std::map<TENA::Platform::ProxyPtr, DtReflectedObject *> PlatProxyToRefObjMap;
195  typedef std::map<TENA::PlatformDetails::ProxyPtr, DtReflectedObject*> DetailsProxyToRefObjMap;
196  PlatProxyToRefObjMap myRefEntMap;
197  DetailsProxyToRefObjMap myRefDetailsMap;
198 
199  PlatProxyToRefObjMap myEntityWaitList;
200  std::list<TENA::PlatformDetails::ProxyPtr> myDetailsWaitList;
201  bool myNeedPlatformUpdate;
202  bool myNeedDetailsUpdate;
203 
204  };
205 
206  }
207 }
208 
209 #endif // DtTENA

Document ID: Generated on Wed Jan 30 18:15:18 EST 2019 from SVN revision 195534
Copyright © 2005-2019 VT MÄK. All Rights Reserved (www.mak.com)