VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
vrfSimBackendManager.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2018 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
8 
10 
11 #pragma once
12 
13 #include <vrfGuiCore/vrfGuiCore.h>
17 
18 #include <vrfutil/sessionStatus.h>
19 
20 #include <boost/function.hpp>
21 
22 
23 class DtBackend;
25 class DtSimulationAddress;
26 class DtSimMessage;
27 class DtIfPing;
28 
29 namespace makVrv
30 {
31  class DtDe;
32 }
33 
34 namespace makVrv
35 {
36  class DtBaseSimulation;
37 }
38 
40 const int DtSessionChangedTerrain = 0x00000001;
41 const int DtSessionChangedScenario = 0x00000002;
42 const int DtSessionChangedNumberBEs = 0x00000004;
43 const int DtSessionScenarioJustLoaded = 0x00000008;
44 const int DtSessionChangedSimulationModelSets = 0x00000010;
45 const int DtSessionScenarioJustClosed = 0x00000020;
46 const int DtSessionScenarioClosing = 0x00000040;
47 const int DtSessionScenarioLoading = 0x00000080;
48 const int DtSessionScenarioErrorLoading = 0x00000100;
49 const int DtSessionScenarioImporting = 0x00000200;
50 const int DtSessionScenarioJustImported = 0x00000400;
53 const int DtSessionChangedScenarioFilename = 0x00002000;
54 const int DtSessionScenarioJustRolledBack = 0x00004000;
55 const int DtSessionScenarioRollingBack = 0x00008000;
56 const int DtSessionSimulationStateChanged = 0x00010000;
57 const int DtSessionChangedSimTerrain = 0x00020000;
58 const int DtSessionScenarioReinitializing = 0x00040000;
59 const int DtSessionScenarioJustReinitialized = 0x00080000;
63 const int DtBackendAllowInfiniteObjectsChanged = 0x00800000;
64 
65 namespace makVrf
66 {
67  class DtVrfBackEndState;
68  class DtLocalWeatherManager;
69 
80  {
81  public:
82  typedef std::map<std::string, DtVrfBackendState*> DtVrfSimBackendStates;
83 
84  public:
86  virtual ~DtVrfSimBackendManager() override;
87 
89  static DtVrfSimBackendManager& instance(makVrv::DtDe& de);
90 
91  public:
93  virtual bool backEndsPresent() const;
94 
96  virtual bool anyBackendsLoading() const;
97 
99  virtual bool anyBackendsCreatingSimulationObjectGroup() const;
100 
102  virtual bool anyBackendsClosing() const;
103 
105  virtual bool allBackendsClosingOrClosed() const;
106 
108  virtual bool anyBackendsLoaded() const;
109 
111  virtual bool allBackendsLoaded() const;
112 
114  virtual bool backendLoaded(const DtSimulationAddress&) const;
115 
117  virtual bool backendSaving(const DtSimulationAddress&) const;
118 
120  virtual bool anyBackendsPlaying() const;
121 
123  virtual DtList backends() const;
124 
126  virtual bool anyBackendsInControlState(int state) const;
127 
129  virtual bool hasDynamicTerrainServer() const;
130 
132  virtual DtSimulationAddress firstBackendThatCanSimulate() const;
133 
135  virtual bool allBackendsCanSimulate() const;
136 
138  virtual bool anyBackendCanSimulate() const;
139 
141  virtual bool backendCanSimulate(const DtSimulationAddress&) const;
142 
144  virtual void duplicateBackendDiscovered(const DtSimulationAddress&);
145 
147  virtual double timeMultiplier() const;
148 
154 
155  virtual void removeAllBackends();
156  virtual void addBackend(const DtBackend*);
157  virtual void backendRemoved(const DtSimulationAddress&);
158  virtual void backendUpdated(const DtSimulationAddress&, const DtBackend*);
159  virtual void simulationStatusChanged(DtSimulationStatus);
161 
164  {
165  return mySimulationStatus;
166  }
167 
168  virtual DtVrfBackendState* stateFor(const DtSimulationAddress&) const;
169 
170  virtual const DtSimulationAddress& selectedBackend() const;
171 
172  virtual void setSelectedBackend(const DtSimulationAddress&);
173 
175  virtual void simulationAddresses(std::set<std::string>&);
176 
177  virtual int numberOfBackends() const;
178 
180  virtual void clearSelectedBackend();
181 
183  virtual DtVrfBackendState* firstTimeBackend() const;
184 
186  virtual DtVrfBackendState* firstBackendThatIsLoaded() const;
187 
190  virtual DtSimulationAddress preferredBackendAddress() const;
191 
193  virtual double simTime() const;
194 
196  virtual double runDurationTime() const;
197 
199  virtual int scenarioRunId() const;
200 
203  virtual double timeOfDay() const;
204 
206  virtual double simStartSimTime() const;
207 
210  {
211  return myBackendStates;
212  }
213 
216  {
217  return myAllBackendStates;
218  }
219 
221  virtual std::map<short, int> currentObjectCounts() const;
222 
224  virtual const std::map<short, int>& currentObjectCount(const DtSimulationAddress&) const;
225 
226  public:
228  virtual void signalWhenAllBackendsClosed();
229 
231  virtual void signalIfAllBackendsClosed();
232  boost::signals2::signal<void ()> signal_allBackendsClosed;
233 
236  virtual void signalWhenAllBackendsLoaded();
237 
239  virtual void clearNotificationWhenBackendsLoaded();
240 
243  virtual void signalIfAllBackendsLoaded();
244  boost::signals2::signal<void ()> signal_allBackendsLoaded;
245 
247  virtual void signalWhenAllBackendsSaved();
248 
250  virtual void clearNotificationWhenBackendsSaved();
251 
253  virtual void signalIfAllBackendsSaved(bool checkpointSave);
254  boost::signals2::signal<void (bool)> signal_allBackendsSaved;
255 
256  virtual void setFrameRateMode(char mode);
257  char frameRateMode() const
258  {
259  return mySessionStatus.frameRateMode();
260  }
261 
262  std::string sessionScenario() const
263  {
264  return mySessionStatus.scenarioName().c_str();
265  }
266 
267  virtual void setSessionScenario(const std::string&);
268 
269  std::string sessionScenarioFilename() const
270  {
271  return mySessionStatus.scenarioFilename().c_str();
272  }
273 
274  virtual void setSessionScenarioFilename(const std::string&);
275 
276  std::string sessionGuiTerrain() const
277  {
278  return mySessionStatus.guiTerrainName().c_str();
279  }
280 
281  virtual void setSessionGuiTerrain(const std::string&);
282 
283  std::string sessionSimTerrain() const
284  {
285  return mySessionStatus.terrainName().c_str();
286  }
287 
288  virtual void setSessionSimTerrain(const std::string&);
289 
290  const std::vector<DtFilename>& simulationModelSets() const
291  {
292  return mySessionStatus.simulationModelSets();
293  }
294 
295  virtual void setSimulationModelSets(const DtRwNLengthStringVector&);
296 
298  virtual void sessionStatusChanged(const DtSessionStatus& status);
299 
300  virtual time_t dateAndTimeOfDay() const;
301  virtual void setDateAndTimeOfDay(time_t);
302  virtual void resetDateAndTimeOfDay();
303 
304  virtual const std::map<std::string, bool> backendsLoading() const
305  {
306  return myLoadingMap;
307  }
308 
309  virtual const std::map<std::string, bool> backendsClosing() const
310  {
311  return myClosingMap;
312  }
313 
316  virtual void pingServer(const DtSimulationAddress&);
317  virtual bool pingReceived(const DtSimulationAddress&) const;
318  virtual double latency(const DtSimulationAddress&) const;
319  virtual void processPing(DtSimMessage*);
320  virtual DtIfPing* pingForServer(const DtSimulationAddress&) const;
321  boost::signals2::signal<void (DtSimulationAddress, DtIfPing*)> signal_receivedPing;
323 
324  public:
325  boost::signals2::signal<void (const DtVrfBackendState&)> signal_frameRatesUpdated;
326  boost::signals2::signal<void (const DtVrfBackendState&)> signal_backendDiscovered;
327  boost::signals2::signal<void (const DtVrfBackendState&)> signal_nonSimulationBackendDiscovered;
328  boost::signals2::signal<void (const DtVrfBackendState&)> signal_backendRemoved;
329  boost::signals2::signal<void (const DtVrfBackendState&)> signal_nonSimulationBackenRemoved;
330  boost::signals2::signal<void (const DtVrfBackendState&, int)> signal_backendUpdated;
331  boost::signals2::signal<void (int)> signal_sessionUpdated;
332  boost::signals2::signal<void (const DtVrfBackendState&)> signal_duplicateSimulationAddress;
333  boost::signals2::signal<void (const DtSimulationAddress& old, const DtSimulationAddress& newaddr)> signal_selectedBackendChanged;
334  boost::signals2::signal<void ()> signal_allBackendsAboutToBeRemoved;
335  boost::signals2::signal<void (DtSimulationStatus)> signal_simulationStatusChanged;
336  boost::signals2::signal<void(const DtSimulationAddress&)> signal_objectCountsChanged;
337 
338  protected:
339  virtual void processSimulationStatusChanged(DtSimulationStatus);
340 
341  virtual DtLocalWeatherManager& localWeatherManager() const;
342 
344  virtual void tick() override;
345 
347  virtual double simTimeFromBackend() const;
348 
349  virtual void updateDateAndTimeOfDay();
350  virtual void slot_dateAndTimeOfDayChanged(int year, int month, int day, int hours, int mins, int secs);
351 
352  virtual void slot_frameRatesUpdated(const DtVrfBackendState&);
353  virtual void simulationBackendRemoved(DtVrfBackendState*);
354  virtual void simulationBackendDiscovered(DtVrfBackendState*);
355  virtual void simulationBackendUpdated(DtSimulationAddress, int);
356  virtual void duplicateSimulationBackendDiscovered(DtSimulationAddress);
357  virtual void processSessionStatusChange(DtSessionStatus);
358 
359  virtual void processLoadCompleteCallback(DtSimMessage*);
360  virtual void processSaveCompleteCallback(DtSimMessage*);
361 
363  virtual void backendSaved(const std::string&, bool checkpointSave);
364 
365  virtual void setBackendSaving(const DtSimulationAddress&, bool b);
366 
368  virtual void updateSessionInformation(int sessionFlags = 0);
369 
371  virtual void clear();
372 
373  protected:
374  makVrv::DtBaseSimulation* mySimulation;
377  mutable DtSimulationAddress mySelectedBackend;
381  std::map<std::string, char> myBackendsWaitingForSave;
382  std::map<std::string, bool> myAlreadyDuplicateWarned;
383  std::map<std::string, bool> myNeedToLoad;
384  std::set<std::string> myNeedToSave;
385 
387  std::set<std::string> myAllowInfiniteObjects;
388  std::map<std::string, bool> myJustLoadedMap;
389  std::map<std::string, bool> myLoadingMap;
390  std::map<std::string, bool> myReinitializingMap;
391  std::map<std::string, bool> myClosingMap;
392  std::map<std::string, bool> myJustClosedMap;
393  std::map<std::string, bool> myJustRolledBackMap;
394  std::map<std::string, bool> myRollingBackMap;
395  std::map<std::string, bool> myImportingMap;
396  std::map<std::string, bool> myCreatingSimulationObjectGroupMap;
397  std::set<std::string> myBackendWasClosing;
398  std::set<std::string> myWarnDuplicateOnAdd;
399 
400  double mySimTime;
406 
409 
411 
412  typedef std::map<std::string, DtIfPing*> Pings;
414  };
415 }
std::map< std::string, bool > myRollingBackMap
Definition: vrfSimBackendManager.h:394
Definition: vrfBackendState.h:65
bool myCloseProcessStarted
Definition: vrfSimBackendManager.h:404
const int DtSessionScenarioRollingBack
Definition: vrfSimBackendManager.h:55
const int DtSessionChangedTerrain
Flags for session changing (and what changed)
Definition: vrfSimBackendManager.h:40
const int DtSessionScenarioChangedFrameRateMode
Definition: vrfSimBackendManager.h:60
DtLocalWeatherManager * myLocalWeatherManager
Definition: vrfSimBackendManager.h:407
DtSimulationStatus
Definition: backend.h:26
const int DtSessionScenarioJustClosed
Definition: vrfSimBackendManager.h:45
std::set< std::string > myAllowInfiniteObjects
Definition: vrfSimBackendManager.h:387
bool mySignalWhenAllBackendsSaved
Definition: vrfSimBackendManager.h:380
const int DtBackendAllowInfiniteObjectsChanged
Definition: vrfSimBackendManager.h:63
boost::signals2::signal< void(const DtSimulationAddress &old, const DtSimulationAddress &newaddr)> signal_selectedBackendChanged
Definition: vrfSimBackendManager.h:333
const int DtSessionScenarioSaveSimulationObjectGroup
Definition: vrfSimBackendManager.h:51
DtRwNLengthStringVector is a named, readable/writable vector of strings of arbitrary length...
Definition: rwNLengthStringVector.h:28
std::map< std::string, bool > myJustLoadedMap
Definition: vrfSimBackendManager.h:388
boost::signals2::signal< void(const DtVrfBackendState &)> signal_nonSimulationBackendDiscovered
Definition: vrfSimBackendManager.h:327
virtual const std::map< std::string, bool > backendsLoading() const
Definition: vrfSimBackendManager.h:304
const int DtSessionScenarioClosing
Definition: vrfSimBackendManager.h:46
DtVrfSimBackendStates myBackendStates
Definition: vrfSimBackendManager.h:375
std::map< std::string, bool > myClosingMap
Definition: vrfSimBackendManager.h:391
std::map< std::string, bool > myImportingMap
Definition: vrfSimBackendManager.h:395
const int DtSessionScenarioReinitializing
Definition: vrfSimBackendManager.h:58
DtSimulationStatus mySimulationStatus
Definition: vrfSimBackendManager.h:408
const int DtSessionScenarioJustRolledBack
Definition: vrfSimBackendManager.h:54
std::map< std::string, DtIfPing * > Pings
Definition: vrfSimBackendManager.h:412
const int DtSessionScenarioErrorLoading
Definition: vrfSimBackendManager.h:48
std::map< std::string, bool > myJustRolledBackMap
Definition: vrfSimBackendManager.h:393
const int DtSessionScenarioLoading
Definition: vrfSimBackendManager.h:47
boost::signals2::signal< void(DtSimulationAddress, DtIfPing *)> signal_receivedPing
Handles pinging of the server for requests/responses and whether or not there is a ping...
Definition: vrfSimBackendManager.h:321
boost::signals2::signal< void(int)> signal_sessionUpdated
Definition: vrfSimBackendManager.h:331
const int DtSessionScenarioJustReinitialized
Definition: vrfSimBackendManager.h:59
Definition: localWeatherManager.h:31
#define DT_DLL_VRFGUICORE
Contains DLL export macros.
Definition: vrfGuiCore.h:25
Instances of DtBackend are created and maintained by a DtVrfBackendListener, and are containers for d...
Definition: backend.h:51
Basic container class that holds the status of a session of VRF sim engines.
Definition: sessionStatus.h:21
boost::signals2::signal< void()> signal_allBackendsLoaded
Definition: vrfSimBackendManager.h:244
const DtVrfSimBackendStates & allBackendStates() const
All backend states (regadless of DtScenarioCapabilities_CreateObjects capability) ...
Definition: vrfSimBackendManager.h:215
DtSimulationAddress mySelectedBackend
Definition: vrfSimBackendManager.h:377
const DtVrfSimBackendStates & backendStates() const
These are only that backend states that can be simulated on (i.e has the DtScenarioCapabilities_Creat...
Definition: vrfSimBackendManager.h:209
boost::signals2::signal< void(const DtVrfBackendState &)> signal_backendDiscovered
Definition: vrfSimBackendManager.h:326
std::set< std::string > myBackendWasClosing
Definition: vrfSimBackendManager.h:397
bool myInSaveCallback
Definition: vrfSimBackendManager.h:405
const int DtSessionChangedScenario
Definition: vrfSimBackendManager.h:41
double myLastSimTime
Definition: vrfSimBackendManager.h:401
DtSessionStatus mySessionStatus
Definition: vrfSimBackendManager.h:386
std::map< std::string, DtVrfBackendState * > DtVrfSimBackendStates
Definition: vrfSimBackendManager.h:82
std::string sessionScenario() const
Definition: vrfSimBackendManager.h:262
std::map< std::string, bool > myJustClosedMap
Definition: vrfSimBackendManager.h:392
const int DtSessionScenarioImporting
Definition: vrfSimBackendManager.h:49
std::map< std::string, bool > myAlreadyDuplicateWarned
Definition: vrfSimBackendManager.h:382
std::map< std::string, bool > myCreatingSimulationObjectGroupMap
Definition: vrfSimBackendManager.h:396
char frameRateMode() const
Definition: vrfSimBackendManager.h:257
std::map< std::string, bool > myLoadingMap
Definition: vrfSimBackendManager.h:389
const int DtSessionChangedSimTerrain
Definition: vrfSimBackendManager.h:57
std::map< std::string, bool > myNeedToLoad
Definition: vrfSimBackendManager.h:383
virtual const std::map< std::string, bool > backendsClosing() const
Definition: vrfSimBackendManager.h:309
File: simMsg.h.
Definition: simMessage.h:35
std::set< std::string > myWarnDuplicateOnAdd
Definition: vrfSimBackendManager.h:398
class DtIfPing:
Definition: ifPing.h:18
std::map< std::string, char > myBackendsWaitingForSave
Definition: vrfSimBackendManager.h:381
boost::signals2::signal< void(const DtVrfBackendState &)> signal_duplicateSimulationAddress
Definition: vrfSimBackendManager.h:332
const int DtSessionSimulationStateChanged
Definition: vrfSimBackendManager.h:56
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
const int DtSessionScenarioJustSavedSimulationObjectGroup
Definition: vrfSimBackendManager.h:52
bool myBackendsAlreadyLoaded
Definition: vrfSimBackendManager.h:410
const int DtSessionScenarioJustLoaded
Definition: vrfSimBackendManager.h:43
const int DtSessionChangedScenarioFilename
Definition: vrfSimBackendManager.h:53
makVrv::DtBaseSimulation * mySimulation
Definition: vrfSimBackendManager.h:374
bool mySignalWhenAllBackendsLoaded
Definition: vrfSimBackendManager.h:379
boost::signals2::signal< void(bool)> signal_allBackendsSaved
Definition: vrfSimBackendManager.h:254
const int DtSessionChangedNumberBEs
Definition: vrfSimBackendManager.h:42
Pings myPings
Definition: vrfSimBackendManager.h:413
const int DtSessionChangedSimulationModelSets
Definition: vrfSimBackendManager.h:44
std::set< std::string > myNeedToSave
Definition: vrfSimBackendManager.h:384
The class that is the interface between the GUI and the back-end.
Definition: queuedManager.h:27
double myDateAndTimeOfDay
Definition: vrfSimBackendManager.h:402
Base class to provide boost signal/slot management.
const int DtBackendChangedSimRemoteAttachmentBalancingScheme
Definition: vrfSimBackendManager.h:62
const std::vector< DtFilename > & simulationModelSets() const
Definition: vrfSimBackendManager.h:290
Maintains and signals state of the simulation engines that are currently connected to the GUI...
Definition: vrfSimBackendManager.h:79
const char int mode
Definition: ioapi.h:38
makVrv::DtSignalConnectionManager myConnectionManager
Definition: vrfSimBackendManager.h:403
boost::signals2::signal< void(const DtVrfBackendState &)> signal_frameRatesUpdated
Definition: vrfSimBackendManager.h:325
boost::signals2::signal< void(const DtVrfBackendState &)> signal_backendRemoved
Definition: vrfSimBackendManager.h:328
boost::signals2::signal< void()> signal_allBackendsClosed
Definition: vrfSimBackendManager.h:232
The DtDe is the core component of any VR-Vantage application. It owns a DtRenderer, DtDeCommunicator, as well as a DtDisplay and other things.
Definition: DtDe.h:76
boost::signals2::signal< void(const DtVrfBackendState &)> signal_nonSimulationBackenRemoved
Definition: vrfSimBackendManager.h:329
bool mySignalWhenAllBackendsClosed
Definition: vrfSimBackendManager.h:378
virtual DtSimulationStatus simulationStatus() const
Returns the current simulation status of all the back-ends in the simulation. See backend...
Definition: vrfSimBackendManager.h:163
DtVrfSimBackendStates myAllBackendStates
Definition: vrfSimBackendManager.h:376
const int DtSessionScenarioJustImported
Definition: vrfSimBackendManager.h:50
std::string sessionScenarioFilename() const
Definition: vrfSimBackendManager.h:269
std::map< std::string, bool > myReinitializingMap
Definition: vrfSimBackendManager.h:390
boost::signals2::signal< void(const DtSimulationAddress &)> signal_objectCountsChanged
Definition: vrfSimBackendManager.h:336
boost::signals2::signal< void()> signal_allBackendsAboutToBeRemoved
Definition: vrfSimBackendManager.h:334
const int DtBackendChangedGuiRuntimeLoadBalancingScheme
Definition: vrfSimBackendManager.h:61
std::string sessionGuiTerrain() const
Definition: vrfSimBackendManager.h:276
std::string sessionSimTerrain() const
Definition: vrfSimBackendManager.h:283
boost::signals2::signal< void(const DtVrfBackendState &, int)> signal_backendUpdated
Definition: vrfSimBackendManager.h:330
boost::signals2::signal< void(DtSimulationStatus)> signal_simulationStatusChanged
Definition: vrfSimBackendManager.h:335
double mySimTime
Definition: vrfSimBackendManager.h:400

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)