VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
snapshotManager.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2020 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 #pragma once
6 
7 #ifdef WIN32
8 #include <winsock2.h>
9 #endif
10 
11 #include "vrfcgf/vrfcgfDefines.h"
13 #include "vrfutil/rwUUID.h"
14 #include <vrfutil/objectCounter.h>
16 #include "vrfutil/scenario.h"
17 #include "vrfmsgs/ifSaveScenario.h"
18 #include <vlpi/simulationAddress.h>
19 #include <sstream>
20 #include <vector>
21 
22 #include <boost/unordered_map.hpp>
23 
24 class DtCgf;
26 class DtSimMessage;
27 class DtVrfCallbackQueue;
29 
32 #ifdef DtObjectDebugger_Enable
33  : public DtObjectDebugger<DtInMemorySnapshot>
34 #endif
35 {
36  DtInMemorySnapshot() : myId(0), mySimTime(0), myIsPeriodic(false) {};
37 
38  virtual ~DtInMemorySnapshot();
39 
40  int myId;
41  double mySimTime;
43 
44  typedef std::vector<std::string*> OOB;
46  std::string myPlans;
47  std::string myScenarioExtras;
48  std::string myScenarioScripts;
49  std::string myOrbat;
51 };
52 
54 
56 {
57 private:
61  DtSnapshotManager& operator=(const DtSnapshotManager&);
62 
63 public:
65  virtual ~DtSnapshotManager();
66 
67  virtual bool init();
68 
69  virtual void tick();
70 
73  virtual void setSimTime(double);
74 
76  virtual void enablePeriodicSnapshots(bool flag);
77  virtual bool periodicSnapshotsEnabled() const;
78 
80  virtual void setSnapshotPeriod(double period);
81  virtual double snapshotPeriod() const;
82 
84  virtual void setNumberOfSnapshotsToKeep(int);
85  virtual int numberOfSnapshotsToKeep() const;
86 
89  virtual void setPauseCleanup(bool);
90  bool pauseCleanup() const { return myPauseCleanup; }
91 
92  virtual void clear(bool allButBase = false);
93 
95  virtual bool isBaseSnapshot(DtInMemorySnapshot*) const;
96 
100  virtual DtInMemorySnapshot* takeSnapshot(bool isPeriodic = false, bool makeBase = false);
101 
104  virtual void rollbackToSimTime(double simTime);
105 
107  virtual void rollbackTo(DtInMemorySnapshot*, int scenarioRunId = 0);
108 
110  virtual void clearOutStaleSnapshots();
111 
113  virtual DtInMemorySnapshot* snapshotFor(int id) const;
114 
116  virtual void setSnapshotHeartbeatTime(double d);
117  virtual double snapshotHeartbeatTime() const;
118 
120  virtual void sendCurrentSnapshots();
121 
124  virtual bool saveSnapshot(const DtFilename& saveFolder, DtCompressedFileTransporter& tr, DtIfSaveScenario* msg,
125  const DtScenario& currentScenario, const DtSimulationAddress& requestor);
126 
128  virtual DtInMemorySnapshot* snapshotClosestToSimTime(double simTime) const;
129 
131  virtual void removeSnapshotsAfter(double simTime);
132 
134  virtual bool hasSnapshots() const;
135 
137  virtual void clearAllSnapshots();
138 
140 protected:
141  static void clearAllSnapshotsCallback(DtSimMessage*, void*);
142 
143  static void settingConsumerCallback(
144  const DtSettingsObject* settingsObject, void* usr);
145  virtual void processSettings(const DtPeriodicSnapshotSettings*);
146 
147  static void requestSnapshots(DtSimMessage*, void*);
148  virtual void processSnapshotsRequest(DtSimMessage*);
149 
150  static void rollbackToSnapshot(DtSimMessage*, void*);
151  virtual void processRollbackToSnapshot(DtSimMessage*);
152 
154  virtual void finishSavingSnapshots();
155 
156 protected:
158  {
159  public:
160  DtWriteSnapshotJob(const DtSimulationAddress& addr,
162  virtual ~DtWriteSnapshotJob();
163  virtual void run();
164 
165  DtSimulationAddress myRequestor;
169  bool mySuccess;
170 
171  protected:
172  virtual bool writeAndSendOrderOfBattleFile();
173  virtual bool writeAndSendPlanFile();
174  virtual bool writeAndSendScenarioExtrasFile();
175  virtual bool writeAndSendScenarioScriptsFile();
176  virtual bool writeAndSendOrbatFile();
177  };
178 
179 protected:
188 
189  typedef std::map<int, DtInMemorySnapshot*> Snapshots;
192 
194 
196 
198 
199  typedef std::map<int, DtVrfCallbackQueue::CallbackInterface::Ptr> SavingSnapshots;
201 
203 };
DtScenario myScenarioInformation
Definition: snapshotManager.h:50
std::string myOrbat
Definition: snapshotManager.h:49
DtVrfCallbackQueue * myFileWriterJobQueue
Definition: snapshotManager.h:202
double mySnapshotHeartbeatTime
Definition: snapshotManager.h:184
std::string myPlans
Definition: snapshotManager.h:46
Structure holds a complete single-backend snapshot state in memory.
Definition: snapshotManager.h:31
Definition: scenario.h:52
int myNextSnapshotId
Definition: snapshotManager.h:187
double mySnapshotPeriod
Definition: snapshotManager.h:182
class DtIfSaveScenario:
Definition: ifSaveScenario.h:23
double myLastSnapshotHeartbeat
Definition: snapshotManager.h:183
Snapshots mySnapshots
Definition: snapshotManager.h:190
#define DT_DEFINE_OBJECT_DEBUGGER_NAME(type)
Definition: objectCounter.h:31
Default on in debug, off in release.
Definition: objectCounter.h:27
bool mySuccess
Definition: snapshotManager.h:169
Simple asynchronous callback queue.
Definition: vrfCallbackQueue.h:32
Contains the DtUUID class declaration.
OOB myOob
Definition: snapshotManager.h:45
Definition: settingsObject.h:27
int myNumberOfSnapshotsToKeep
Definition: snapshotManager.h:186
int myId
Definition: snapshotManager.h:40
bool mySnapshotsModified
Definition: snapshotManager.h:193
double myLastTimePeriodicSnapshoted
Definition: snapshotManager.h:185
std::vector< std::string * > OOB
Definition: snapshotManager.h:44
DtIfSnapshotsResponse myCurrentSnapshots
Definition: snapshotManager.h:195
API for writing callbacks.
Definition: vrfCallbackQueue.h:58
bool myPauseCleanup
Definition: snapshotManager.h:197
std::string myScenarioExtras
Definition: snapshotManager.h:47
DtInMemorySnapshot * mySnapshot
Definition: snapshotManager.h:167
DtCompressedFileTransporter & myTransporter
Definition: snapshotManager.h:168
class DtIfSnapshotsResponse:
Definition: ifSnapshotsResponse.h:25
std::string myScenarioScripts
Definition: snapshotManager.h:48
File: simMsg.h.
Definition: simMessage.h:35
Definition: snapshotManager.h:157
SavingSnapshots myCheckpointing
Definition: snapshotManager.h:200
Definition: compressedFileTransporter.h:24
std::map< int, DtInMemorySnapshot * > Snapshots
Definition: snapshotManager.h:189
DtCgf * myCgf
Definition: snapshotManager.h:180
std::map< int, DtVrfCallbackQueue::CallbackInterface::Ptr > SavingSnapshots
Definition: snapshotManager.h:199
double mySimTime
Definition: snapshotManager.h:41
DtInMemorySnapshot()
Definition: snapshotManager.h:36
bool pauseCleanup() const
Definition: snapshotManager.h:90
DtIfSaveScenario mySaveMessage
Definition: snapshotManager.h:166
DT_DLL_DEBUGDRAWRENDERER void init(makVrv::DtDe &de)
Work function for the plugin initialization.
DtSimulationAddress myRequestor
Definition: snapshotManager.h:165
bool myIsPeriodic
Definition: snapshotManager.h:42
Definition: snapshotManager.h:55
bool myPeriodicSnapshotsEnabled
Definition: snapshotManager.h:181
The top level class of a VR-Forces Simulation Engine, representing a Computer Generated Forces instan...
Definition: cgf.h:147
#define DT_DLL_vrfcgf
This file is used to determine how to build.
Definition: vrfcgfDefines.h:25
Snapshots myPeriodicSnapshots
Definition: snapshotManager.h:191
Periodic snapshot settings are used to keep track of whether or not periodic snapshots are enabled an...
Definition: periodicSnapshotSettings.h:28

Document ID: Generated on Wed Mar 27 22:49:11 EDT 2024 from SVN revision 264633
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)