VR-Forces Development_Version Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
vrfSimBackendManager.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2014 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 <vrvCore/DtDe.h>
20 #include <vrfutil/sessionStatus.h>
21 
22 #include <boost/function.hpp>
23 #include <boost/signal.hpp>
24 
25 class DtBackend;
27 class DtSimulationAddress;
28 class DtSimMessage;
29 class DtIfLoadComplete;
30 class DtIfSaveComplete;
31 
32 namespace makVrv
33 {
34  class DtBaseSimulation;
35 }
36 
38 const int DtSessionChangedTerrain = 0x00000001;
39 const int DtSessionChangedScenario = 0x00000002;
40 const int DtSessionChangedNumberBEs = 0x00000004;
41 const int DtSessionScenarioJustLoaded = 0x00000008;
42 const int DtSessionChangedSimulationModelSets = 0x00000010;
43 const int DtSessionScenarioJustClosed = 0x00000020;
44 const int DtSessionScenarioClosing = 0x00000040;
45 const int DtSessionScenarioLoading = 0x00000080;
46 const int DtSessionScenarioErrorLoading = 0x00000100;
47 const int DtSessionScenarioImporting = 0x00000200;
48 const int DtSessionScenarioJustImported = 0x00000400;
51 const int DtSessionChangedScenarioFilename = 0x00002000;
52 const int DtSessionScenarioJustRolledBack = 0x00004000;
53 const int DtSessionScenarioRollingBack = 0x00008000;
54 
55 namespace makVrf
56 {
57  class DtVrfBackEndState;
58 
65  {
66  public:
67  typedef std::map<std::string, DtVrfBackendState*> DtVrfSimBackendStates;
68 
69  public:
71  virtual ~DtVrfSimBackendManager();
72 
74  static DtVrfSimBackendManager& instance(makVrv::DtDe& de);
75 
76  public:
78  virtual bool backEndsPresent() const;
79 
81  virtual bool anyBackendsLoading() const;
82 
84  virtual bool anyBackendsCreatingSimulationObjectGroup() const;
85 
87  virtual bool anyBackendsClosing() const;
88 
90  virtual bool anyBackendsLoaded() const;
91 
93  virtual bool allBackendsLoaded() const;
94 
96  virtual bool backendLoaded(const DtSimulationAddress&) const;
97 
99  virtual bool backendSaving(const DtSimulationAddress&) const;
100 
102  virtual bool anyBackendsPlaying() const;
103 
105  virtual bool anyBackendsInControlState(int state) const;
106 
108  virtual bool allBackendsCanSimulate() const;
109 
111  virtual bool backendCanSimulate(const DtSimulationAddress&) const;
112 
114  virtual void duplicateBackendDiscovered(const DtSimulationAddress&);
115 
117  virtual double timeMultiplier() const;
118 
124 
125  virtual void removeAllBackends();
126  virtual void addBackend(const DtBackend*);
127  virtual void backendRemoved(const DtSimulationAddress&);
128  virtual void backendUpdated(const DtSimulationAddress&, const DtBackend*);
130 
131  virtual DtVrfBackendState* stateFor(const DtSimulationAddress&) const;
132 
133  virtual const DtSimulationAddress& selectedBackend() const
134  {
135  return mySelectedBackend;
136  }
137 
138  void setSelectedBackend(const DtSimulationAddress&);
139 
141  virtual void simulationAddresses(std::set<std::string>&);
142 
143  virtual int numberOfBackends() const;
144 
146  virtual void clearSelectedBackend();
147 
149  virtual double simTime() const;
150 
152  virtual double runDurationTime() const;
153 
156  virtual double timeOfDay() const;
157 
159  virtual double simStartSimTime() const;
160 
161  const DtVrfSimBackendStates& backendStates() const
162  {
163  return myBackendStates;
164  }
165 
167  virtual std::map<short, int> currentObjectCounts() const;
168 
170  virtual const std::map<short, int>& currentObjectCount(const DtSimulationAddress&) const;
171 
172  public:
174  virtual void signalWhenAllBackendsClosed();
175 
177  virtual void signalIfAllBackendsClosed();
178  boost::signal<void ()> signal_allBackendsClosed;
179 
182  virtual void signalWhenAllBackendsLoaded();
183 
186  virtual void signalIfAllBackendsLoaded();
187  boost::signal<void ()> signal_allBackendsLoaded;
188 
190  virtual void signalWhenAllBackendsSaved();
191 
193  virtual void signalIfAllBackendsSaved(bool checkpointSave);
194  boost::signal<void (bool)> signal_allBackendsSaved;
195 
196  std::string sessionScenario() const
197  {
198  return mySessionStatus.scenarioName().c_str();
199  }
200 
201  virtual void setSessionScenario(const std::string&);
202 
203  std::string sessionScenarioFilename() const
204  {
205  return mySessionStatus.scenarioFilename().c_str();
206  }
207 
208  virtual void setSessionScenarioFilename(const std::string&);
209 
210  std::string sessionGuiTerrain() const
211  {
212  return mySessionStatus.guiTerrainName().c_str();
213  }
214 
215  virtual void setSessionGuiTerrain(const std::string&);
216 
217  std::string sessionSimTerrain() const
218  {
219  return mySessionStatus.terrainName().c_str();
220  }
221 
222  const std::vector<DtFilename>& simulationModelSets() const
223  {
224  return mySessionStatus.simulationModelSets();
225  }
226 
227  virtual void setSimulationModelSets(const DtRwNLengthStringVector&);
228 
230  virtual void sessionStatusChanged(const DtSessionStatus& status);
231 
232  virtual time_t dateAndTimeOfDay() const;
233  virtual void setDateAndTimeOfDay(time_t);
234  virtual void resetDateAndTimeOfDay();
235 
236  virtual const std::map<std::string, bool> backendsLoading() const
237  {
238  return myLoadingMap;
239  }
240 
241  virtual const std::map<std::string, bool> backendsClosing() const
242  {
243  return myClosingMap;
244  }
245 
246  public:
247  boost::signal<void (const DtVrfBackendState&)> signal_frameRatesUpdated;
248  boost::signal<void (const DtVrfBackendState&)> signal_backendDiscovered;
249  boost::signal<void (const DtVrfBackendState&)> signal_backendRemoved;
250  boost::signal<void (const DtVrfBackendState&, int)> signal_backendUpdated;
251  boost::signal<void (int)> signal_sessionUpdated;
252  boost::signal<void (const DtVrfBackendState&)> signal_duplicateSimulationAddress;
253  boost::signal<void (const DtSimulationAddress& old, const DtSimulationAddress& newaddr)> signal_selectedBackendChanged;
254  boost::signal<void ()> signal_allBackendsAboutToBeRemoved;
255 
256  protected:
258  virtual void tick();
259 
261  virtual double simTimeFromBackend() const;
262 
263  virtual void updateDateAndTimeOfDay();
264  virtual void slot_dateAndTimeOfDayChanged(int year, int month, int day, int hours, int mins, int secs);
265 
266  virtual void slot_frameRatesUpdated(const DtVrfBackendState&);
267  virtual void simulationBackendRemoved(DtVrfBackendState*);
268  virtual void simulationBackendDiscovered(DtVrfBackendState*);
269  virtual void simulationBackendUpdated(DtSimulationAddress, int);
270  virtual void duplicateSimulationBackendDiscovered(DtSimulationAddress);
271  virtual void processSessionStatusChange(DtSessionStatus);
272 
273  virtual void processLoadCompleteCallback(DtSimMessage*);
274  virtual void processSaveCompleteCallback(DtSimMessage*);
275 
277  virtual void backendSaved(const std::string&, bool checkpointSave);
278 
279  virtual void setBackendSaving(const DtSimulationAddress&, bool b);
280 
282  virtual void updateSessionInformation(int sessionFlags = 0);
283 
284  protected:
285  makVrv::DtBaseSimulation* mySimulation;
287  DtSimulationAddress mySelectedBackend;
291  std::map<std::string, char> myBackendsWaitingForSave;
292  std::map<std::string, bool> myAlreadyDuplicateWarned;
293  std::map<std::string, bool> myNeedToLoad;
294  std::set<std::string> myNeedToSave;
295 
297  std::map<std::string, bool> myJustLoadedMap;
298  std::map<std::string, bool> myLoadingMap;
299  std::map<std::string, bool> myClosingMap;
300  std::map<std::string, bool> myJustClosedMap;
301  std::map<std::string, bool> myJustRolledBackMap;
302  std::map<std::string, bool> myRollingBackMap;
303  std::map<std::string, bool> myImportingMap;
304  std::map<std::string, bool> myCreatingSimulationObjectGroupMap;
305 
306  double mySimTime;
312  };
313 }

Document ID: Generated on Mon Jul 4 01:00:18 EDT 2016 from SVN revision 166489
Copyright © 2005-2015 VT MÄK. All Rights Reserved (www.mak.com)