VR-Forces 5.0.2 Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
simObjectNetInterface.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2015 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
8 
14 
15 #pragma once
16 
21 #include <tbb/spin_rw_mutex.h>
22 #include <vl/publisherContainer.h>
23 //#include <vrfutil/profiler.h>
24 
25 #include <vlpi/entityIdentifier.h>
26 
27 #if DtHLA
28 #include <vl/rtiCompatibility.h>
29 #endif
30 
31 class DtObjectPublisher;
32 
33 class DtStateRepository;
34 
35 namespace makVrf
36 {
37  class DtNonVrfUUIDResolver;
38  class DtVrlinkNetworkInterface;
39  class DtSimObjectNetInterfaceFactory;
40 
49  {
50  private:
53 
56 
58  const DtSimObjectNetInterface & operator=(const DtSimObjectNetInterface &
59  orig);
60 
61  public:
62 
64  {
65  public:
67  : CallbackInterface()
68  , myNetInterface(sd)
69  {}
70 
71  virtual void run() override;
72 
74  };
75 
80  DtSimObjectNetInterface(DtStateData * simObject, DtVrlinkNetworkInterface*, bool publishObject = true);
81 
83  virtual ~DtSimObjectNetInterface();
84 
87  virtual bool init(const DtEntityIdentifier& id = DtEntityIdentifier()) { return true; }
88 
94  virtual void tick();
95 
99  virtual void onTick() = 0;
100 
104  virtual bool isUnit() const = 0;
105  virtual bool isEntity() const = 0;
106  virtual bool isEnvironmental() const = 0;
107 
109  virtual bool wantsToCreatePublisher() const = 0;
110 
111 #if DtHLA_1516_EVOLVED
112  virtual bool checkForNameReservation();
115 #endif
116 
120  virtual bool isLocal() const = 0;
121 
124  virtual DtString type() const = 0;
125 
128  virtual int maxNameLength() const;
129 
131  virtual void toBeRemoved();
132 
133  virtual bool publishObject() const
134  {
135  return false;
136  }
137 
138  #if DtHLA
139  virtual RTI::ObjectClassHandle objectClassHandle() const = 0;
141  #endif
142 
149  static void setNonVrfObjectsUUIDScheme(const DtString&);
150  static DtString nonVrfObjectsUUIDScheme();
152 
156  static void setNonVrfUUIDResolver(DtNonVrfUUIDResolver*);
157  static DtNonVrfUUIDResolver* nonVrfUUIDResolver();
158 
161  static void addSimObjectNetInterfaceCreatorFcn(const DtString & type,
163 
164  static void setFactory(DtSimObjectNetInterfaceFactory * factory);
165  static DtSimObjectNetInterfaceFactory * factory();
166 
168  static DtSimObjectNetInterface * createNetInterface(
169  const DtString & type, DtStateData* simObject, DtVrlinkNetworkInterface*, bool publishObject = true);
170 
174  static int maxNameLengthForInterfaceType(const DtString& interfaceTypeString);
175 
178  virtual void parallelTick();
179  virtual void forceUpdate();
181 
182  protected:
183  bool runFullyThreaded() const;
184 
185  const DtStateData* vrfObject() const
186  {
187  return mySimObject;
188  }
189 
191  {
192  return mySimObject;
193  }
194 
196  friend class DtPrintObjectStatusCommand;
197  friend class DtPrintOrgViewCommand;
198 
201  virtual const DtStateRepository * networkState() const;
202 
203  public:
204  static tbb::spin_rw_mutex thePublisherCreationMutex;
205  static tbb::spin_rw_mutex thePublisherTickMutex;
206 
207  protected:
208 
212 
215 
217 
219  };
220 }
static DtNonVrfUUIDResolver * theNonVrfUUIDResolver
Definition: simObjectNetInterface.h:214
virtual bool init(const DtEntityIdentifier &id=DtEntityIdentifier())
Derived classes that need to perform virtual construction my override this function as desired...
Definition: simObjectNetInterface.h:87
const DtStateData * vrfObject() const
Definition: simObjectNetInterface.h:185
DtStateData * nextFrameVrfObject()
Definition: simObjectNetInterface.h:190
Definition: netInterfaceParallelLock.h:16
DtSimObjectNetInterface * myNetInterface
Definition: simObjectNetInterface.h:73
ParallelContainer(DtSimObjectNetInterface *sd)
Definition: simObjectNetInterface.h:66
Definition: simObjectNetInterface.h:63
DtVrlinkNetworkInterface * myObjectManager
Definition: simObjectNetInterface.h:210
The overall structure of the DtStateData mechanism is: The DtStateData contains a list of double buff...
Definition: stateData.h:336
static DtSimObjectNetInterfaceFactory * theFactory
Definition: simObjectNetInterface.h:213
API for writing callbacks.
Definition: vrfCallbackQueue.h:58
Definition: nonVrfUUIDResolver.h:24
bool myNeedsNetworkSetup
Definition: simObjectNetInterface.h:216
Class Description: DtSimObjectNetInterface.
Definition: simObjectNetInterface.h:48
static tbb::spin_rw_mutex thePublisherTickMutex
Definition: simObjectNetInterface.h:205
static tbb::spin_rw_mutex thePublisherCreationMutex
Definition: simObjectNetInterface.h:204
DtStateData * mySimObject
Definition: simObjectNetInterface.h:209
virtual bool publishObject() const
Definition: simObjectNetInterface.h:133
DtStateRepository * myNetworkState
Definition: simObjectNetInterface.h:211
class DtSimObjectNetInterfaceFactory:
Definition: simObjectNetInterfaceFactory.h:26
DtSimObjectNetInterface *(* DtSimObjectNetIfaceCreatorFcn)(DtStateData *simObject, DtVrlinkNetworkInterface *mgr, bool publishObject)
Definition: simObjectNetInterfaceFactory.h:19
DtNetInterfaceParallelLock myLock
Definition: simObjectNetInterface.h:218

Document ID: Generated on Sun Dec 4 20:22:03 EST 2022 from SVN revision 249613
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)