VR-Forces 4.8 Class Documentation
 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) 2016 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 
31 struct DtInMemorySnapshot : public DtObjectDebugger<DtInMemorySnapshot>
32 {
34 
35  virtual ~DtInMemorySnapshot();
36 
37  int myId;
38  double mySimTime;
40 
41  typedef std::vector<std::string*> OOB;
43  std::string myPlans;
44  std::string myScenarioExtras;
45  std::string myScenarioScripts;
46  std::string myOrbat;
49 };
50 
52 
54 {
55 private:
59  DtSnapshotManager& operator=(const DtSnapshotManager&);
60 
61 public:
63  virtual ~DtSnapshotManager();
64 
65  virtual bool init();
66 
67  virtual void tick();
68 
71  virtual void setSimTime(double);
72 
74  virtual void enablePeriodicSnapshots(bool flag);
75  virtual bool periodicSnapshotsEnabled() const;
76 
78  virtual void setSnapshotPeriod(double period);
79  virtual double snapshotPeriod() const;
80 
82  virtual void setNumberOfSnapshotsToKeep(int);
83  virtual int numberOfSnapshotsToKeep() const;
84 
87  virtual void setPauseCleanup(bool);
88  bool pauseCleanup() const { return myPauseCleanup; }
89 
90  virtual void clear(bool allButBase = false);
91 
93  virtual bool isBaseSnapshot(DtInMemorySnapshot*) const;
94 
98  virtual DtInMemorySnapshot* takeSnapshot(bool isPeriodic = false, bool makeBase = false);
99 
102  virtual void rollbackToSimTime(double simTime);
103 
105  virtual void rollbackTo(DtInMemorySnapshot*, int scenarioRunId = 0);
106 
108  virtual void clearOutStaleSnapshots();
109 
111  virtual DtInMemorySnapshot* snapshotFor(int id) const;
112 
114  virtual void setSnapshotHeartbeatTime(double d);
115  virtual double snapshotHeartbeatTime() const;
116 
118  virtual void sendCurrentSnapshots();
119 
122  virtual bool saveSnapshot(const DtFilename& saveFolder, DtCompressedFileTransporter& tr, DtIfSaveScenario* msg,
123  const DtScenario& currentScenario, const DtSimulationAddress& requestor);
124 
126  virtual DtInMemorySnapshot* snapshotClosestToSimTime(double simTime) const;
127 
129  virtual void removeSnapshotsAfter(double simTime);
130 
132  virtual bool hasSnapshots() const;
133 
135  virtual void clearAllSnapshots();
136 
138 protected:
139  static void clearAllSnapshotsCallback(DtSimMessage*, void*);
140 
141  static void settingConsumerCallback(
142  const DtSettingsObject* settingsObject, void* usr);
143  virtual void processSettings(const DtPeriodicSnapshotSettings*);
144 
145  static void requestSnapshots(DtSimMessage*, void*);
146  virtual void processSnapshotsRequest(DtSimMessage*);
147 
148  static void rollbackToSnapshot(DtSimMessage*, void*);
149  virtual void processRollbackToSnapshot(DtSimMessage*);
150 
152  virtual void finishSavingSnapshots();
153 
154 protected:
156  {
157  public:
158  DtWriteSnapshotJob(const DtSimulationAddress& addr,
160  virtual ~DtWriteSnapshotJob();
161  virtual void run();
162 
163  DtSimulationAddress myRequestor;
167  bool mySuccess;
168 
169  protected:
170  virtual bool writeAndSendOrderOfBattleFile();
171  virtual bool writeAndSendPlanFile();
172  virtual bool writeAndSendScenarioExtrasFile();
173  virtual bool writeAndSendScenarioScriptsFile();
174  virtual bool writeAndSendOrbatFile();
175  };
176 
177 protected:
186 
187  typedef std::map<int, DtInMemorySnapshot*> Snapshots;
190 
192 
194 
196 
197  typedef std::map<int, DtVrfCallbackQueue::CallbackInterface::Ptr> SavingSnapshots;
199 
201 };
DtScenario myScenarioInformation
Definition: snapshotManager.h:47
std::string myOrbat
Definition: snapshotManager.h:46
DtVrfCallbackQueue * myFileWriterJobQueue
Definition: snapshotManager.h:200
double mySnapshotHeartbeatTime
Definition: snapshotManager.h:182
std::string myPlans
Definition: snapshotManager.h:43
Structure holds a complete single-backend snapshot state in memory.
Definition: snapshotManager.h:31
Definition: scenario.h:52
int myNextSnapshotId
Definition: snapshotManager.h:185
double mySnapshotPeriod
Definition: snapshotManager.h:180
class DtIfSaveScenario:
Definition: ifSaveScenario.h:23
double myLastSnapshotHeartbeat
Definition: snapshotManager.h:181
Snapshots mySnapshots
Definition: snapshotManager.h:188
#define DT_DEFINE_OBJECT_DEBUGGER_NAME(type)
Definition: objectCounter.h:265
Default on in debug, off in release.
Definition: objectCounter.h:31
bool mySuccess
Definition: snapshotManager.h:167
Simple asynchronous callback queue.
Definition: vrfCallbackQueue.h:32
OOB myOob
Definition: snapshotManager.h:42
Definition: settingsObject.h:27
int myNumberOfSnapshotsToKeep
Definition: snapshotManager.h:184
int myId
Definition: snapshotManager.h:37
bool mySnapshotsModified
Definition: snapshotManager.h:191
double myLastTimePeriodicSnapshoted
Definition: snapshotManager.h:183
std::vector< std::string * > OOB
Definition: snapshotManager.h:41
DtIfSnapshotsResponse myCurrentSnapshots
Definition: snapshotManager.h:193
API for writing callbacks.
Definition: vrfCallbackQueue.h:55
bool myPauseCleanup
Definition: snapshotManager.h:195
std::string myScenarioExtras
Definition: snapshotManager.h:44
DtInMemorySnapshot * mySnapshot
Definition: snapshotManager.h:165
DtCompressedFileTransporter & myTransporter
Definition: snapshotManager.h:166
class DtIfSnapshotsResponse:
Definition: ifSnapshotsResponse.h:25
std::string myScenarioScripts
Definition: snapshotManager.h:45
File: simMsg.h.
Definition: simMessage.h:35
Definition: snapshotManager.h:155
SavingSnapshots myCheckpointing
Definition: snapshotManager.h:198
Definition: compressedFileTransporter.h:24
std::map< int, DtInMemorySnapshot * > Snapshots
Definition: snapshotManager.h:187
DtCgf * myCgf
Definition: snapshotManager.h:178
std::map< int, DtVrfCallbackQueue::CallbackInterface::Ptr > SavingSnapshots
Definition: snapshotManager.h:197
double mySimTime
Definition: snapshotManager.h:38
DtInMemorySnapshot()
Definition: snapshotManager.h:33
bool pauseCleanup() const
Definition: snapshotManager.h:88
int myNumberOfLuaScripts
Definition: snapshotManager.h:48
DtIfSaveScenario mySaveMessage
Definition: snapshotManager.h:164
DT_DLL_DEBUGDRAWRENDERER void init(makVrv::DtDe &de)
Work function for the plugin initialization.
DtSimulationAddress myRequestor
Definition: snapshotManager.h:163
bool myIsPeriodic
Definition: snapshotManager.h:39
Definition: snapshotManager.h:53
bool myPeriodicSnapshotsEnabled
Definition: snapshotManager.h:179
virtual ~DtInMemorySnapshot()
An instance of DtCgf is an object representing a CGF (Computer Generated Forces). ...
Definition: cgf.h:115
#define DT_DLL_vrfcgf
This file is used to determine how to build.
Definition: vrfcgfDefines.h:25
Snapshots myPeriodicSnapshots
Definition: snapshotManager.h:189
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 Thu Aug 27 10:56:05 EDT 2020 from SVN revision 217100
Copyright © 2005-2020 MAK Technologies. All Rights Reserved (www.mak.com)