VR-Forces 5.0.1 Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
networkInterfaceManager.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2020 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
6 #pragma once
7 
10 #include "vlpi/simulationAddress.h"
11 #include <boost/signals2.hpp>
12 #include <vlutil/vlPrint.h>
13 
16 class DtEntityType;
17 class Coordinate_System;
18 class DtVrfParameterDb;
19 class DtScenario;
20 class DtObjectType;
21 
22 namespace makVrf
23 {
24  class DtStateData;
25  class DtStateDataManager;
26 }
27 
28 namespace makVrfEvents
29 {
30  class DtEvent;
31  class DtEventManager;
32 }
33 
34 class DtUUID;
36 typedef DtNetworkInterfaceManager* (*DtNetworkInterfaceManagerCreatorFcn)(makVrf::DtStateDataManager*);
37 
45 {
46 public:
47 
50 
51  virtual ~DtNetworkInterfaceManager();
52 
56  static void setNetworkInterfaceManagerCreatorFcn(DtNetworkInterfaceManagerCreatorFcn fcn);
57  static DtNetworkInterfaceManager* createNetworkInterfaceManager(makVrf::DtStateDataManager*);
59 
61  {
62  return myStateDataManager;
63  }
64 
66  virtual void beginFrame(double simTime, double dt);
67 
68  double simTime() const
69  {
70  return mySimTime;
71  }
72 
73  double dT() const
74  {
75  return myDt;
76  }
77 
79  virtual bool isConnectionless() const;
80 
83  virtual bool preAdvanceFrame();
84 
87  virtual void advanceFrame(double* networkFrameTime = nullptr);
88 
92  virtual bool insertManagerAtBeginning(DtNetworkManagerInterface*);
93 
95  virtual void setNumCallbackThreads(unsigned);
96 
98  virtual std::string protocol() const;
99 
101  virtual bool addManager(DtNetworkManagerInterface*);
102 
104  virtual void removeManager(const char*);
105 
107  virtual bool hasNetworkManager(const char*) const;
108 
110  virtual bool typeIsPublishable(const DtEntityType&) const;
111 
113  virtual DtNetworkManagerInterface* networkManagerInterface(const char*) const;
114 
116  virtual void printDataToStream(const DtUUID&, DtOutputStream&) const;
117 
119  virtual void setInterest(const DtVector& geocentricCenter, double radius);
120 
122  virtual void reserve(unsigned numToReserve);
123 
125  virtual void printReflectedObjectCounts() const;
126 
129  virtual void requestUpdatesForRemoteNonVrfObjects() const;
130 
131  virtual void setCommunicationManager(DtCommunicationManager*);
133  {
134  return myCommunicationManager;
135  }
136 
138  virtual void setEnabled(bool);
139  bool enabled() const { return myEnabled; };
140 
142  virtual const makVrf::DtStateData* stateDataForGlobalId(const DtString&) const;
143 
145  virtual void setRunFullyThreaded(bool);
146  bool runFullyThreaded() const { return myRunFullyThreaded; };
147 
149  virtual void setCoordinateSystem(const Coordinate_System*);
150 
152  virtual void setParameterDatabase(DtVrfParameterDb*);
153 
155  virtual unsigned int maxNameLengthForType(const DtObjectType&) const;
156 
158  virtual void setVrfSessionId(int);
159 
161  virtual void setVrfMessageVersionSupported(int);
163  {
164  return myVrfMessageVersionSupported;
165  }
166 
168  virtual void startScenarioLoad(bool);
169 
171  virtual void endScenarioLoad(bool);
172 
174  virtual void setFrameRateMode(const DtString& mode, double deltaTime, bool manageTime = false);
175 
177  virtual void rewindScenario();
178 
180  virtual void run();
181 
183  virtual void pause();
184 
186  virtual void setExerciseStartTime(double);
187 
189  virtual void setSimTime(double);
190 
192  virtual void setTimeMultiplier(double);
193 
195  virtual void setSiteAppId(int, int);
196  const DtSimulationAddress& simulationAddress() const
197  {
198  return mySimulationAddress;
199  }
200 
201  int numManagers() const
202  {
203  return myNetworkManagers.size();
204  }
205 
207  virtual double determineSimTime(double& dt);
208 
211  virtual void addEvent(const makVrfEvents::DtEvent&, bool& selfReflected);
212 
214  virtual void sendEvent(const makVrfEvents::DtEvent&);
215 
217  virtual void setEventManager(makVrfEvents::DtEventManager*);
218 
220  virtual void resetSimulation();
221 
223  virtual bool validateScenario(const DtScenario&, DtString& error) const;
224 
226  virtual void removeAndDeleteAll();
227 
230  virtual bool needsUnpublishedDatabase() const;
231 
233  virtual bool publishingOnLegionNetwork() const;
234 
236  virtual bool selfReflecting() const;
237 
240  virtual void setSelfReflecting(bool);
241 
243  virtual bool rediscoverObjects();
244 
245  virtual void beginBulkCreate();
246  virtual void endBulkCreate();
247 
248 public:
250  boost::signals2::signal<void (DtNetworkManagerInterface*)> signal_interfaceAdded;
251 
253  boost::signals2::signal<void (DtNetworkManagerInterface*)> signal_interfaceRemoved;
254 
255 protected:
257  virtual void slot_stateDataAdded(makVrf::DtStateData*);
258 
260  virtual void slot_stateDataAboutToBeRemoved(const makVrf::DtStateData*);
261 
263  virtual void initialize(DtNetworkManagerInterface*);
264 
265 protected:
266  std::vector<DtNetworkManagerInterface*> myNetworkManagers;
269  bool myEnabled;
275  DtSimulationAddress mySimulationAddress;
277 
278  double mySimTime;
279  double myDt;
280 
283 
287 
288  boost::signals2::scoped_connection myStateDataAddedConnection;
289  boost::signals2::scoped_connection myStateDataRemovedConnection;
290 };
UUID is a unique ID wrapper class.
Definition: rwUUID.h:226
int myVrfSessionId
Definition: networkInterfaceManager.h:273
boost::signals2::signal< void(DtNetworkManagerInterface *)> signal_interfaceAdded
Signal sent when an interface is added.
Definition: networkInterfaceManager.h:250
DtString myFrameRateMode
Definition: networkInterfaceManager.h:281
Instances of DtVrfParameterDb are the database of DtVrfObjectParameters objects used in the construct...
Definition: vrfParameterDb.h:38
DtSimulationAddress mySimulationAddress
Definition: networkInterfaceManager.h:275
Definition: scenario.h:52
std::vector< DtNetworkManagerInterface * > myNetworkManagers
Definition: networkInterfaceManager.h:266
The DtEventManager handles the sending and receipt of system events (fire, detonate, command, etc). It provides a thread-safe way for the sim engine to send and receive such events, between both components within this sim engine and other remote applications.
Definition: eventManager.h:33
double myDt
Definition: networkInterfaceManager.h:279
double mySimTime
Definition: networkInterfaceManager.h:278
makVrf::DtStateDataManager * stateDataManager() const
Definition: networkInterfaceManager.h:60
bool enabled() const
Definition: networkInterfaceManager.h:139
int vrfMessageVersionSupported() const
Definition: networkInterfaceManager.h:162
double myFrameDeltaTime
Definition: networkInterfaceManager.h:282
DtVrfParameterDb * myParameterDb
Definition: networkInterfaceManager.h:272
double dT() const
Definition: networkInterfaceManager.h:73
Definition: objectType.h:27
bool runFullyThreaded() const
Definition: networkInterfaceManager.h:146
bool myOwnsCoordinateSystem
Definition: networkInterfaceManager.h:271
boost::signals2::signal< void(DtNetworkManagerInterface *)> signal_interfaceRemoved
Signal sent when an interface is removed.
Definition: networkInterfaceManager.h:253
bool myRunFullyThreaded
Definition: networkInterfaceManager.h:268
DtCommunicationManager * communicationManager()
Definition: networkInterfaceManager.h:132
DtNetworkManagerInterface is the base class which all network interfaces must be derived from...
Definition: networkManagerInterface.h:40
Definition: coordSystem.h:54
The overall structure of the DtStateData mechanism is: The DtStateData contains a list of double buff...
Definition: stateData.h:336
Definition: event.h:13
DtNetworkInterfaceManager *(* DtNetworkInterfaceManagerCreatorFcn)(makVrf::DtStateDataManager *)
Definition: networkInterfaceManager.h:36
bool myEnabled
Definition: networkInterfaceManager.h:269
The DtCommunicationManager class is a convenience class that will create both the DtNetworkInterfaceM...
Definition: communicationManager.h:51
boost::signals2::scoped_connection myStateDataAddedConnection
Definition: networkInterfaceManager.h:288
int numManagers() const
Definition: networkInterfaceManager.h:201
static DtNetworkInterfaceManagerCreatorFcn theNetworkInterfaceManagerCreatorFcn
Definition: networkInterfaceManager.h:285
int myVrfMessageVersionSupported
Definition: networkInterfaceManager.h:274
int myNumberOfCallbackThreads
Definition: networkInterfaceManager.h:276
Definition: asyncJobServer.h:39
const DtSimulationAddress & simulationAddress() const
Definition: networkInterfaceManager.h:196
The DtNetworkInterfaceManager manages all network interfaces utilized by the sim engine. Often there is only one, but it is possible for there to be multiple. Each network interface is an instance of a subclass of DtNetworkManagerInterface. As state data is created or removed, the DtNetworkInterfaceManager will notify each of its network interfaces, so that they may create object network interfaces to output required state data to the network.
Definition: networkInterfaceManager.h:44
boost::signals2::scoped_connection myStateDataRemovedConnection
Definition: networkInterfaceManager.h:289
DtCommunicationManager * myCommunicationManager
Definition: networkInterfaceManager.h:286
const char int mode
Definition: ioapi.h:38
double simTime() const
Definition: networkInterfaceManager.h:68
makVrfEvents::DtEventManager * myEventManager
Definition: networkInterfaceManager.h:284
#define DT_DLL_vrfMsgTransport
This file is used to determine how to build Disable inconsistent dll linkage warning Visual Studio 6...
Definition: vrfCommunicationManagerDefines.h:26
const Coordinate_System * myCoordinateSystem
Definition: networkInterfaceManager.h:270
makVrf::DtStateDataManager * myStateDataManager
Definition: networkInterfaceManager.h:267
This class holds the state data that represents each simulation object in the system.
Definition: stateDataManager.h:71

Document ID: Generated on Mon Jun 20 00:38:30 EDT 2022 from SVN revision 244029
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)