VR-Forces Development_Version Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
vrfCheckpointManager.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2015 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
8 
10 
11 #pragma once
12 
14 
16 #include <vrvUtil/signalslib.h>
18 #include <vrvCore/DtDe.h>
20 
21 #include <QtGui/QWidget>
22 #include <QtCore/QObject>
23 
24 class QLabel;
25 class DtSimMessage;
26 
27 namespace makVrf
28 {
29  class DtScenarioSnapshotsWidget;
30  class DtDeleteCheckpointsDialog;
31  class DtVrfBackendState;
32  class DtVrfScenarioManager;
33 
36  {
37  Q_OBJECT
38 
39  public:
40 
43  {
44  AvailableSnapshot() : saved(false), periodic(false), askedIfSaved(false) {};
46  available(orig.available), unavailable(orig.unavailable), saved(orig.saved),
47  periodic(orig.periodic), askedIfSaved(orig.askedIfSaved) {};
48  AvailableSnapshot& operator=(const AvailableSnapshot& rhs)
49  {
50  available = rhs.available;
51  unavailable = rhs.unavailable;
52  periodic = rhs.periodic;
53  saved = rhs.saved;
54  askedIfSaved = rhs.askedIfSaved;
55 
56  return *this;
57  }
58 
59  std::set<std::string> available;
60  std::set<std::string> unavailable;
61  bool saved;
62  bool periodic;
64  };
65 
66  typedef std::map<double, AvailableSnapshot> AvailableSnapshots;
67 
68  public:
70  virtual ~DtVrfCheckpointManager();
71 
73  static DtVrfCheckpointManager& instance(makVrv::DtDe& de);
74 
76  virtual void deleteCheckpoints();
77 
79  virtual void scenarioSnapshots();
80 
83  virtual void requestSnapshots(const DtSimulationAddress& addr = DtSimSendToAll);
84 
86  virtual void schedulePeriodicSnapshoting(bool enabled, double simTime, int numberOfSnapshotsToKeep);
87 
88  virtual void processSnapshotsResponse(DtSimMessage*);
89 
90  DtScenarioSnapshotsWidget* scenarioSnapshotsWidget() { return myScenarioSnapshotsWidget; };
91 
93  virtual bool rollbackTo(double simTime = -1);
94 
96  virtual bool haveSnapshotsThatCanBeRolledBack() const;
97 
99  virtual void clearSnapshots();
100 
102  virtual bool saveCheckpoints(const std::set<double>&);
103  virtual bool saveCheckpoint(double);
104 
106  virtual bool saveCheckpoints();
107 
110  virtual bool takeSnapshot(bool force = false);
111 
113  virtual bool takeBaseSnapshot();
114 
116  virtual bool snapshotFor(double simTime, AvailableSnapshot&) const;
117 
119  virtual bool hasBaseSnapshot(double simTime) const;
120 
122  virtual bool hasSnapshot(double simTime) const;
123 
125  virtual bool hasFixedSnapshot(double simTime) const;
126 
128  virtual bool hasPeriodicSnapshot(double simTime) const;
129 
131  virtual bool hasSavedScenarioForSnapshot(double simTime) const;
132 
134  virtual bool hasUnaskedUnsavedSavedScenarioForSnapshot(double simTime) const;
135 
137  virtual bool isSavingCheckpoints() const;
138 
140  virtual void setAskedToSaveAtThisSimTime(double simTime, bool);
141 
142  const std::set<double>& periodicSnapshots() const { return myPeriodicSnapshots; }
143  const std::set<double>& scheduledToSave() const { return myScheduledToSave; }
144 
145  const AvailableSnapshots& availableSnapshots() const { return myAvailableSnapshots; };
146 
148  virtual DtFilename scenarioNameForCheckpoint(double) const;
149 
151  virtual double round(double simTime) const;
152 
154  virtual void setScenarioAsSaved(const DtFilename&);
155 
157  virtual void clearAllSnapshots();
158 
160 
161  virtual double firstLoadableSimTime() const;
162 
164  virtual double baseSnapshotTime() const { return myBaseSnapshotTime; };
165 
168  virtual void updateCheckpointsSavedStatus();
169 
170  protected slots:
171  virtual void scenarioSnapshotsWidgetDestroyed();
172 
173  public:
175  boost::signal<void(const AvailableSnapshots&, const AvailableSnapshots&)> signal_snapshotsChanged;
176  boost::signal<void()> signal_snapshotsCleared;
177  boost::signal<void (double)> signal_savedScenarioCheckpoint;
178  boost::signal<void (const std::set<double>&, const std::set<double>&)> signal_saveStateChanged;
179 
181  boost::signal<void (const std::set<double>&)> signal_savedCheckpointsCleared;
182 
183  boost::signal<void (const std::set<double>&)> signal_savingCheckpoints;
184  boost::signal<void (double, double)> signal_baseScenarioSnapshotTimeChanged;
185 
186  boost::signal<void (double)> signal_aboutToRollBack;
187  protected:
189  virtual bool scenarioExists(double simTime, DtFilename* foundFile = 0) const;
190 
191  virtual DtDeleteCheckpointsDialog* createDeleteCheckpointsDialog(QWidget* p, const Qt::WindowFlags& f);
192 
193  virtual DtScenarioSnapshotsWidget* createScenarioSnapshotsWidget(QWidget* p, const Qt::WindowFlags& f);
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 sessionSettingsChanged();
213 
214  protected:
216 
218 
220 
222 
223  typedef std::map<double, int> BackendSnapshot;
224 
225  typedef std::map<std::string, BackendSnapshot> SnapshotIdsByBackend;
227 
228  std::set<double> myPeriodicSnapshots;
229  std::set<double> myScheduledToSave;
231 
234  };
235 }

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)