VR-Forces 4.8 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 <boost/signals2.hpp>
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  return mySelectedBackend;
164  }
165 
166  virtual void setSelectedBackend(const DtSimulationAddress&);
167 
169  virtual void simulationAddresses(std::set<std::string>&);
170 
171  virtual int numberOfBackends() const;
172 
174  virtual void clearSelectedBackend();
175 
177  virtual DtVrfBackendState* firstTimeBackend() const;
178 
180  virtual double simTime() const;
181 
183  virtual double runDurationTime() const;
184 
186  virtual int scenarioRunId() const;
187 
190  virtual double timeOfDay() const;
191 
193  virtual double simStartSimTime() const;
194 
197  {
198  return myBackendStates;
199  }
200 
203  {
204  return myAllBackendStates;
205  }
206 
208  virtual std::map<short, int> currentObjectCounts() const;
209 
211  virtual const std::map<short, int>& currentObjectCount(const DtSimulationAddress&) const;
212 
213  public:
215  virtual void signalWhenAllBackendsClosed();
216 
218  virtual void signalIfAllBackendsClosed();
219  boost::signals2::signal<void ()> signal_allBackendsClosed;
220 
223  virtual void signalWhenAllBackendsLoaded();
224 
226  virtual void clearNotificationWhenBackendsLoaded();
227 
230  virtual void signalIfAllBackendsLoaded();
231  boost::signals2::signal<void ()> signal_allBackendsLoaded;
232 
234  virtual void signalWhenAllBackendsSaved();
235 
237  virtual void clearNotificationWhenBackendsSaved();
238 
240  virtual void signalIfAllBackendsSaved(bool checkpointSave);
241  boost::signals2::signal<void (bool)> signal_allBackendsSaved;
242 
243  std::string sessionScenario() const
244  {
245  return mySessionStatus.scenarioName().c_str();
246  }
247 
248  virtual void setSessionScenario(const std::string&);
249 
250  std::string sessionScenarioFilename() const
251  {
252  return mySessionStatus.scenarioFilename().c_str();
253  }
254 
255  virtual void setSessionScenarioFilename(const std::string&);
256 
257  std::string sessionGuiTerrain() const
258  {
259  return mySessionStatus.guiTerrainName().c_str();
260  }
261 
262  virtual void setSessionGuiTerrain(const std::string&);
263 
264  std::string sessionSimTerrain() const
265  {
266  return mySessionStatus.terrainName().c_str();
267  }
268 
269  virtual void setSessionSimTerrain(const std::string&);
270 
271  const std::vector<DtFilename>& simulationModelSets() const
272  {
273  return mySessionStatus.simulationModelSets();
274  }
275 
276  virtual void setSimulationModelSets(const DtRwNLengthStringVector&);
277 
279  virtual void sessionStatusChanged(const DtSessionStatus& status);
280 
281  virtual time_t dateAndTimeOfDay() const;
282  virtual void setDateAndTimeOfDay(time_t);
283  virtual void resetDateAndTimeOfDay();
284 
285  virtual const std::map<std::string, bool> backendsLoading() const
286  {
287  return myLoadingMap;
288  }
289 
290  virtual const std::map<std::string, bool> backendsClosing() const
291  {
292  return myClosingMap;
293  }
294 
295  public:
296  boost::signals2::signal<void (const DtVrfBackendState&)> signal_frameRatesUpdated;
297  boost::signals2::signal<void (const DtVrfBackendState&)> signal_backendDiscovered;
298  boost::signals2::signal<void (const DtVrfBackendState&)> signal_nonSimulationBackendDiscovered;
299  boost::signals2::signal<void (const DtVrfBackendState&)> signal_backendRemoved;
300  boost::signals2::signal<void (const DtVrfBackendState&)> signal_nonSimulationBackenRemoved;
301  boost::signals2::signal<void (const DtVrfBackendState&, int)> signal_backendUpdated;
302  boost::signals2::signal<void (int)> signal_sessionUpdated;
303  boost::signals2::signal<void (const DtVrfBackendState&)> signal_duplicateSimulationAddress;
304  boost::signals2::signal<void (const DtSimulationAddress& old, const DtSimulationAddress& newaddr)> signal_selectedBackendChanged;
305  boost::signals2::signal<void ()> signal_allBackendsAboutToBeRemoved;
306  boost::signals2::signal<void (DtSimulationStatus)> signal_simulationStatusChanged;
307 
308  protected:
309  virtual void processSimulationStatusChanged(DtSimulationStatus);
310 
311  virtual DtLocalWeatherManager& localWeatherManager() const;
312 
314  virtual void tick();
315 
317  virtual double simTimeFromBackend() const;
318 
319  virtual void updateDateAndTimeOfDay();
320  virtual void slot_dateAndTimeOfDayChanged(int year, int month, int day, int hours, int mins, int secs);
321 
322  virtual void slot_frameRatesUpdated(const DtVrfBackendState&);
323  virtual void simulationBackendRemoved(DtVrfBackendState*);
324  virtual void simulationBackendDiscovered(DtVrfBackendState*);
325  virtual void simulationBackendUpdated(DtSimulationAddress, int);
326  virtual void duplicateSimulationBackendDiscovered(DtSimulationAddress);
327  virtual void processSessionStatusChange(DtSessionStatus);
328 
329  virtual void processLoadCompleteCallback(DtSimMessage*);
330  virtual void processSaveCompleteCallback(DtSimMessage*);
331 
333  virtual void backendSaved(const std::string&, bool checkpointSave);
334 
335  virtual void setBackendSaving(const DtSimulationAddress&, bool b);
336 
338  virtual void updateSessionInformation(int sessionFlags = 0);
339 
341  virtual void clear();
342 
343  protected:
344  makVrv::DtBaseSimulation* mySimulation;
347  DtSimulationAddress mySelectedBackend;
351  std::map<std::string, char> myBackendsWaitingForSave;
352  std::map<std::string, bool> myAlreadyDuplicateWarned;
353  std::map<std::string, bool> myNeedToLoad;
354  std::set<std::string> myNeedToSave;
355 
357  std::map<std::string, bool> myJustLoadedMap;
358  std::map<std::string, bool> myLoadingMap;
359  std::map<std::string, bool> myReinitializingMap;
360  std::map<std::string, bool> myClosingMap;
361  std::map<std::string, bool> myJustClosedMap;
362  std::map<std::string, bool> myJustRolledBackMap;
363  std::map<std::string, bool> myRollingBackMap;
364  std::map<std::string, bool> myImportingMap;
365  std::map<std::string, bool> myCreatingSimulationObjectGroupMap;
366  std::set<std::string> myBackendWasClosing;
367  std::set<std::string> myWarnDuplicateOnAdd;
368 
369  double mySimTime;
375 
378 
380  };
381 }
std::map< std::string, bool > myRollingBackMap
Definition: vrfSimBackendManager.h:363
Definition: vrfBackendState.h:69
bool myCloseProcessStarted
Definition: vrfSimBackendManager.h:373
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:376
DtSimulationStatus
Definition: backend.h:26
const int DtSessionScenarioJustClosed
Definition: vrfSimBackendManager.h:47
bool mySignalWhenAllBackendsSaved
Definition: vrfSimBackendManager.h:350
boost::signals2::signal< void(const DtSimulationAddress &old, const DtSimulationAddress &newaddr)> signal_selectedBackendChanged
Definition: vrfSimBackendManager.h:304
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:357
boost::signals2::signal< void(const DtVrfBackendState &)> signal_nonSimulationBackendDiscovered
Definition: vrfSimBackendManager.h:298
class DtIfComplete:
Definition: ifLoadComplete.h:18
virtual const std::map< std::string, bool > backendsLoading() const
Definition: vrfSimBackendManager.h:285
const int DtSessionScenarioClosing
Definition: vrfSimBackendManager.h:48
DtVrfSimBackendStates myBackendStates
Definition: vrfSimBackendManager.h:345
std::map< std::string, bool > myClosingMap
Definition: vrfSimBackendManager.h:360
std::map< std::string, bool > myImportingMap
Definition: vrfSimBackendManager.h:364
const int DtSessionScenarioReinitializing
Definition: vrfSimBackendManager.h:60
DtSimulationStatus mySimulationStatus
Definition: vrfSimBackendManager.h:377
const int DtSessionScenarioJustRolledBack
Definition: vrfSimBackendManager.h:56
const int DtSessionScenarioErrorLoading
Definition: vrfSimBackendManager.h:50
std::map< std::string, bool > myJustRolledBackMap
Definition: vrfSimBackendManager.h:362
const int DtSessionScenarioLoading
Definition: vrfSimBackendManager.h:49
boost::signals2::signal< void(int)> signal_sessionUpdated
Definition: vrfSimBackendManager.h:302
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:231
const DtVrfSimBackendStates & allBackendStates() const
All backend states (regadless of DtScenarioCapabilities_CreateObjects capability) ...
Definition: vrfSimBackendManager.h:202
DtSimulationAddress mySelectedBackend
Definition: vrfSimBackendManager.h:347
const DtVrfSimBackendStates & backendStates() const
These are only that backend states that can be simulated on (i.e has the DtScenarioCapabilities_Creat...
Definition: vrfSimBackendManager.h:196
boost::signals2::signal< void(const DtVrfBackendState &)> signal_backendDiscovered
Definition: vrfSimBackendManager.h:297
std::set< std::string > myBackendWasClosing
Definition: vrfSimBackendManager.h:366
bool myInSaveCallback
Definition: vrfSimBackendManager.h:374
const int DtSessionChangedScenario
Definition: vrfSimBackendManager.h:43
double myLastSimTime
Definition: vrfSimBackendManager.h:370
DtSessionStatus mySessionStatus
Definition: vrfSimBackendManager.h:356
std::map< std::string, DtVrfBackendState * > DtVrfSimBackendStates
Definition: vrfSimBackendManager.h:76
std::string sessionScenario() const
Definition: vrfSimBackendManager.h:243
std::map< std::string, bool > myJustClosedMap
Definition: vrfSimBackendManager.h:361
const int DtSessionScenarioImporting
Definition: vrfSimBackendManager.h:51
std::map< std::string, bool > myAlreadyDuplicateWarned
Definition: vrfSimBackendManager.h:352
std::map< std::string, bool > myCreatingSimulationObjectGroupMap
Definition: vrfSimBackendManager.h:365
std::map< std::string, bool > myLoadingMap
Definition: vrfSimBackendManager.h:358
const int DtSessionChangedSimTerrain
Definition: vrfSimBackendManager.h:59
std::map< std::string, bool > myNeedToLoad
Definition: vrfSimBackendManager.h:353
virtual const std::map< std::string, bool > backendsClosing() const
Definition: vrfSimBackendManager.h:290
File: simMsg.h.
Definition: simMessage.h:35
std::set< std::string > myWarnDuplicateOnAdd
Definition: vrfSimBackendManager.h:367
std::map< std::string, char > myBackendsWaitingForSave
Definition: vrfSimBackendManager.h:351
boost::signals2::signal< void(const DtVrfBackendState &)> signal_duplicateSimulationAddress
Definition: vrfSimBackendManager.h:303
const int DtSessionSimulationStateChanged
Definition: vrfSimBackendManager.h:58
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:24
const int DtSessionScenarioJustSavedSimulationObjectGroup
Definition: vrfSimBackendManager.h:54
bool myBackendsAlreadyLoaded
Definition: vrfSimBackendManager.h:379
const int DtSessionScenarioJustLoaded
Definition: vrfSimBackendManager.h:45
const int DtSessionChangedScenarioFilename
Definition: vrfSimBackendManager.h:55
makVrv::DtBaseSimulation * mySimulation
Definition: vrfSimBackendManager.h:344
bool mySignalWhenAllBackendsLoaded
Definition: vrfSimBackendManager.h:349
boost::signals2::signal< void(bool)> signal_allBackendsSaved
Definition: vrfSimBackendManager.h:241
const int DtSessionChangedNumberBEs
Definition: vrfSimBackendManager.h:44
const int DtSessionChangedSimulationModelSets
Definition: vrfSimBackendManager.h:46
std::set< std::string > myNeedToSave
Definition: vrfSimBackendManager.h:354
The class that is the interface between the GUI and the back-end.
Definition: queuedManager.h:27
double myDateAndTimeOfDay
Definition: vrfSimBackendManager.h:371
Base class to provide boost signal/slot management.
const std::vector< DtFilename > & simulationModelSets() const
Definition: vrfSimBackendManager.h:271
virtual const DtSimulationAddress & selectedBackend() const
Definition: vrfSimBackendManager.h:161
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:372
boost::signals2::signal< void(const DtVrfBackendState &)> signal_frameRatesUpdated
Definition: vrfSimBackendManager.h:296
boost::signals2::signal< void(const DtVrfBackendState &)> signal_backendRemoved
Definition: vrfSimBackendManager.h:299
boost::signals2::signal< void()> signal_allBackendsClosed
Definition: vrfSimBackendManager.h:219
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:300
bool mySignalWhenAllBackendsClosed
Definition: vrfSimBackendManager.h:348
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:346
const int DtSessionScenarioJustImported
Definition: vrfSimBackendManager.h:52
std::string sessionScenarioFilename() const
Definition: vrfSimBackendManager.h:250
std::map< std::string, bool > myReinitializingMap
Definition: vrfSimBackendManager.h:359
boost::signals2::signal< void()> signal_allBackendsAboutToBeRemoved
Definition: vrfSimBackendManager.h:305
std::string sessionGuiTerrain() const
Definition: vrfSimBackendManager.h:257
std::string sessionSimTerrain() const
Definition: vrfSimBackendManager.h:264
boost::signals2::signal< void(const DtVrfBackendState &, int)> signal_backendUpdated
Definition: vrfSimBackendManager.h:301
boost::signals2::signal< void(DtSimulationStatus)> signal_simulationStatusChanged
Definition: vrfSimBackendManager.h:306
double mySimTime
Definition: vrfSimBackendManager.h:369

Document ID: Generated on Thu Aug 27 10:56:05 EDT 2020 from SVN revision 217100
Copyright © 2005-2020 MAK Technologies. All Rights Reserved (www.mak.com)