VR-Forces 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 <vrfutil/uuid.h>
12 #include <boost/signals2.hpp>
13 #include <vlutil/vlPrint.h>
14 
15 #include <set>
16 
19 class DtEntityType;
20 class Coordinate_System;
21 class DtVrfParameterDb;
22 class DtScenario;
24 
25 namespace makVrf
26 {
27  class DtStateData;
28  class DtStateDataManager;
29 }
30 
31 namespace makVrfEvents
32 {
33  class DtEvent;
34  class DtEventManager;
35 }
36 
37 class DtUUID;
39 typedef DtNetworkInterfaceManager* (*DtNetworkInterfaceManagerCreatorFcn)(makVrf::DtStateDataManager*);
40 
48 {
49 public:
50 
53 
54  virtual ~DtNetworkInterfaceManager();
55 
59  static void setNetworkInterfaceManagerCreatorFcn(DtNetworkInterfaceManagerCreatorFcn fcn);
60  static DtNetworkInterfaceManager* createNetworkInterfaceManager(makVrf::DtStateDataManager*);
62 
64  {
65  return myStateDataManager;
66  }
67 
69  virtual void beginFrame(double simTime, double dt);
70 
71  double simTime() const
72  {
73  return mySimTime;
74  }
75 
76  double dT() const
77  {
78  return myDt;
79  }
80 
82  virtual bool isConnectionless() const;
83 
86  virtual bool preAdvanceFrame();
87 
89  virtual bool waitingToAddObjects() const;
90 
93  virtual void advanceFrame(double* networkFrameTime = nullptr);
94 
97  virtual DtString nextEventId(const DtString& = DtString::nullString());
98 
102  virtual bool insertManagerAtBeginning(DtNetworkManagerInterface*);
103 
105  virtual void setNumCallbackThreads(unsigned);
106 
108  virtual std::string protocol() const;
109 
111  virtual bool addManager(DtNetworkManagerInterface*);
112 
114  virtual void removeManager(const char*);
115 
117  virtual bool hasNetworkManager(const char*) const;
118 
120  virtual bool typeIsPublishable(const DtEntityType&) const;
121 
123  virtual DtU32 scenarioCapabilities() const;
124  virtual void setScenarioCapabilities(DtU32);
125 
127  virtual DtNetworkManagerInterface* networkManagerInterface(const char*) const;
128 
130  virtual void printDataToStream(const DtUUID&, DtOutputStream&) const;
131 
133  virtual bool hasNetworkRepresentation(const DtUUID&) const;
134 
136  virtual void setInterest(const DtVector& geocentricCenter, double radius);
137 
139  virtual bool supportsOwnershipTransfer() const;
140 
142  virtual void reserve(unsigned numToReserve);
143 
145  virtual void printReflectedObjectCounts() const;
146 
149  virtual void requestUpdatesForRemoteNonVrfObjects() const;
150 
151  virtual void setCommunicationManager(DtCommunicationManager*);
153  {
154  return myCommunicationManager;
155  }
156 
158  virtual void setEnabled(bool);
159  bool enabled() const { return myEnabled; };
160 
162  virtual const makVrf::DtStateData* stateDataForGlobalId(const DtString&) const;
163 
165  virtual void setRunFullyThreaded(bool);
166  bool runFullyThreaded() const { return myRunFullyThreaded; };
167 
169  virtual void setCoordinateSystem(const Coordinate_System*);
170 
172  virtual void setParameterDatabase(DtVrfParameterDb*);
173 
175  virtual unsigned int maxNameLengthForType(const DtEntityType&) const;
176 
178  virtual void setVrfSessionId(int);
179 
181  virtual void setVrfMessageVersionSupported(int);
183  {
184  return myVrfMessageVersionSupported;
185  }
186 
188  virtual void startScenarioLoad(bool);
189 
191  virtual void endScenarioLoad(bool);
192 
194  virtual void setFrameRateMode(const DtString& mode, double deltaTime, bool manageTime = false);
195 
197  virtual void rewindScenario();
198 
200  virtual void run();
201 
203  virtual void pause();
204 
206  virtual void setExerciseStartTime(double);
207 
209  virtual void setSimTime(double);
210 
212  virtual void setTimeMultiplier(double);
213 
215  virtual void setSiteAppId(int, int);
216  const DtSimulationAddress& simulationAddress() const
217  {
218  return mySimulationAddress;
219  }
220 
221  int numManagers() const
222  {
223  return myNetworkManagers.size();
224  }
225 
227  virtual double determineSimTime(double& dt, DtCommunicationManagerPerformanceTimerInformation* performanceTimerInformation = nullptr);
228 
231  virtual void addEvent(const makVrfEvents::DtEvent&, bool& selfReflected);
232 
234  virtual void sendEvent(const makVrfEvents::DtEvent&);
235 
237  virtual void setEventManager(makVrfEvents::DtEventManager*);
238 
240  virtual void resetSimulation();
241 
243  virtual bool validateScenario(const DtScenario&, DtString& error) const;
244 
246  virtual void removeAndDeleteAll(const std::set<DtUUID>& except = std::set<DtUUID>());
247 
250  virtual bool needsUnpublishedDatabase() const;
251 
253  virtual bool publishingOnLegionNetwork() const;
254 
256  virtual bool selfReflecting() const;
257 
260  virtual void setSelfReflecting(bool);
261 
263  virtual bool rediscoverObjects();
264 
265  virtual void beginBulkCreate();
266  virtual void endBulkCreate();
267 
269  virtual void reserveEntityId(const DtEntityIdentifier&);
270 
271 public:
273  boost::signals2::signal<void (DtNetworkManagerInterface*)> signal_interfaceAdded;
274 
276  boost::signals2::signal<void (DtNetworkManagerInterface*)> signal_interfaceRemoved;
277 
278 protected:
280  virtual void slot_stateDataAdded(makVrf::DtStateData*);
281 
283  virtual void slot_stateDataAboutToBeRemoved(const makVrf::DtStateData*);
284 
286  virtual void initialize(DtNetworkManagerInterface*);
287 
288 protected:
289  std::vector<DtNetworkManagerInterface*> myNetworkManagers;
292  bool myEnabled;
298  DtSimulationAddress mySimulationAddress;
300 
301  double mySimTime;
302  double myDt;
303 
306 
310 
311  boost::signals2::scoped_connection myStateDataAddedConnection;
312  boost::signals2::scoped_connection myStateDataRemovedConnection;
313 
315 };
UUID is a unique ID wrapper class.
Definition: uuid.h:59
int myVrfSessionId
Definition: networkInterfaceManager.h:296
boost::signals2::signal< void(DtNetworkManagerInterface *)> signal_interfaceAdded
Signal sent when an interface is added.
Definition: networkInterfaceManager.h:273
DtU32 myScenarioCapabilities
Definition: networkInterfaceManager.h:314
DtString myFrameRateMode
Definition: networkInterfaceManager.h:304
Instances of DtVrfParameterDb are the database of DtVrfObjectParameters objects used in the construct...
Definition: vrfParameterDb.h:41
DtSimulationAddress mySimulationAddress
Definition: networkInterfaceManager.h:298
Definition: scenario.h:52
std::vector< DtNetworkManagerInterface * > myNetworkManagers
Definition: networkInterfaceManager.h:289
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:302
Contains the DtUUID class declaration.
double mySimTime
Definition: networkInterfaceManager.h:301
makVrf::DtStateDataManager * stateDataManager() const
Definition: networkInterfaceManager.h:63
bool enabled() const
Definition: networkInterfaceManager.h:159
int vrfMessageVersionSupported() const
Definition: networkInterfaceManager.h:182
double myFrameDeltaTime
Definition: networkInterfaceManager.h:305
DtVrfParameterDb * myParameterDb
Definition: networkInterfaceManager.h:295
double dT() const
Definition: networkInterfaceManager.h:76
bool runFullyThreaded() const
Definition: networkInterfaceManager.h:166
bool myOwnsCoordinateSystem
Definition: networkInterfaceManager.h:294
boost::signals2::signal< void(DtNetworkManagerInterface *)> signal_interfaceRemoved
Signal sent when an interface is removed.
Definition: networkInterfaceManager.h:276
Definition: communicationManager.h:38
bool myRunFullyThreaded
Definition: networkInterfaceManager.h:291
DtCommunicationManager * communicationManager()
Definition: networkInterfaceManager.h:152
DtNetworkManagerInterface is the base class which all network interfaces must be derived from...
Definition: networkManagerInterface.h:43
Definition: coordSystem.h:54
The overall structure of the DtStateData mechanism is: The DtStateData contains a list of double buff...
Definition: stateData.h:398
Definition: event.h:13
DtNetworkInterfaceManager *(* DtNetworkInterfaceManagerCreatorFcn)(makVrf::DtStateDataManager *)
Definition: networkInterfaceManager.h:39
bool myEnabled
Definition: networkInterfaceManager.h:292
The DtCommunicationManager class is a convenience class that will create both the DtNetworkInterfaceM...
Definition: communicationManager.h:54
boost::signals2::scoped_connection myStateDataAddedConnection
Definition: networkInterfaceManager.h:311
int numManagers() const
Definition: networkInterfaceManager.h:221
static DtNetworkInterfaceManagerCreatorFcn theNetworkInterfaceManagerCreatorFcn
Definition: networkInterfaceManager.h:308
int myVrfMessageVersionSupported
Definition: networkInterfaceManager.h:297
int myNumberOfCallbackThreads
Definition: networkInterfaceManager.h:299
Definition: asyncJobServer.h:39
const DtSimulationAddress & simulationAddress() const
Definition: networkInterfaceManager.h:216
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:47
boost::signals2::scoped_connection myStateDataRemovedConnection
Definition: networkInterfaceManager.h:312
DtCommunicationManager * myCommunicationManager
Definition: networkInterfaceManager.h:309
const char int mode
Definition: ioapi.h:38
double simTime() const
Definition: networkInterfaceManager.h:71
makVrfEvents::DtEventManager * myEventManager
Definition: networkInterfaceManager.h:307
#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:293
makVrf::DtStateDataManager * myStateDataManager
Definition: networkInterfaceManager.h:290
This class holds the state data that represents each simulation object in the system.
Definition: stateDataManager.h:73

Document ID: Generated on Thu Oct 23 22:29:17 EDT 2025 from SVN revision 280951
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)