VR-Forces 5.0.1 Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
scriptedTaskManager.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2013 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
8 #pragma once
9 
14 #include "vrfutil/averager.h"
17 #include <tbb/mutex.h>
18 
20 class DtSimMessage;
21 class DtFilename;
23 
28 
30 
37 
41 
44 
46 {
47  DtScriptedTaskManagerCallbackInfo() : reason(0), flags(0) {};
49  : reason(orig.reason), flags(orig.flags), metaData(orig.metaData), originalData(orig.originalData) {};
50 
52  {
53  reason = orig.reason;
54  flags = orig.flags;
55  metaData = orig.metaData;
56  originalData = orig.originalData;
57 
58  return *this;
59  }
60 
61  int reason;
62  int flags;
63 
66 
70 };
71 
74 
77 {
78 public:
79 
82  {
83  ScenarioSystemPair() : scenarioScript(0), systemScript(0), monitor(0), references(0), averager(0), myFrameRateMutex(new tbb::spin_mutex) {};
84  ScenarioSystemPair(DtScriptedTaskMetaData* sc, DtScriptedTaskMetaData* sy) : scenarioScript(sc), systemScript(sy), monitor(0),
85  references(0), averager(0), myFrameRateMutex(new tbb::spin_mutex) {};
86 
87  DtScriptedTaskMetaData* scenarioScript;
90  int monitor;
92  std::string error;
93  std::shared_ptr<tbb::spin_mutex> myFrameRateMutex;
94  };
95 
96  typedef std::map<std::string, ScenarioSystemPair> ScriptedTaskMetaDataList;
97  typedef std::map<std::string, ScriptedTaskMetaDataList> ScriptedTasksByDirectory;
98 
99 public:
102 
104  virtual ~DtScriptedTaskManager();
105 
106 private:
109 
111  DtScriptedTaskManager & operator=(const DtScriptedTaskManager & orig);
112 
113 public:
117  virtual void addAdditionSystemScriptDirectory(const std::string&, bool send = true);
118 
121  virtual void removeAllSystemScriptedTasksFromDirectory(const std::string&, bool send = true);
122 
124  virtual void removeAllScenarioScripts(bool send = true);
125 
127  virtual const ScriptedTasksByDirectory& scriptedTasksByDirectory() const;
128 
130  virtual const ScriptedTaskMetaDataList& scenarioScripts() const;
131 
133  virtual const ScriptedTaskMetaDataList& allScriptsById() const;
134 
140  virtual void sendRequestedScripts(DtU32 responseId = 0,
141  const std::vector<std::string>& scriptIds = std::vector<std::string>(), bool sendScripts = false, bool sendUiLayout = false,
142  const std::string& language = "", const int scriptType = 1);
143 
145  virtual const DtScriptedTaskMetaData* lookupScriptById(const DtGenericMessageType& scriptId) const;
146  virtual const DtScriptedTaskMetaData* lookupScriptById(const DtSetMessageType& scriptId) const;
147  virtual const DtScriptedTaskMetaData* lookupScriptById(const DtSimTaskMessageType& scriptId) const;
148  virtual const DtScriptedTaskMetaData* lookupScriptById(const std::string&) const;
149 
156  virtual void modifyScenarioScriptedTask(const DtScriptedTaskMetaData&, const std::string& sourceScriptId = "", bool send = true,
157  bool keepScriptInMessage = false, bool keepLayoutInMessage = false);
158 
162  virtual bool removeScriptedTask(const std::string& id, bool send = true, bool scenarioOnly = true,
163  bool removeSystemScriptFromDisk = false);
164 
166  virtual bool loadScenarioScripts(const DtFilename&, bool send = true);
167  virtual bool loadScenarioScriptsFromZipFile(const DtFilename& scenarioZipFile, const std::string&, bool send = true);
168 
170  virtual bool loadScenarioScripts(const std::string& str, bool send = true);
171 
173  virtual bool writeScenarioScripts(const DtFilename&);
174 
176  virtual bool writeScenarioScripts(std::string&);
177 
180  virtual bool removeScriptById(const std::string& s, bool scenarioOnly = true,
181  bool removeSystemScriptFromDisk = false);
182 
185  virtual void setSimulationModelSetScriptsDirectory(const std::string& s, bool send = true);
186 
188  virtual std::string simulationModelSetScriptsDirectory() const;
189 
191  virtual std::vector<DtSimTaskMessageType> tasksValidFor(const DtEntityType&, int force) const;
192 
194  virtual std::vector<DtSetMessageType> setsValidFor(const DtEntityType&, int force) const;
195 
197  virtual std::vector<DtSimTaskMessageType> reactiveTasksValidFor(const DtEntityType&, int force) const;
198 
200  virtual std::vector<std::string> scriptsValidFor(const DtEntityType&, int scriptType, int force) const;
201 
203 
204  virtual void addScriptedTaskChangedCallback(DtScriptedTaskManagerCallbackFcn fcn, void* usr);
205  virtual void removeScriptedTaskChangedCallback(DtScriptedTaskManagerCallbackFcn fcn, void* usr);
207 
210  virtual void reportError(const DtGenericMessageType& scriptId, const std::string& error, bool sendReport = true);
211  virtual void reportError(const DtSimTaskMessageType& scriptId, const std::string& error, bool sendReport = true);
212  virtual void reportError(const DtSetMessageType& scriptId, const std::string& error, bool sendReport = true);
213  virtual void reportError(const std::string& scriptId, const std::string& error, bool sendReport = true);
214 
216  virtual std::string findSystemDirectoryFor(const std::string& scriptId) const;
217 
219  virtual void clearError(const DtGenericMessageType& scriptId);
220  virtual void clearError(const DtSimTaskMessageType& scriptId);
221  virtual void clearError(const DtSetMessageType& scriptId);
222  virtual void clearError(const std::string& scriptId);
223 
225  virtual void addSample(const DtGenericMessageType& scriptId, double sample);
228  virtual void addSample(const DtSetMessageType& scriptId, double sample);
229  virtual void addSample(const DtSimTaskMessageType& scriptId, double sample);
230  virtual void addSample(const std::string& scriptId, double sample);
231 
234  virtual void monitor(const std::string& scriptId, bool);
235 
238  virtual void setMonitorTime(double);
239 
242  virtual void addFrameRateReference(const DtGenericMessageType&);
243  virtual void addFrameRateReference(const DtSimTaskMessageType&);
244  virtual void addFrameRateReference(const DtSetMessageType&);
245  virtual void addFrameRateReference(const std::string&);
246 
248  virtual void removeFrameRateReference(const DtGenericMessageType& scriptId);
249  virtual void removeFrameRateReference(const DtSetMessageType& scriptId);
250  virtual void removeFrameRateReference(const DtSimTaskMessageType& scriptId);
251  virtual void removeFrameRateReference(const std::string&);
252 
254 
256  virtual int scriptType(const DtGenericMessageType& scriptId) const;
257  virtual int scriptType(const DtSetMessageType& scriptId) const;
258  virtual int scriptType(const DtSimTaskMessageType& scriptId) const;
259  virtual int scriptType(const std::string&) const;
260 
263  virtual DtGenericMessageType remapScriptId(const DtGenericMessageType& scriptId) const;
264  virtual DtSetMessageType remapScriptId(const DtSetMessageType& scriptId) const;
265  virtual DtSimTaskMessageType remapScriptId(const DtSimTaskMessageType& scriptId) const;
266  virtual std::string remapScriptId(const std::string& scriptId) const;
267 
270  virtual void setDoctrines(const std::set<std::string>&);
271  virtual void addDoctrine(const std::string&, bool send = true);
272 
274  virtual bool removeDoctrine(const std::string&, bool send = true);
275  virtual const std::set<std::string>& doctrines() const;
276  virtual void clearDoctrines(bool send = true);
277  virtual void loadDoctrines(const DtFilename& f, bool send = true);
278  virtual void sendDoctrines();
279  virtual void sendDoctrineAssignments();
280  virtual void updateDoctrines(const DtScriptedTaskMetaData&);
281  virtual void saveDoctrines(const DtFilename& f) const;
282  virtual ScriptedTaskMetaDataList scriptsValidForDoctrine(const std::string&) const;
283  virtual std::string doctrineForForce(int) const;
284  virtual void setDoctrineForForce(const std::string&, int);
285  virtual void setDoctrineAssignments(const std::map<int, std::string>&);
286 
288  virtual void setLanguage(const DtString&);
289  const DtString& language() const;
290 
292  virtual bool renameDoctrine(const std::string& from, const std::string& to, bool send = true);
294 
298  virtual void merge(DtScriptedTaskManager* mgr, std::vector<DtRwTranslatableStringObject>&);
299 
301  virtual DtScriptResourceManager* resourceManager(const DtString& type);
302 
304  virtual DtScriptResourceManagerMap& resourceManagers();
305 
306  DtSimulationServices* simulationServices() const { return mySimulationServices; };
307 protected:
309  virtual void initializeDefaultScripts();
310 
312  static void requestScriptedTasks(DtSimMessage*, void*);
313  virtual void processRequestScriptedTasks(DtSimMessage*);
314 
315  virtual bool loadScenarioScripts(std::istream& ifs, bool send);
316 
318  static void scriptedTaskOperation(DtSimMessage*, void*);
319  virtual void processScriptedTaskOperation(DtSimMessage*);
320 
322  static void doctrinesOperation(DtSimMessage*, void*);
323  virtual void processDoctrinesOperation(DtSimMessage*);
324 
326  virtual void makeSystemScript(const std::string&);
327 
329  virtual void modifySystemScript(const std::string& scriptid, const std::string&);
330 
332  virtual void modifySystemLayout(const std::string& scriptid, const std::string&);
333 
335  virtual void modifySystemScriptedTask(const DtScriptedTaskMetaData&, const std::string& sourceSciptId = "", bool send = true);
336 
338  virtual void modifyScript(const std::string& id, const std::string& script);
339 
341  virtual void modifyLayout(const std::string& id, const std::string& script);
342 
344  virtual bool changeScriptScriptId(const DtIfScriptedTaskOperation&, bool& needsCompleteResend);
345 
347  virtual void addTaskToTaskFactory(const std::string& id);
348 
350  virtual void removeTaskFromTaskFactory(const std::string& id);
351 
353  virtual void addSetToSetFactory(const std::string& id);
354 
356  virtual void removeSetFromSetFactory(const std::string& id);
357 
359  virtual void signalNewScriptedTask(const std::string&);
360 
362  virtual void loadDefaultScript(DtScriptedTaskMetaData&);
363 
365  virtual void loadDefaultUiLayout(DtScriptedTaskMetaData&);
366 
369  static void tickCallback(void*);
370  virtual void tick();
371 
373  virtual void sendMonitorInformation();
374 
375  virtual void updateScenarioScripts(std::map<std::string, DtScriptedTaskMetaData>&, bool send);
376 
377 protected:
380 
384 
385  mutable tbb::spin_rw_mutex myMutableScriptsByDoctrineMutex;
386  mutable std::map<std::string, ScriptedTaskMetaDataList> myMutableScriptsByDoctrine;
387 
390 
396 
397  std::set<std::string> myDoctrines;
398  DtFilename myDoctrinesFile;
399 
400  typedef std::map<int, std::string> DoctrinesForForce;
402 
403  std::vector<std::string> myScriptPaths;
405 
407  std::map<std::string, std::string> myScriptIdToScriptIdMap;
408 
411  std::map<int, std::string> myDefaultTemplatesForScriptTypes;
412 
413  mutable tbb::mutex myMutex;
414 };
class DtAverager:
Definition: averager.h:26
std::map< int, std::string > DoctrinesForForce
Definition: scriptedTaskManager.h:400
std::set< std::string > myDoctrines
Definition: scriptedTaskManager.h:397
std::shared_ptr< tbb::spin_mutex > myFrameRateMutex
Definition: scriptedTaskManager.h:93
DtFilename myDoctrinesFile
Definition: scriptedTaskManager.h:398
DtSimulationServices * simulationServices() const
Definition: scriptedTaskManager.h:306
std::map< int, std::string > myDefaultTemplatesForScriptTypes
Map of script type to the name of a file that holds the default script template for that type...
Definition: scriptedTaskManager.h:411
ScenarioSystemPair(DtScriptedTaskMetaData *sc, DtScriptedTaskMetaData *sy)
Definition: scriptedTaskManager.h:84
const int DtScriptedTaskManagerCallbackInfoDoctrineChangedBase
If the doctrine has changed, this is the base for that. The reason sent minus this number will be the...
Definition: scriptedTaskManager.h:40
DtCallbackList< const DtScriptedTaskManagerCallbackInfo & > DtScriptedTaskChangedCallbackList
Definition: scriptedTaskManager.h:388
Manage scripted tasks (primarily Lua tasks) known by VR-Forces.
Definition: scriptedTaskManager.h:76
ScriptedTaskMetaDataList myScenarioScripts
Definition: scriptedTaskManager.h:382
DtAverager * averager
Definition: scriptedTaskManager.h:89
int myMonitoringScripts
Definition: scriptedTaskManager.h:394
DtScriptedTaskMetaData originalData
If the reason is update this member will be filled in. If the reason is id change, only the id will be filled in.
Definition: scriptedTaskManager.h:69
double myLastMonitorSentTime
Definition: scriptedTaskManager.h:392
DoctrinesForForce myDoctrinesForForce
Definition: scriptedTaskManager.h:401
DtScriptedTaskManagerCallbackInfo()
Definition: scriptedTaskManager.h:47
Contains the DtRwTranslatableStringObject class declaration.
DtSimulationServices * mySimulationServices
Definition: scriptedTaskManager.h:378
int myMonitoringAll
Definition: scriptedTaskManager.h:393
std::map< std::string, std::string > myScriptIdToScriptIdMap
Definition: scriptedTaskManager.h:407
DtString myLastLanguageRequested
Definition: scriptedTaskManager.h:404
const int DtScriptedTaskManagerCallbackInfoScriptChanged
Definition: scriptedTaskManager.h:35
int references
Definition: scriptedTaskManager.h:91
const int DtScriptedTaskManagerCallbackInfoScriptIdChanged
Definition: scriptedTaskManager.h:34
int reason
Definition: scriptedTaskManager.h:61
std::map< DtString, DtScriptResourceManager * > DtScriptResourceManagerMap
Definition: scriptResourceManager.h:39
const int DtScriptedTaskManagerCallbackInfoUpdated
Definition: scriptedTaskManager.h:33
std::string mySimulationModelSetScriptsDirectory
Definition: scriptedTaskManager.h:379
#define DT_DLL_vrfobjcore
This file is used to determine how to build.
Definition: vrfobjcoreDefines.h:24
double myMonitorTime
Definition: scriptedTaskManager.h:391
DtCallbackList< const DtScriptedTaskManagerCallbackInfo & >::DtCallbackFunctionType DtScriptedTaskManagerCallbackFcn
Callback function definition for any kind of scripted task change.
Definition: scriptedTaskManager.h:73
std::map< std::string, ScenarioSystemPair > ScriptedTaskMetaDataList
Definition: scriptedTaskManager.h:96
DtScriptedTaskManagerCallbackInfo & operator=(const DtScriptedTaskManagerCallbackInfo &orig)
Definition: scriptedTaskManager.h:51
tbb::spin_rw_mutex myMutableScriptsByDoctrineMutex
Definition: scriptedTaskManager.h:385
const int DtScriptedTaskManagerCallbackInfoScriptTypeChanged
Definition: scriptedTaskManager.h:36
File: simMsg.h.
Definition: simMessage.h:35
const int DtScriptedTaskManagerCallbackInfoAdded
The scripted task manager contains information about all system level scripted tasks (loaded from the...
Definition: scriptedTaskManager.h:31
Definition: noArgumentCallbackList.h:91
const int DtScriptedTaskManagerCallbackFlagScenarioScriptExists
Flag to tell that the system script is still around.
Definition: scriptedTaskManager.h:43
Definition: asyncJobServer.h:39
int monitor
Definition: scriptedTaskManager.h:90
std::string error
Definition: scriptedTaskManager.h:92
ScenarioSystemPair()
Definition: scriptedTaskManager.h:83
Central access point of all non-object-specific the services and managers that are available for use ...
Definition: simulationServices.h:89
Definition: ifScriptedTaskOperation.h:41
DtScriptedTaskChangedCallbackList myScriptedTaskChangedCallbackList
Definition: scriptedTaskManager.h:389
Definition: scriptedTaskManager.h:45
Manages resources shared by scripts.
Definition: scriptResourceManager.h:15
tbb::mutex myMutex
Definition: scriptedTaskManager.h:413
Map is by unique id of script.
Definition: scriptedTaskManager.h:81
ScriptedTasksByDirectory mySystemScriptedTasks
Definition: scriptedTaskManager.h:381
const int DtScriptedTaskManagerCallbackInfoRemoved
Definition: scriptedTaskManager.h:32
ScriptedTaskMetaDataList myAllScriptsById
Definition: scriptedTaskManager.h:383
DtScriptedTaskMetaData metaData
If reason is delete the meta data will only contain the script id.
Definition: scriptedTaskManager.h:65
std::map< std::string, ScriptedTaskMetaDataList > ScriptedTasksByDirectory
Definition: scriptedTaskManager.h:97
std::vector< std::string > myScriptPaths
Definition: scriptedTaskManager.h:403
class DtScriptedTaskMetaData
Definition: scriptedTaskMetaData.h:56
bool mySendMonitorMessage
Definition: scriptedTaskManager.h:395
DtScriptResourceManagerMap myScriptResourceManagers
Definition: scriptedTaskManager.h:406
DtScriptedTaskManagerCallbackInfo(const DtScriptedTaskManagerCallbackInfo &orig)
Definition: scriptedTaskManager.h:48
std::map< std::string, ScriptedTaskMetaDataList > myMutableScriptsByDoctrine
Definition: scriptedTaskManager.h:386
DtScriptedTaskMetaData * systemScript
Definition: scriptedTaskManager.h:88
int flags
Definition: scriptedTaskManager.h:62

Document ID: Generated on Mon Jun 20 00:38:30 EDT 2022 from SVN revision 244029
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)