VR-Forces 5.0.2 Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
vrfCheckpointManager.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2020 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
6 #pragma once
7 
8 #if !defined(Q_MOC_RUN)
10 
12 
15 #endif
16 
17 #include <QtWidgets/QWidget>
18 #include <QtCore/QObject>
19 
20 class QLabel;
21 class DtSimMessage;
22 
23 namespace makVrv
24 {
25  class DtDe;
26 }
27 
28 namespace makVrf
29 {
30  class DtVrfBackendState;
31  class DtScenarioSnapshotsWidget;
32  class DtDeleteCheckpointsDialog;
33 
37  {
38  Q_OBJECT
39 
40  public:
41 
44  {
45  AvailableSnapshot() : saved(false), periodic(false), askedIfSaved(false) {};
47  available(orig.available), unavailable(orig.unavailable), saved(orig.saved),
48  periodic(orig.periodic), askedIfSaved(orig.askedIfSaved) {};
50  {
51  available = rhs.available;
52  unavailable = rhs.unavailable;
53  periodic = rhs.periodic;
54  saved = rhs.saved;
55  askedIfSaved = rhs.askedIfSaved;
56 
57  return *this;
58  }
59 
60  std::set<std::string> available;
61  std::set<std::string> unavailable;
62  bool saved;
63  bool periodic;
65  };
66 
67  typedef std::map<double, AvailableSnapshot> AvailableSnapshots;
68 
69  public:
71  virtual ~DtVrfCheckpointManager();
72 
74  static DtVrfCheckpointManager& instance(makVrv::DtDe& de);
75 
76  static void init(makVrv::DtDe&);
77 
80  virtual void requestSnapshots(const DtSimulationAddress& addr = DtSimSendToAll);
81 
83  virtual void schedulePeriodicSnapshoting(bool enabled, double simTime, int numberOfSnapshotsToKeep);
84 
85  virtual void processSnapshotsResponse(DtSimMessage*);
86 
88  virtual bool rollbackTo(double simTime = -1);
89 
91  virtual bool haveSnapshotsThatCanBeRolledBack() const;
92 
94  virtual void clearSnapshots();
95 
97  virtual bool saveCheckpoints(const std::set<double>&);
98  virtual bool saveCheckpoint(double);
99 
101  virtual bool saveCheckpoints();
102 
105  virtual bool takeSnapshot(bool force = false);
106 
108  virtual bool takeBaseSnapshot();
109 
111  virtual bool snapshotFor(double simTime, AvailableSnapshot&) const;
112 
114  virtual bool hasBaseSnapshot(double simTime = -1) const;
115 
117  virtual bool hasSnapshot(double simTime) const;
118 
120  virtual bool hasFixedSnapshot(double simTime) const;
121 
123  virtual bool hasPeriodicSnapshot(double simTime) const;
124 
126  virtual bool hasSavedScenarioForSnapshot(double simTime) const;
127 
129  virtual bool hasUnaskedUnsavedSavedScenarioForSnapshot(double simTime) const;
130 
132  virtual bool isSavingCheckpoints() const;
133 
135  virtual void setAskedToSaveAtThisSimTime(double simTime, bool);
136 
137  const std::set<double>& periodicSnapshots() const { return myPeriodicSnapshots; }
138  const std::set<double>& scheduledToSave() const { return myScheduledToSave; }
139 
140  const AvailableSnapshots& availableSnapshots() const { return myAvailableSnapshots; };
141 
143  virtual DtFilename scenarioNameForCheckpoint(double) const;
144 
146  virtual double round(double simTime) const;
147 
149  virtual void setScenarioAsSaved(const DtFilename&);
150 
152  virtual void clearAllSnapshots();
153 
155 
156  virtual double firstLoadableSimTime() const;
157 
159  virtual double baseSnapshotTime() const { return myBaseSnapshotTime; };
160 
163  virtual void updateCheckpointsSavedStatus();
164 
165  DtScenarioSnapshotsWidget* scenarioSnapshotsWidget() { return myScenarioSnapshotsWidget; };
166 
168  virtual void scenarioSnapshots();
169 
171  virtual void deleteCheckpoints();
172 
173  protected slots:
174  virtual void scenarioSnapshotsWidgetDestroyed();
175 
176  public:
178  boost::signals2::signal<void(const AvailableSnapshots&, const AvailableSnapshots&)> signal_snapshotsChanged;
179  boost::signals2::signal<void()> signal_snapshotsCleared;
180  boost::signals2::signal<void (double)> signal_savedScenarioCheckpoint;
181  boost::signals2::signal<void (const std::set<double>&, const std::set<double>&)> signal_saveStateChanged;
182 
184  boost::signals2::signal<void (const std::set<double>&)> signal_savedCheckpointsCleared;
185 
186  boost::signals2::signal<void (const std::set<double>&)> signal_savingCheckpoints;
187  boost::signals2::signal<void (double, double)> signal_baseScenarioSnapshotTimeChanged;
188 
189  protected:
190  virtual DtDeleteCheckpointsDialog* createDeleteCheckpointsDialog(QWidget* p, const Qt::WindowFlags& f);
191 
193  virtual bool scenarioExists(double simTime, DtFilename* foundFile = 0) const;
194 
195  virtual void slot_backendRemoved(const DtVrfBackendState&);
196 
197  virtual void removeBackend(const std::string& addr, bool sendMessage);
198 
199  virtual void mergeBackendSnapshots(const std::string& addr, const DtIfSnapshotsResponse::SnapshotStatus&);
200 
201  virtual double removeSnapshot(const std::string& addr, double snapshotTime);
202  virtual double addSnapshot(const std::string& addr,
203  const DtIfSnapshotsResponse::Snapshot&, const std::set<std::string>& otherBes,
204  std::set<std::string>& stillUnavailable);
205 
206  virtual void processScenarioSnapshotSaved(DtSimMessage*);
207 
209  virtual void checkNeedsPeriodicSave(const std::set<double>&);
210 
211  virtual void updatePeriodicCheckpointFrequency(int periodicCheckpointFrequency);
212  virtual void simulationSettingsChanged();
213 
214  virtual DtScenarioSnapshotsWidget* createScenarioSnapshotsWidget(QWidget* p, const Qt::WindowFlags& f);
215 
216  protected:
218 
220 
222  typedef std::map<double, int> BackendSnapshot;
223 
224  typedef std::map<std::string, BackendSnapshot> SnapshotIdsByBackend;
226 
227  std::set<double> myPeriodicSnapshots;
228  std::set<double> myScheduledToSave;
230 
232  std::map<std::string, bool> myHasBaseSnapshot;
234 
236  };
237 }
Definition: vrfBackendState.h:69
int myPeriodicCheckpointFrequency
Definition: vrfCheckpointManager.h:233
Definition: scenarioSnapshotsWidget.h:29
AvailableSnapshot()
Definition: vrfCheckpointManager.h:45
Virtual base class. Allows for RTTI and proper virtual destruction. Used by Creators, Factories, Providers, Assemblers and User Interfaces.
Definition: DtVirtualBaseClass.h:19
const std::set< double > & scheduledToSave() const
Definition: vrfCheckpointManager.h:138
makVrv::DtDe & myDe
Definition: vrfCheckpointManager.h:217
std::set< double > myPeriodicSnapshots
Definition: vrfCheckpointManager.h:227
bool periodic
Definition: vrfCheckpointManager.h:63
double myBaseSnapshotTime
Definition: vrfCheckpointManager.h:231
std::map< double, AvailableSnapshot > AvailableSnapshots
Definition: vrfCheckpointManager.h:67
const std::set< double > & periodicSnapshots() const
Definition: vrfCheckpointManager.h:137
std::set< double > mySnapshotsThatCanBeRolledBackTo
Definition: vrfCheckpointManager.h:229
std::map< std::string, bool > myHasBaseSnapshot
Definition: vrfCheckpointManager.h:232
AvailableSnapshot & operator=(const AvailableSnapshot &rhs)
Definition: vrfCheckpointManager.h:49
Organized by simulation time, the back-ends that will support resetting to that simulation time (and ...
Definition: vrfCheckpointManager.h:43
std::map< std::string, BackendSnapshot > SnapshotIdsByBackend
Definition: vrfCheckpointManager.h:224
std::map< double, int > BackendSnapshot
Definition: vrfCheckpointManager.h:222
virtual double baseSnapshotTime() const
The time that will be shown as the &quot;base&quot; snapshot (the snapshot that when rewinding to beginning wil...
Definition: vrfCheckpointManager.h:159
std::set< std::string > available
Definition: vrfCheckpointManager.h:60
AvailableSnapshot(const AvailableSnapshot &orig)
Definition: vrfCheckpointManager.h:46
Contains makVrv::DtVirtualBaseClass class.
Definition: ifSnapshotsResponse.h:29
File: simMsg.h.
Definition: simMessage.h:35
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
DtScenarioSnapshotsWidget * myScenarioSnapshotsWidget
Definition: vrfCheckpointManager.h:235
std::set< double > myScheduledToSave
Definition: vrfCheckpointManager.h:228
#define DT_DLL_VRFGUICOMMONQT
Definition: vrfGuiCommonQt.h:20
std::set< std::string > unavailable
Definition: vrfCheckpointManager.h:61
makVrv::DtSignalConnectionManager myConnections
Definition: vrfCheckpointManager.h:221
Base class to provide boost signal/slot management.
boost::signals2::signal< void()> signal_snapshotsCleared
Definition: vrfCheckpointManager.h:179
DT_DLL_DEBUGDRAWRENDERER void init(makVrv::DtDe &de)
Work function for the plugin initialization.
DtScenarioSnapshotsWidget * scenarioSnapshotsWidget()
Definition: vrfCheckpointManager.h:165
boost::signals2::signal< void(double, double)> signal_baseScenarioSnapshotTimeChanged
Definition: vrfCheckpointManager.h:187
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
Common functionality for a checkpoint manager, Will not present any dialogs to the user via this clas...
Definition: vrfCheckpointManager.h:36
SnapshotIdsByBackend mySnapshotIdsByBackend
Definition: vrfCheckpointManager.h:225
AvailableSnapshots myAvailableSnapshots
Definition: vrfCheckpointManager.h:219
const AvailableSnapshots & availableSnapshots() const
Definition: vrfCheckpointManager.h:140
bool saved
Definition: vrfCheckpointManager.h:62
boost::signals2::signal< void(const AvailableSnapshots &, const AvailableSnapshots &)> signal_snapshotsChanged
Signal sent when snapshots have changed. First parameter is those added, second is removed...
Definition: vrfCheckpointManager.h:178
std::map< int, Snapshot > SnapshotStatus
Definition: ifSnapshotsResponse.h:52
bool askedIfSaved
Definition: vrfCheckpointManager.h:64
Definition: deleteCheckpointsDialog.h:28
boost::signals2::signal< void(double)> signal_savedScenarioCheckpoint
Definition: vrfCheckpointManager.h:180

Document ID: Generated on Sun Dec 4 20:22:03 EST 2022 from SVN revision 249613
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)