VR-Forces 4.10 Class Documentation
 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 #include <vrvUtil/signalslib.h>
23 
24 class DtBackend;
26 class DtSimulationAddress;
27 class DtSimMessage;
28 class DtIfLoadComplete;
29 class DtIfSaveComplete;
30 
31 namespace makVrv
32 {
33  class DtDe;
34 }
35 
36 namespace makVrv
37 {
38  class DtBaseSimulation;
39 }
40 
42 const int DtSessionChangedTerrain = 0x00000001;
43 const int DtSessionChangedScenario = 0x00000002;
44 const int DtSessionChangedNumberBEs = 0x00000004;
45 const int DtSessionScenarioJustLoaded = 0x00000008;
46 const int DtSessionChangedSimulationModelSets = 0x00000010;
47 const int DtSessionScenarioJustClosed = 0x00000020;
48 const int DtSessionScenarioClosing = 0x00000040;
49 const int DtSessionScenarioLoading = 0x00000080;
50 const int DtSessionScenarioErrorLoading = 0x00000100;
51 const int DtSessionScenarioImporting = 0x00000200;
52 const int DtSessionScenarioJustImported = 0x00000400;
55 const int DtSessionChangedScenarioFilename = 0x00002000;
56 const int DtSessionScenarioJustRolledBack = 0x00004000;
57 const int DtSessionScenarioRollingBack = 0x00008000;
58 const int DtSessionSimulationStateChanged = 0x00010000;
59 const int DtSessionChangedSimTerrain = 0x00020000;
60 const int DtSessionScenarioReinitializing = 0x00040000;
61 const int DtSessionScenarioJustReinitialized = 0x00080000;
62 
63 namespace makVrf
64 {
65  class DtVrfBackEndState;
66  class DtLocalWeatherManager;
67 
74  {
75  public:
76  typedef std::map<std::string, DtVrfBackendState*> DtVrfSimBackendStates;
77 
78  public:
80  virtual ~DtVrfSimBackendManager();
81 
83  static DtVrfSimBackendManager& instance(makVrv::DtDe& de);
84 
85  public:
87  virtual bool backEndsPresent() const;
88 
90  virtual bool anyBackendsLoading() const;
91 
93  virtual bool anyBackendsCreatingSimulationObjectGroup() const;
94 
96  virtual bool anyBackendsClosing() const;
97 
99  virtual bool allBackendsClosingOrClosed() const;
100 
102  virtual bool anyBackendsLoaded() const;
103 
105  virtual bool allBackendsLoaded() const;
106 
108  virtual bool backendLoaded(const DtSimulationAddress&) const;
109 
111  virtual bool backendSaving(const DtSimulationAddress&) const;
112 
114  virtual bool anyBackendsPlaying() const;
115 
117  virtual bool anyBackendsInControlState(int state) const;
118 
120  virtual bool hasDynamicTerrainServer() const;
121 
123  virtual DtSimulationAddress firstBackendThatCanSimulate() const;
124 
126  virtual bool allBackendsCanSimulate() const;
127 
129  virtual bool anyBackendCanSimulate() const;
130 
132  virtual bool backendCanSimulate(const DtSimulationAddress&) const;
133 
135  virtual void duplicateBackendDiscovered(const DtSimulationAddress&);
136 
138  virtual double timeMultiplier() const;
139 
145 
146  virtual void removeAllBackends();
147  virtual void addBackend(const DtBackend*);
148  virtual void backendRemoved(const DtSimulationAddress&);
149  virtual void backendUpdated(const DtSimulationAddress&, const DtBackend*);
150  virtual void simulationStatusChanged(DtSimulationStatus);
152 
155  {
156  return mySimulationStatus;
157  }
158 
159  virtual DtVrfBackendState* stateFor(const DtSimulationAddress&) const;
160 
161  virtual const DtSimulationAddress& selectedBackend() const;
162 
163  virtual void setSelectedBackend(const DtSimulationAddress&);
164 
166  virtual void simulationAddresses(std::set<std::string>&);
167 
168  virtual int numberOfBackends() const;
169 
171  virtual void clearSelectedBackend();
172 
174  virtual DtVrfBackendState* firstTimeBackend() const;
175 
177  virtual DtVrfBackendState* firstBackendThatIsLoaded() const;
178 
181  virtual DtSimulationAddress preferredBackendAddress() const;
182 
184  virtual double simTime() const;
185 
187  virtual double runDurationTime() const;
188 
190  virtual int scenarioRunId() const;
191 
194  virtual double timeOfDay() const;
195 
197  virtual double simStartSimTime() const;
198 
201  {
202  return myBackendStates;
203  }
204 
207  {
208  return myAllBackendStates;
209  }
210 
212  virtual std::map<short, int> currentObjectCounts() const;
213 
215  virtual const std::map<short, int>& currentObjectCount(const DtSimulationAddress&) const;
216 
217  public:
219  virtual void signalWhenAllBackendsClosed();
220 
222  virtual void signalIfAllBackendsClosed();
223  boost::signals2::signal<void ()> signal_allBackendsClosed;
224 
227  virtual void signalWhenAllBackendsLoaded();
228 
230  virtual void clearNotificationWhenBackendsLoaded();
231 
234  virtual void signalIfAllBackendsLoaded();
235  boost::signals2::signal<void ()> signal_allBackendsLoaded;
236 
238  virtual void signalWhenAllBackendsSaved();
239 
241  virtual void clearNotificationWhenBackendsSaved();
242 
244  virtual void signalIfAllBackendsSaved(bool checkpointSave);
245  boost::signals2::signal<void (bool)> signal_allBackendsSaved;
246 
247  std::string sessionScenario() const
248  {
249  return mySessionStatus.scenarioName().c_str();
250  }
251 
252  virtual void setSessionScenario(const std::string&);
253 
254  std::string sessionScenarioFilename() const
255  {
256  return mySessionStatus.scenarioFilename().c_str();
257  }
258 
259  virtual void setSessionScenarioFilename(const std::string&);
260 
261  std::string sessionGuiTerrain() const
262  {
263  return mySessionStatus.guiTerrainName().c_str();
264  }
265 
266  virtual void setSessionGuiTerrain(const std::string&);
267 
268  std::string sessionSimTerrain() const
269  {
270  return mySessionStatus.terrainName().c_str();
271  }
272 
273  virtual void setSessionSimTerrain(const std::string&);
274 
275  const std::vector<DtFilename>& simulationModelSets() const
276  {
277  return mySessionStatus.simulationModelSets();
278  }
279 
280  virtual void setSimulationModelSets(const DtRwNLengthStringVector&);
281 
283  virtual void sessionStatusChanged(const DtSessionStatus& status);
284 
285  virtual time_t dateAndTimeOfDay() const;
286  virtual void setDateAndTimeOfDay(time_t);
287  virtual void resetDateAndTimeOfDay();
288 
289  virtual const std::map<std::string, bool> backendsLoading() const
290  {
291  return myLoadingMap;
292  }
293 
294  virtual const std::map<std::string, bool> backendsClosing() const
295  {
296  return myClosingMap;
297  }
298 
299  public:
300  boost::signals2::signal<void (const DtVrfBackendState&)> signal_frameRatesUpdated;
301  boost::signals2::signal<void (const DtVrfBackendState&)> signal_backendDiscovered;
302  boost::signals2::signal<void (const DtVrfBackendState&)> signal_nonSimulationBackendDiscovered;
303  boost::signals2::signal<void (const DtVrfBackendState&)> signal_backendRemoved;
304  boost::signals2::signal<void (const DtVrfBackendState&)> signal_nonSimulationBackenRemoved;
305  boost::signals2::signal<void (const DtVrfBackendState&, int)> signal_backendUpdated;
306  boost::signals2::signal<void (int)> signal_sessionUpdated;
307  boost::signals2::signal<void (const DtVrfBackendState&)> signal_duplicateSimulationAddress;
308  boost::signals2::signal<void (const DtSimulationAddress& old, const DtSimulationAddress& newaddr)> signal_selectedBackendChanged;
309  boost::signals2::signal<void ()> signal_allBackendsAboutToBeRemoved;
310  boost::signals2::signal<void (DtSimulationStatus)> signal_simulationStatusChanged;
311  boost::signals2::signal<void(const DtSimulationAddress&)> signal_objectCountsChanged;
312 
313  protected:
314  virtual void processSimulationStatusChanged(DtSimulationStatus);
315 
316  virtual DtLocalWeatherManager& localWeatherManager() const;
317 
319  virtual void tick();
320 
322  virtual double simTimeFromBackend() const;
323 
324  virtual void updateDateAndTimeOfDay();
325  virtual void slot_dateAndTimeOfDayChanged(int year, int month, int day, int hours, int mins, int secs);
326 
327  virtual void slot_frameRatesUpdated(const DtVrfBackendState&);
328  virtual void simulationBackendRemoved(DtVrfBackendState*);
329  virtual void simulationBackendDiscovered(DtVrfBackendState*);
330  virtual void simulationBackendUpdated(DtSimulationAddress, int);
331  virtual void duplicateSimulationBackendDiscovered(DtSimulationAddress);
332  virtual void processSessionStatusChange(DtSessionStatus);
333 
334  virtual void processLoadCompleteCallback(DtSimMessage*);
335  virtual void processSaveCompleteCallback(DtSimMessage*);
336 
338  virtual void backendSaved(const std::string&, bool checkpointSave);
339 
340  virtual void setBackendSaving(const DtSimulationAddress&, bool b);
341 
343  virtual void updateSessionInformation(int sessionFlags = 0);
344 
346  virtual void clear();
347 
348  protected:
349  makVrv::DtBaseSimulation* mySimulation;
352  mutable DtSimulationAddress mySelectedBackend;
356  std::map<std::string, char> myBackendsWaitingForSave;
357  std::map<std::string, bool> myAlreadyDuplicateWarned;
358  std::map<std::string, bool> myNeedToLoad;
359  std::set<std::string> myNeedToSave;
360 
362  std::map<std::string, bool> myJustLoadedMap;
363  std::map<std::string, bool> myLoadingMap;
364  std::map<std::string, bool> myReinitializingMap;
365  std::map<std::string, bool> myClosingMap;
366  std::map<std::string, bool> myJustClosedMap;
367  std::map<std::string, bool> myJustRolledBackMap;
368  std::map<std::string, bool> myRollingBackMap;
369  std::map<std::string, bool> myImportingMap;
370  std::map<std::string, bool> myCreatingSimulationObjectGroupMap;
371  std::set<std::string> myBackendWasClosing;
372  std::set<std::string> myWarnDuplicateOnAdd;
373 
374  double mySimTime;
380 
383 
385  };
386 }
std::map< std::string, bool > myRollingBackMap
Definition: vrfSimBackendManager.h:368
Definition: vrfBackendState.h:69
bool myCloseProcessStarted
Definition: vrfSimBackendManager.h:378
const int DtSessionScenarioRollingBack
Definition: vrfSimBackendManager.h:57
const int DtSessionChangedTerrain
Flags for session changing (and what changed)
Definition: vrfSimBackendManager.h:42
DtLocalWeatherManager * myLocalWeatherManager
Definition: vrfSimBackendManager.h:381
DtSimulationStatus
Definition: backend.h:26
const int DtSessionScenarioJustClosed
Definition: vrfSimBackendManager.h:47
bool mySignalWhenAllBackendsSaved
Definition: vrfSimBackendManager.h:355
boost::signals2::signal< void(const DtSimulationAddress &old, const DtSimulationAddress &newaddr)> signal_selectedBackendChanged
Definition: vrfSimBackendManager.h:308
Contains makVrv::DtSimData class.
const int DtSessionScenarioSaveSimulationObjectGroup
Definition: vrfSimBackendManager.h:53
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:362
boost::signals2::signal< void(const DtVrfBackendState &)> signal_nonSimulationBackendDiscovered
Definition: vrfSimBackendManager.h:302
class DtIfComplete:
Definition: ifLoadComplete.h:18
virtual const std::map< std::string, bool > backendsLoading() const
Definition: vrfSimBackendManager.h:289
const int DtSessionScenarioClosing
Definition: vrfSimBackendManager.h:48
DtVrfSimBackendStates myBackendStates
Definition: vrfSimBackendManager.h:350
std::map< std::string, bool > myClosingMap
Definition: vrfSimBackendManager.h:365
std::map< std::string, bool > myImportingMap
Definition: vrfSimBackendManager.h:369
const int DtSessionScenarioReinitializing
Definition: vrfSimBackendManager.h:60
DtSimulationStatus mySimulationStatus
Definition: vrfSimBackendManager.h:382
const int DtSessionScenarioJustRolledBack
Definition: vrfSimBackendManager.h:56
const int DtSessionScenarioErrorLoading
Definition: vrfSimBackendManager.h:50
std::map< std::string, bool > myJustRolledBackMap
Definition: vrfSimBackendManager.h:367
const int DtSessionScenarioLoading
Definition: vrfSimBackendManager.h:49
boost::signals2::signal< void(int)> signal_sessionUpdated
Definition: vrfSimBackendManager.h:306
const int DtSessionScenarioJustReinitialized
Definition: vrfSimBackendManager.h:61
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:235
const DtVrfSimBackendStates & allBackendStates() const
All backend states (regadless of DtScenarioCapabilities_CreateObjects capability) ...
Definition: vrfSimBackendManager.h:206
DtSimulationAddress mySelectedBackend
Definition: vrfSimBackendManager.h:352
const DtVrfSimBackendStates & backendStates() const
These are only that backend states that can be simulated on (i.e has the DtScenarioCapabilities_Creat...
Definition: vrfSimBackendManager.h:200
boost::signals2::signal< void(const DtVrfBackendState &)> signal_backendDiscovered
Definition: vrfSimBackendManager.h:301
std::set< std::string > myBackendWasClosing
Definition: vrfSimBackendManager.h:371
bool myInSaveCallback
Definition: vrfSimBackendManager.h:379
const int DtSessionChangedScenario
Definition: vrfSimBackendManager.h:43
double myLastSimTime
Definition: vrfSimBackendManager.h:375
DtSessionStatus mySessionStatus
Definition: vrfSimBackendManager.h:361
std::map< std::string, DtVrfBackendState * > DtVrfSimBackendStates
Definition: vrfSimBackendManager.h:76
std::string sessionScenario() const
Definition: vrfSimBackendManager.h:247
std::map< std::string, bool > myJustClosedMap
Definition: vrfSimBackendManager.h:366
const int DtSessionScenarioImporting
Definition: vrfSimBackendManager.h:51
std::map< std::string, bool > myAlreadyDuplicateWarned
Definition: vrfSimBackendManager.h:357
std::map< std::string, bool > myCreatingSimulationObjectGroupMap
Definition: vrfSimBackendManager.h:370
std::map< std::string, bool > myLoadingMap
Definition: vrfSimBackendManager.h:363
const int DtSessionChangedSimTerrain
Definition: vrfSimBackendManager.h:59
std::map< std::string, bool > myNeedToLoad
Definition: vrfSimBackendManager.h:358
virtual const std::map< std::string, bool > backendsClosing() const
Definition: vrfSimBackendManager.h:294
File: simMsg.h.
Definition: simMessage.h:35
std::set< std::string > myWarnDuplicateOnAdd
Definition: vrfSimBackendManager.h:372
std::map< std::string, char > myBackendsWaitingForSave
Definition: vrfSimBackendManager.h:356
boost::signals2::signal< void(const DtVrfBackendState &)> signal_duplicateSimulationAddress
Definition: vrfSimBackendManager.h:307
const int DtSessionSimulationStateChanged
Definition: vrfSimBackendManager.h:58
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
const int DtSessionScenarioJustSavedSimulationObjectGroup
Definition: vrfSimBackendManager.h:54
bool myBackendsAlreadyLoaded
Definition: vrfSimBackendManager.h:384
const int DtSessionScenarioJustLoaded
Definition: vrfSimBackendManager.h:45
const int DtSessionChangedScenarioFilename
Definition: vrfSimBackendManager.h:55
makVrv::DtBaseSimulation * mySimulation
Definition: vrfSimBackendManager.h:349
bool mySignalWhenAllBackendsLoaded
Definition: vrfSimBackendManager.h:354
boost::signals2::signal< void(bool)> signal_allBackendsSaved
Definition: vrfSimBackendManager.h:245
const int DtSessionChangedNumberBEs
Definition: vrfSimBackendManager.h:44
const int DtSessionChangedSimulationModelSets
Definition: vrfSimBackendManager.h:46
std::set< std::string > myNeedToSave
Definition: vrfSimBackendManager.h:359
The class that is the interface between the GUI and the back-end.
Definition: queuedManager.h:26
double myDateAndTimeOfDay
Definition: vrfSimBackendManager.h:376
Base class to provide boost signal/slot management.
const std::vector< DtFilename > & simulationModelSets() const
Definition: vrfSimBackendManager.h:275
Maintains and signals state of the simulation engines that are currently connected to the GUI...
Definition: vrfSimBackendManager.h:73
makVrv::DtSignalConnectionManager myConnectionManager
Definition: vrfSimBackendManager.h:377
boost::signals2::signal< void(const DtVrfBackendState &)> signal_frameRatesUpdated
Definition: vrfSimBackendManager.h:300
boost::signals2::signal< void(const DtVrfBackendState &)> signal_backendRemoved
Definition: vrfSimBackendManager.h:303
boost::signals2::signal< void()> signal_allBackendsClosed
Definition: vrfSimBackendManager.h:223
The DtDe is the core component of any VR-Vantage application.
Definition: DtDe.h:69
boost::signals2::signal< void(const DtVrfBackendState &)> signal_nonSimulationBackenRemoved
Definition: vrfSimBackendManager.h:304
bool mySignalWhenAllBackendsClosed
Definition: vrfSimBackendManager.h:353
DtIfSaveComplete is sent from the backend whenever it completes a save.
Definition: ifSaveComplete.h:22
virtual DtSimulationStatus simulationStatus() const
Returns the current simulation status of all the back-ends in the simulation. See backend...
Definition: vrfSimBackendManager.h:154
DtVrfSimBackendStates myAllBackendStates
Definition: vrfSimBackendManager.h:351
const int DtSessionScenarioJustImported
Definition: vrfSimBackendManager.h:52
std::string sessionScenarioFilename() const
Definition: vrfSimBackendManager.h:254
std::map< std::string, bool > myReinitializingMap
Definition: vrfSimBackendManager.h:364
boost::signals2::signal< void(const DtSimulationAddress &)> signal_objectCountsChanged
Definition: vrfSimBackendManager.h:311
boost::signals2::signal< void()> signal_allBackendsAboutToBeRemoved
Definition: vrfSimBackendManager.h:309
std::string sessionGuiTerrain() const
Definition: vrfSimBackendManager.h:261
std::string sessionSimTerrain() const
Definition: vrfSimBackendManager.h:268
boost::signals2::signal< void(const DtVrfBackendState &, int)> signal_backendUpdated
Definition: vrfSimBackendManager.h:305
boost::signals2::signal< void(DtSimulationStatus)> signal_simulationStatusChanged
Definition: vrfSimBackendManager.h:310
double mySimTime
Definition: vrfSimBackendManager.h:374

Document ID: Generated on Tue Sep 21 17:42:52 EDT 2021 from SVN revision 234861
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)