VR-Forces 5.0.1 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 <vrvCore/DtSimData.h>
19 #include <vrfutil/sessionStatus.h>
20 
21 #include <boost/function.hpp>
22 
23 
24 class DtBackend;
26 class DtSimulationAddress;
27 class DtSimMessage;
28 class DtIfPing;
29 
30 namespace makVrv
31 {
32  class DtDe;
33 }
34 
35 namespace makVrv
36 {
37  class DtBaseSimulation;
38 }
39 
41 const int DtSessionChangedTerrain = 0x00000001;
42 const int DtSessionChangedScenario = 0x00000002;
43 const int DtSessionChangedNumberBEs = 0x00000004;
44 const int DtSessionScenarioJustLoaded = 0x00000008;
45 const int DtSessionChangedSimulationModelSets = 0x00000010;
46 const int DtSessionScenarioJustClosed = 0x00000020;
47 const int DtSessionScenarioClosing = 0x00000040;
48 const int DtSessionScenarioLoading = 0x00000080;
49 const int DtSessionScenarioErrorLoading = 0x00000100;
50 const int DtSessionScenarioImporting = 0x00000200;
51 const int DtSessionScenarioJustImported = 0x00000400;
54 const int DtSessionChangedScenarioFilename = 0x00002000;
55 const int DtSessionScenarioJustRolledBack = 0x00004000;
56 const int DtSessionScenarioRollingBack = 0x00008000;
57 const int DtSessionSimulationStateChanged = 0x00010000;
58 const int DtSessionChangedSimTerrain = 0x00020000;
59 const int DtSessionScenarioReinitializing = 0x00040000;
60 const int DtSessionScenarioJustReinitialized = 0x00080000;
62 
63 namespace makVrf
64 {
65  class DtVrfBackEndState;
66  class DtLocalWeatherManager;
67 
78  {
79  public:
80  typedef std::map<std::string, DtVrfBackendState*> DtVrfSimBackendStates;
81 
82  public:
84  virtual ~DtVrfSimBackendManager();
85 
87  static DtVrfSimBackendManager& instance(makVrv::DtDe& de);
88 
89  public:
91  virtual bool backEndsPresent() const;
92 
94  virtual bool anyBackendsLoading() const;
95 
97  virtual bool anyBackendsCreatingSimulationObjectGroup() const;
98 
100  virtual bool anyBackendsClosing() const;
101 
103  virtual bool allBackendsClosingOrClosed() const;
104 
106  virtual bool anyBackendsLoaded() const;
107 
109  virtual bool allBackendsLoaded() const;
110 
112  virtual bool backendLoaded(const DtSimulationAddress&) const;
113 
115  virtual bool backendSaving(const DtSimulationAddress&) const;
116 
118  virtual bool anyBackendsPlaying() const;
119 
121  virtual bool anyBackendsInControlState(int state) const;
122 
124  virtual bool hasDynamicTerrainServer() const;
125 
127  virtual DtSimulationAddress firstBackendThatCanSimulate() const;
128 
130  virtual bool allBackendsCanSimulate() const;
131 
133  virtual bool anyBackendCanSimulate() const;
134 
136  virtual bool backendCanSimulate(const DtSimulationAddress&) const;
137 
139  virtual void duplicateBackendDiscovered(const DtSimulationAddress&);
140 
142  virtual double timeMultiplier() const;
143 
149 
150  virtual void removeAllBackends();
151  virtual void addBackend(const DtBackend*);
152  virtual void backendRemoved(const DtSimulationAddress&);
153  virtual void backendUpdated(const DtSimulationAddress&, const DtBackend*);
154  virtual void simulationStatusChanged(DtSimulationStatus);
156 
159  {
160  return mySimulationStatus;
161  }
162 
163  virtual DtVrfBackendState* stateFor(const DtSimulationAddress&) const;
164 
165  virtual const DtSimulationAddress& selectedBackend() const;
166 
167  virtual void setSelectedBackend(const DtSimulationAddress&);
168 
170  virtual void simulationAddresses(std::set<std::string>&);
171 
172  virtual int numberOfBackends() const;
173 
175  virtual void clearSelectedBackend();
176 
178  virtual DtVrfBackendState* firstTimeBackend() const;
179 
181  virtual DtVrfBackendState* firstBackendThatIsLoaded() const;
182 
185  virtual DtSimulationAddress preferredBackendAddress() const;
186 
188  virtual double simTime() const;
189 
191  virtual double runDurationTime() const;
192 
194  virtual int scenarioRunId() const;
195 
198  virtual double timeOfDay() const;
199 
201  virtual double simStartSimTime() const;
202 
205  {
206  return myBackendStates;
207  }
208 
211  {
212  return myAllBackendStates;
213  }
214 
216  virtual std::map<short, int> currentObjectCounts() const;
217 
219  virtual const std::map<short, int>& currentObjectCount(const DtSimulationAddress&) const;
220 
221  public:
223  virtual void signalWhenAllBackendsClosed();
224 
226  virtual void signalIfAllBackendsClosed();
227  boost::signals2::signal<void ()> signal_allBackendsClosed;
228 
231  virtual void signalWhenAllBackendsLoaded();
232 
234  virtual void clearNotificationWhenBackendsLoaded();
235 
238  virtual void signalIfAllBackendsLoaded();
239  boost::signals2::signal<void ()> signal_allBackendsLoaded;
240 
242  virtual void signalWhenAllBackendsSaved();
243 
245  virtual void clearNotificationWhenBackendsSaved();
246 
248  virtual void signalIfAllBackendsSaved(bool checkpointSave);
249  boost::signals2::signal<void (bool)> signal_allBackendsSaved;
250 
251  virtual void setFrameRateMode(char mode);
252  char frameRateMode() const
253  {
254  return mySessionStatus.frameRateMode();
255  }
256 
257  std::string sessionScenario() const
258  {
259  return mySessionStatus.scenarioName().c_str();
260  }
261 
262  virtual void setSessionScenario(const std::string&);
263 
264  std::string sessionScenarioFilename() const
265  {
266  return mySessionStatus.scenarioFilename().c_str();
267  }
268 
269  virtual void setSessionScenarioFilename(const std::string&);
270 
271  std::string sessionGuiTerrain() const
272  {
273  return mySessionStatus.guiTerrainName().c_str();
274  }
275 
276  virtual void setSessionGuiTerrain(const std::string&);
277 
278  std::string sessionSimTerrain() const
279  {
280  return mySessionStatus.terrainName().c_str();
281  }
282 
283  virtual void setSessionSimTerrain(const std::string&);
284 
285  const std::vector<DtFilename>& simulationModelSets() const
286  {
287  return mySessionStatus.simulationModelSets();
288  }
289 
290  virtual void setSimulationModelSets(const DtRwNLengthStringVector&);
291 
293  virtual void sessionStatusChanged(const DtSessionStatus& status);
294 
295  virtual time_t dateAndTimeOfDay() const;
296  virtual void setDateAndTimeOfDay(time_t);
297  virtual void resetDateAndTimeOfDay();
298 
299  virtual const std::map<std::string, bool> backendsLoading() const
300  {
301  return myLoadingMap;
302  }
303 
304  virtual const std::map<std::string, bool> backendsClosing() const
305  {
306  return myClosingMap;
307  }
308 
311  virtual void pingServer(const DtSimulationAddress&);
312  virtual bool pingReceived(const DtSimulationAddress&) const;
313  virtual double latency(const DtSimulationAddress&) const;
314  virtual void processPing(DtSimMessage*);
315  virtual DtIfPing* pingForServer(const DtSimulationAddress&) const;
316  boost::signals2::signal<void (DtSimulationAddress, DtIfPing*)> signal_receivedPing;
318 
319  public:
320  boost::signals2::signal<void (const DtVrfBackendState&)> signal_frameRatesUpdated;
321  boost::signals2::signal<void (const DtVrfBackendState&)> signal_backendDiscovered;
322  boost::signals2::signal<void (const DtVrfBackendState&)> signal_nonSimulationBackendDiscovered;
323  boost::signals2::signal<void (const DtVrfBackendState&)> signal_backendRemoved;
324  boost::signals2::signal<void (const DtVrfBackendState&)> signal_nonSimulationBackenRemoved;
325  boost::signals2::signal<void (const DtVrfBackendState&, int)> signal_backendUpdated;
326  boost::signals2::signal<void (int)> signal_sessionUpdated;
327  boost::signals2::signal<void (const DtVrfBackendState&)> signal_duplicateSimulationAddress;
328  boost::signals2::signal<void (const DtSimulationAddress& old, const DtSimulationAddress& newaddr)> signal_selectedBackendChanged;
329  boost::signals2::signal<void ()> signal_allBackendsAboutToBeRemoved;
330  boost::signals2::signal<void (DtSimulationStatus)> signal_simulationStatusChanged;
331  boost::signals2::signal<void(const DtSimulationAddress&)> signal_objectCountsChanged;
332 
333  protected:
334  virtual void processSimulationStatusChanged(DtSimulationStatus);
335 
336  virtual DtLocalWeatherManager& localWeatherManager() const;
337 
339  virtual void tick();
340 
342  virtual double simTimeFromBackend() const;
343 
344  virtual void updateDateAndTimeOfDay();
345  virtual void slot_dateAndTimeOfDayChanged(int year, int month, int day, int hours, int mins, int secs);
346 
347  virtual void slot_frameRatesUpdated(const DtVrfBackendState&);
348  virtual void simulationBackendRemoved(DtVrfBackendState*);
349  virtual void simulationBackendDiscovered(DtVrfBackendState*);
350  virtual void simulationBackendUpdated(DtSimulationAddress, int);
351  virtual void duplicateSimulationBackendDiscovered(DtSimulationAddress);
352  virtual void processSessionStatusChange(DtSessionStatus);
353 
354  virtual void processLoadCompleteCallback(DtSimMessage*);
355  virtual void processSaveCompleteCallback(DtSimMessage*);
356 
358  virtual void backendSaved(const std::string&, bool checkpointSave);
359 
360  virtual void setBackendSaving(const DtSimulationAddress&, bool b);
361 
363  virtual void updateSessionInformation(int sessionFlags = 0);
364 
366  virtual void clear();
367 
368  protected:
369  makVrv::DtBaseSimulation* mySimulation;
372  mutable DtSimulationAddress mySelectedBackend;
376  std::map<std::string, char> myBackendsWaitingForSave;
377  std::map<std::string, bool> myAlreadyDuplicateWarned;
378  std::map<std::string, bool> myNeedToLoad;
379  std::set<std::string> myNeedToSave;
380 
382  std::map<std::string, bool> myJustLoadedMap;
383  std::map<std::string, bool> myLoadingMap;
384  std::map<std::string, bool> myReinitializingMap;
385  std::map<std::string, bool> myClosingMap;
386  std::map<std::string, bool> myJustClosedMap;
387  std::map<std::string, bool> myJustRolledBackMap;
388  std::map<std::string, bool> myRollingBackMap;
389  std::map<std::string, bool> myImportingMap;
390  std::map<std::string, bool> myCreatingSimulationObjectGroupMap;
391  std::set<std::string> myBackendWasClosing;
392  std::set<std::string> myWarnDuplicateOnAdd;
393 
394  double mySimTime;
400 
403 
405 
406  typedef std::map<std::string, DtIfPing*> Pings;
408  };
409 }
std::map< std::string, bool > myRollingBackMap
Definition: vrfSimBackendManager.h:388
Definition: vrfBackendState.h:69
bool myCloseProcessStarted
Definition: vrfSimBackendManager.h:398
const int DtSessionScenarioRollingBack
Definition: vrfSimBackendManager.h:56
const int DtSessionChangedTerrain
Flags for session changing (and what changed)
Definition: vrfSimBackendManager.h:41
const int DtSessionScenarioChangedFrameRateMode
Definition: vrfSimBackendManager.h:61
DtLocalWeatherManager * myLocalWeatherManager
Definition: vrfSimBackendManager.h:401
DtSimulationStatus
Definition: backend.h:26
const int DtSessionScenarioJustClosed
Definition: vrfSimBackendManager.h:46
bool mySignalWhenAllBackendsSaved
Definition: vrfSimBackendManager.h:375
boost::signals2::signal< void(const DtSimulationAddress &old, const DtSimulationAddress &newaddr)> signal_selectedBackendChanged
Definition: vrfSimBackendManager.h:328
Contains makVrv::DtSimData class.
const int DtSessionScenarioSaveSimulationObjectGroup
Definition: vrfSimBackendManager.h:52
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:382
boost::signals2::signal< void(const DtVrfBackendState &)> signal_nonSimulationBackendDiscovered
Definition: vrfSimBackendManager.h:322
virtual const std::map< std::string, bool > backendsLoading() const
Definition: vrfSimBackendManager.h:299
const int DtSessionScenarioClosing
Definition: vrfSimBackendManager.h:47
DtVrfSimBackendStates myBackendStates
Definition: vrfSimBackendManager.h:370
std::map< std::string, bool > myClosingMap
Definition: vrfSimBackendManager.h:385
std::map< std::string, bool > myImportingMap
Definition: vrfSimBackendManager.h:389
const int DtSessionScenarioReinitializing
Definition: vrfSimBackendManager.h:59
DtSimulationStatus mySimulationStatus
Definition: vrfSimBackendManager.h:402
const int DtSessionScenarioJustRolledBack
Definition: vrfSimBackendManager.h:55
std::map< std::string, DtIfPing * > Pings
Definition: vrfSimBackendManager.h:406
const int DtSessionScenarioErrorLoading
Definition: vrfSimBackendManager.h:49
std::map< std::string, bool > myJustRolledBackMap
Definition: vrfSimBackendManager.h:387
const int DtSessionScenarioLoading
Definition: vrfSimBackendManager.h:48
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:316
boost::signals2::signal< void(int)> signal_sessionUpdated
Definition: vrfSimBackendManager.h:326
const int DtSessionScenarioJustReinitialized
Definition: vrfSimBackendManager.h:60
Definition: localWeatherManager.h:36
#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:239
const DtVrfSimBackendStates & allBackendStates() const
All backend states (regadless of DtScenarioCapabilities_CreateObjects capability) ...
Definition: vrfSimBackendManager.h:210
DtSimulationAddress mySelectedBackend
Definition: vrfSimBackendManager.h:372
const DtVrfSimBackendStates & backendStates() const
These are only that backend states that can be simulated on (i.e has the DtScenarioCapabilities_Creat...
Definition: vrfSimBackendManager.h:204
boost::signals2::signal< void(const DtVrfBackendState &)> signal_backendDiscovered
Definition: vrfSimBackendManager.h:321
std::set< std::string > myBackendWasClosing
Definition: vrfSimBackendManager.h:391
bool myInSaveCallback
Definition: vrfSimBackendManager.h:399
const int DtSessionChangedScenario
Definition: vrfSimBackendManager.h:42
double myLastSimTime
Definition: vrfSimBackendManager.h:395
DtSessionStatus mySessionStatus
Definition: vrfSimBackendManager.h:381
std::map< std::string, DtVrfBackendState * > DtVrfSimBackendStates
Definition: vrfSimBackendManager.h:80
std::string sessionScenario() const
Definition: vrfSimBackendManager.h:257
std::map< std::string, bool > myJustClosedMap
Definition: vrfSimBackendManager.h:386
const int DtSessionScenarioImporting
Definition: vrfSimBackendManager.h:50
std::map< std::string, bool > myAlreadyDuplicateWarned
Definition: vrfSimBackendManager.h:377
std::map< std::string, bool > myCreatingSimulationObjectGroupMap
Definition: vrfSimBackendManager.h:390
char frameRateMode() const
Definition: vrfSimBackendManager.h:252
std::map< std::string, bool > myLoadingMap
Definition: vrfSimBackendManager.h:383
const int DtSessionChangedSimTerrain
Definition: vrfSimBackendManager.h:58
std::map< std::string, bool > myNeedToLoad
Definition: vrfSimBackendManager.h:378
virtual const std::map< std::string, bool > backendsClosing() const
Definition: vrfSimBackendManager.h:304
File: simMsg.h.
Definition: simMessage.h:35
std::set< std::string > myWarnDuplicateOnAdd
Definition: vrfSimBackendManager.h:392
class DtIfPing:
Definition: ifPing.h:18
std::map< std::string, char > myBackendsWaitingForSave
Definition: vrfSimBackendManager.h:376
boost::signals2::signal< void(const DtVrfBackendState &)> signal_duplicateSimulationAddress
Definition: vrfSimBackendManager.h:327
const int DtSessionSimulationStateChanged
Definition: vrfSimBackendManager.h:57
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
const int DtSessionScenarioJustSavedSimulationObjectGroup
Definition: vrfSimBackendManager.h:53
bool myBackendsAlreadyLoaded
Definition: vrfSimBackendManager.h:404
const int DtSessionScenarioJustLoaded
Definition: vrfSimBackendManager.h:44
const int DtSessionChangedScenarioFilename
Definition: vrfSimBackendManager.h:54
makVrv::DtBaseSimulation * mySimulation
Definition: vrfSimBackendManager.h:369
bool mySignalWhenAllBackendsLoaded
Definition: vrfSimBackendManager.h:374
boost::signals2::signal< void(bool)> signal_allBackendsSaved
Definition: vrfSimBackendManager.h:249
const int DtSessionChangedNumberBEs
Definition: vrfSimBackendManager.h:43
Pings myPings
Definition: vrfSimBackendManager.h:407
const int DtSessionChangedSimulationModelSets
Definition: vrfSimBackendManager.h:45
std::set< std::string > myNeedToSave
Definition: vrfSimBackendManager.h:379
The class that is the interface between the GUI and the back-end.
Definition: queuedManager.h:27
double myDateAndTimeOfDay
Definition: vrfSimBackendManager.h:396
Base class to provide boost signal/slot management.
const std::vector< DtFilename > & simulationModelSets() const
Definition: vrfSimBackendManager.h:285
Maintains and signals state of the simulation engines that are currently connected to the GUI...
Definition: vrfSimBackendManager.h:77
const char int mode
Definition: ioapi.h:38
makVrv::DtSignalConnectionManager myConnectionManager
Definition: vrfSimBackendManager.h:397
boost::signals2::signal< void(const DtVrfBackendState &)> signal_frameRatesUpdated
Definition: vrfSimBackendManager.h:320
boost::signals2::signal< void(const DtVrfBackendState &)> signal_backendRemoved
Definition: vrfSimBackendManager.h:323
boost::signals2::signal< void()> signal_allBackendsClosed
Definition: vrfSimBackendManager.h:227
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:70
boost::signals2::signal< void(const DtVrfBackendState &)> signal_nonSimulationBackenRemoved
Definition: vrfSimBackendManager.h:324
bool mySignalWhenAllBackendsClosed
Definition: vrfSimBackendManager.h:373
virtual DtSimulationStatus simulationStatus() const
Returns the current simulation status of all the back-ends in the simulation. See backend...
Definition: vrfSimBackendManager.h:158
DtVrfSimBackendStates myAllBackendStates
Definition: vrfSimBackendManager.h:371
const int DtSessionScenarioJustImported
Definition: vrfSimBackendManager.h:51
std::string sessionScenarioFilename() const
Definition: vrfSimBackendManager.h:264
std::map< std::string, bool > myReinitializingMap
Definition: vrfSimBackendManager.h:384
boost::signals2::signal< void(const DtSimulationAddress &)> signal_objectCountsChanged
Definition: vrfSimBackendManager.h:331
boost::signals2::signal< void()> signal_allBackendsAboutToBeRemoved
Definition: vrfSimBackendManager.h:329
std::string sessionGuiTerrain() const
Definition: vrfSimBackendManager.h:271
std::string sessionSimTerrain() const
Definition: vrfSimBackendManager.h:278
boost::signals2::signal< void(const DtVrfBackendState &, int)> signal_backendUpdated
Definition: vrfSimBackendManager.h:325
boost::signals2::signal< void(DtSimulationStatus)> signal_simulationStatusChanged
Definition: vrfSimBackendManager.h:330
double mySimTime
Definition: vrfSimBackendManager.h:394

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)