VR-Forces 5.0.1 Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
communicationManager.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2016 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 #pragma once
6 
8 #include <vlpi/simulationAddress.h>
9 #include <vlutil/vlTime.h>
10 #include <boost/signals2.hpp>
11 #include <boost/function.hpp>
12 
13 
14 
15 namespace makVrfEvents
16 {
17  class DtEventManager;
18  class DtEvent;
19 }
20 
21 namespace makVrf
22 {
23  class DtStateDataManager;
24 }
25 
26 class DtScenario;
27 class DtExerciseClock;
31 class Coordinate_System;
32 class DtVrfParameterDb;
33 
34 typedef DtCommunicationManager* (*DtCommunicationManagerCreatorFcn)(const DtSimulationAddress&, makVrf::DtStateDataManager*, int);
35 
37 {
38  DtCommunicationManagerPerformanceTimerInformation() : preAdvanceFrameTime(0.), networkFrameTime(0.) {};
39  double preAdvanceFrameTime;
41 };
42 
52 {
53 public:
54  typedef boost::function<double (double& dt)> SimTimeProvideFcn;
58  DtCommunicationManager(const DtSimulationAddress&, makVrf::DtStateDataManager* sm = 0, int threadPoolSize = -1);
59 
60  virtual ~DtCommunicationManager();
61 
65  static void setCommunicationManagerCreatorFcn(DtCommunicationManagerCreatorFcn fcn);
66  static DtCommunicationManager* createCommunicationManager(const DtSimulationAddress&, makVrf::DtStateDataManager* sm = 0, int threadPoolSize = -1);
68 
70  virtual void setNetworkInterfaceManager(DtNetworkInterfaceManager*);
72  {
73  return myNetworkInterfaceManager;
74  }
75 
76  virtual void setSimulationAddress(const DtSimulationAddress&);
77  const DtSimulationAddress& simulationAddress() const;
78  const DtSimulationAddress& applicationId() const { return simulationAddress(); };
79 
81  virtual void setEventManager(makVrfEvents::DtEventManager*);
83  {
84  return myEventManager;
85  }
86 
87  virtual void setParameterDatabase(DtVrfParameterDb*);
89  {
90  return myParameterDatabase;
91  }
92 
94  virtual void setNumCallbackThreads(unsigned);
95 
97  virtual bool typeIsPublishable(const DtEntityType&) const;
98 
100  virtual void setCoordinateSystem(const Coordinate_System*);
101 
104  virtual double beginFrame(double& dt);
105 
108  virtual bool advanceFrame(DtCommunicationManagerPerformanceTimerInformation* performanceTimerInformation = nullptr);
109 
113  virtual bool insertManagerAtBeginning(DtNetworkManagerInterface*);
114 
116  virtual bool addManager(DtNetworkManagerInterface*);
117 
119  virtual DtNetworkManagerInterface* networkManagerInterface(const char*) const;
120 
122  virtual void removeManager(const char*);
123 
125  virtual void addEvent(const makVrfEvents::DtEvent&);
126 
128  virtual void postEvent(const makVrfEvents::DtEvent&);
129 
131  virtual void sendEvent(const makVrfEvents::DtEvent&);
132 
134  virtual void setUsePerfCounter(bool);
135 
137  virtual void setSessionId(int);
138  int sessionId() const
139  {
140  return mySessionId;
141  }
142 
145  virtual double elapsedRealTime() const;
146 
148  virtual void run();
149 
151  virtual void pause();
152 
154  virtual void rewindScenario();
155 
157  virtual void resetSimulation();
158 
160  virtual void setSimTime(double);
161 
163  virtual void setFrameRateMode(const DtString& mode, double deltaTime, bool manageTime = false);
164 
166  virtual void setTimeMultiplier(double);
167 
169  virtual void setExerciseStartTime(double);
170 
171  virtual bool isPaused() const;
172  virtual double approximateElapsedRealTime() const;
173  virtual double absRealTime() const;
174  virtual double timeMultiplier() const;
175  virtual double exerciseStartTime() const;
176  virtual bool isRunToCompleteFrameMode() const;
177  virtual void setSimTimeProviderFunction(SimTimeProvideFcn f);
178 
179  virtual double simTime() const
180  {
181  return mySimTime;
182  }
183 
185 
187  {
188  return myExerciseClock;
189  }
190 
191  bool inFame() const
192  {
193  return myInFrame;
194  }
195 
197  virtual bool isConnectionless() const;
198 
200  virtual void removeAndDeleteAll();
201 
204  virtual void reserve(unsigned int);
205 
207  virtual bool validateScenario(const DtScenario& s, DtString& error) const;
208 
210  virtual bool selfReflecting() const;
211 
214  virtual void setSelfReflecting(bool);
215 
216  virtual void beginBulkCreate();
217  virtual void endBulkCreate();
219  {
220  return myStateDataManager;
221  }
222 
227  virtual bool rediscoverObjects();
228 
229 public:
231  boost::signals2::signal<void ()> signal_aboutToAdvanceFrame;
232 
234  boost::signals2::signal<void (makVrf::DtStateDataManager*)> signal_stateDataManagerChanged;
235 
238  boost::signals2::signal<void ()> signal_frameAdvanced;
239 
241  boost::signals2::signal<void (double simTime, double dT)> signal_beginFrame;
242 
244  boost::signals2::signal<void (DtNetworkManagerInterface*)> signal_interfaceAdded;
245 
247  boost::signals2::signal<void (DtNetworkManagerInterface*)> signal_interfaceRemoved;
248 
249 protected:
250  virtual void slot_interfaceAdded(DtNetworkManagerInterface*);
251  virtual void slot_interfaceRemoved(DtNetworkManagerInterface*);
252 
254  void initialize();
255 
256 protected:
261  DtSimulationAddress mySimulationAddress;
262 
267  double mySimTime;
268  double myLastDt;
272 };
static DtCommunicationManagerCreatorFcn theCommunicationManagerCreatorFcn
Definition: communicationManager.h:260
Instances of DtVrfParameterDb are the database of DtVrfObjectParameters objects used in the construct...
Definition: vrfParameterDb.h:38
boost::function< double(double &dt)> SimTimeProvideFcn
Definition: communicationManager.h:54
Definition: scenario.h:52
int sessionId() const
Definition: communicationManager.h:138
const DtSimulationAddress & applicationId() const
Definition: communicationManager.h:78
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
boost::signals2::signal< void(double simTime, double dT)> signal_beginFrame
Signal sent right before beginFrame is returned.
Definition: communicationManager.h:241
bool myOwnsStateDataManager
Definition: communicationManager.h:265
DtExerciseClock * clock() const
Definition: communicationManager.h:186
double mySimTime
Definition: communicationManager.h:267
typedef int(ZCALLBACK *close_file_func) OF((voidpf opaque
boost::signals2::signal< void()> signal_aboutToAdvanceFrame
Sent before the state data manager advances its frame.
Definition: communicationManager.h:231
double networkFrameTime
Definition: communicationManager.h:40
double myLastDt
Definition: communicationManager.h:268
DtCommunicationManager *(* DtCommunicationManagerCreatorFcn)(const DtSimulationAddress &, makVrf::DtStateDataManager *, int)
Definition: communicationManager.h:34
Definition: communicationManager.h:36
boost::signals2::signal< void(DtNetworkManagerInterface *)> signal_interfaceAdded
Signal sent when an interface is added.
Definition: communicationManager.h:244
makVrfEvents::DtEventManager * myEventManager
Definition: communicationManager.h:259
DtNetworkManagerInterface is the base class which all network interfaces must be derived from...
Definition: networkManagerInterface.h:40
Definition: coordSystem.h:54
Definition: event.h:13
DtVrfParameterDb * myParameterDatabase
Definition: communicationManager.h:271
boost::signals2::signal< void()> signal_frameAdvanced
Can be called by outside holders of this class if the frame cannot be advanced, however, other classes connect to this to be signaled for a post communication advance event. Will also be called from advanceFrame.
Definition: communicationManager.h:238
bool inFame() const
Definition: communicationManager.h:191
The DtCommunicationManager class is a convenience class that will create both the DtNetworkInterfaceM...
Definition: communicationManager.h:51
DtVrfParameterDb * parameterDatabase() const
Definition: communicationManager.h:88
DtSimulationAddress mySimulationAddress
Definition: communicationManager.h:261
boost::signals2::signal< void(DtNetworkManagerInterface *)> signal_interfaceRemoved
Signal sent when an interface is removed.
Definition: communicationManager.h:247
makVrf::DtStateDataManager * stateDataManager() const
Definition: communicationManager.h:218
Definition: asyncJobServer.h:39
makVrfEvents::DtEventManager * eventManager()
Definition: communicationManager.h:82
int mySessionId
Definition: communicationManager.h:266
virtual double simTime() const
Definition: communicationManager.h:179
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
DtNetworkInterfaceManager * myNetworkInterfaceManager
Definition: communicationManager.h:257
const char int mode
Definition: ioapi.h:38
SimTimeProvideFcn mySimTimeProviderFunction
Definition: communicationManager.h:269
DtNetworkInterfaceManager * networkInterfaceManager()
Definition: communicationManager.h:71
int myInFrame
Definition: communicationManager.h:270
boost::signals2::signal< void(makVrf::DtStateDataManager *)> signal_stateDataManagerChanged
Sent if a network manager is assigned with a different state data manager in it.
Definition: communicationManager.h:234
#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
makVrf::DtStateDataManager * myStateDataManager
Definition: communicationManager.h:258
Description: The Exercise Clock keeps track of current simulated time. When &#39;ticked&#39;, it advances simulation time based on elapsed real time since the last time it was ticked and a time-multiplier that allows the exercise clock to run faster or slower than real-time. The exercise clock also supports a pause/resume capability.
Definition: exerciseClock.h:26
This class holds the state data that represents each simulation object in the system.
Definition: stateDataManager.h:71
DtExerciseClock * myExerciseClock
Backup for simulation time (absRealTime) if no network manager.
Definition: communicationManager.h:264

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)