VR-Forces 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 
146  virtual void sendRequestedScriptChecksums(DtU32 responseId = 0,
147  const std::vector<std::string>& scriptIds = std::vector<std::string>());
148 
150  virtual const DtScriptedTaskMetaData* lookupScriptById(const DtGenericMessageType& scriptId) const;
151  virtual const DtScriptedTaskMetaData* lookupScriptById(const DtSetMessageType& scriptId) const;
152  virtual const DtScriptedTaskMetaData* lookupScriptById(const DtSimTaskMessageType& scriptId) const;
153  virtual const DtScriptedTaskMetaData* lookupScriptById(const std::string&) const;
154 
161  virtual void modifyScenarioScriptedTask(const DtScriptedTaskMetaData&, const std::string& sourceScriptId = "", bool send = true,
162  bool keepScriptInMessage = false, bool keepLayoutInMessage = false);
163 
167  virtual bool removeScriptedTask(const std::string& id, bool send = true, bool scenarioOnly = true,
168  bool removeSystemScriptFromDisk = false);
169 
171  virtual bool loadScenarioScripts(const DtFilename&, bool send = true);
172  virtual bool loadScenarioScriptsFromZipFile(const DtFilename& scenarioZipFile, const std::string&, bool send = true);
173 
175  virtual bool loadScenarioScripts(const std::string& str, bool send = true);
176 
178  virtual bool writeScenarioScripts(const DtFilename&);
179 
181  virtual bool writeScenarioScripts(std::string&);
182 
185  virtual bool removeScriptById(const std::string& s, bool scenarioOnly = true,
186  bool removeSystemScriptFromDisk = false);
187 
190  virtual void setSimulationModelSetScriptsDirectory(const std::string& s, bool send = true);
191 
193  virtual std::string simulationModelSetScriptsDirectory() const;
194 
196  virtual std::vector<DtSimTaskMessageType> tasksValidFor(const DtEntityType&, int force) const;
197 
199  virtual std::vector<DtSetMessageType> setsValidFor(const DtEntityType&, int force) const;
200 
202  virtual std::vector<DtSimTaskMessageType> reactiveTasksValidFor(const DtEntityType&, int force) const;
203 
205  virtual std::vector<std::string> scriptsValidFor(const DtEntityType&, int scriptType, int force) const;
206 
208 
209  virtual void addScriptedTaskChangedCallback(DtScriptedTaskManagerCallbackFcn fcn, void* usr);
210  virtual void removeScriptedTaskChangedCallback(DtScriptedTaskManagerCallbackFcn fcn, void* usr);
212 
215  virtual void reportError(const DtGenericMessageType& scriptId, const std::string& error, bool sendReport = true);
216  virtual void reportError(const DtSimTaskMessageType& scriptId, const std::string& error, bool sendReport = true);
217  virtual void reportError(const DtSetMessageType& scriptId, const std::string& error, bool sendReport = true);
218  virtual void reportError(const std::string& scriptId, const std::string& error, bool sendReport = true);
219 
221  virtual std::string findSystemDirectoryFor(const std::string& scriptId) const;
222 
224  virtual void clearError(const DtGenericMessageType& scriptId);
225  virtual void clearError(const DtSimTaskMessageType& scriptId);
226  virtual void clearError(const DtSetMessageType& scriptId);
227  virtual void clearError(const std::string& scriptId);
228 
230  virtual void addSample(const DtGenericMessageType& scriptId, double sample);
233  virtual void addSample(const DtSetMessageType& scriptId, double sample);
234  virtual void addSample(const DtSimTaskMessageType& scriptId, double sample);
235  virtual void addSample(const std::string& scriptId, double sample);
236 
239  virtual void monitor(const std::string& scriptId, bool);
240 
243  virtual void setMonitorTime(double);
244 
247  virtual void addFrameRateReference(const DtGenericMessageType&);
248  virtual void addFrameRateReference(const DtSimTaskMessageType&);
249  virtual void addFrameRateReference(const DtSetMessageType&);
250  virtual void addFrameRateReference(const std::string&);
251 
253  virtual void removeFrameRateReference(const DtGenericMessageType& scriptId);
254  virtual void removeFrameRateReference(const DtSetMessageType& scriptId);
255  virtual void removeFrameRateReference(const DtSimTaskMessageType& scriptId);
256  virtual void removeFrameRateReference(const std::string&);
257 
259 
261  virtual int scriptType(const DtGenericMessageType& scriptId) const;
262  virtual int scriptType(const DtSetMessageType& scriptId) const;
263  virtual int scriptType(const DtSimTaskMessageType& scriptId) const;
264  virtual int scriptType(const std::string&) const;
265 
268  virtual DtGenericMessageType remapScriptId(const DtGenericMessageType& scriptId) const;
269  virtual DtSetMessageType remapScriptId(const DtSetMessageType& scriptId) const;
270  virtual DtSimTaskMessageType remapScriptId(const DtSimTaskMessageType& scriptId) const;
271  virtual std::string remapScriptId(const std::string& scriptId) const;
272 
275  virtual void setDoctrines(const std::set<std::string>&);
276  virtual void addDoctrine(const std::string&, bool send = true);
277 
279  virtual bool removeDoctrine(const std::string&, bool send = true);
280  virtual const std::set<std::string>& doctrines() const;
281  virtual void clearDoctrines(bool send = true);
282  virtual void loadDoctrines(const DtFilename& f, bool send = true);
283  virtual void sendDoctrines();
284  virtual void sendDoctrineAssignments();
285  virtual void updateDoctrines(const DtScriptedTaskMetaData&);
286  virtual void saveDoctrines(const DtFilename& f) const;
287  virtual ScriptedTaskMetaDataList scriptsValidForDoctrine(const std::string&) const;
288  virtual std::string doctrineForForce(int) const;
289  virtual void setDoctrineForForce(const std::string&, int);
290  virtual void setDoctrineAssignments(const std::map<int, std::string>&);
291 
293  virtual void setLanguage(const DtString&);
294  const DtString& language() const;
295 
297  virtual bool renameDoctrine(const std::string& from, const std::string& to, bool send = true);
299 
303  virtual void merge(DtScriptedTaskManager* mgr, std::vector<DtRwTranslatableStringObject>&);
304 
306  virtual DtScriptResourceManager* resourceManager(const DtString& type);
307 
309  virtual DtScriptResourceManagerMap& resourceManagers();
310 
311  DtSimulationServices* simulationServices() const { return mySimulationServices; };
312 protected:
314  virtual void initializeDefaultScripts();
315 
317  static void requestScriptedTasks(DtSimMessage*, void*);
318  virtual void processRequestScriptedTasks(DtSimMessage*);
319 
320  virtual bool loadScenarioScripts(std::istream& ifs, bool send);
321 
323  static void scriptedTaskOperation(DtSimMessage*, void*);
324  virtual void processScriptedTaskOperation(DtSimMessage*);
325 
327  static void doctrinesOperation(DtSimMessage*, void*);
328  virtual void processDoctrinesOperation(DtSimMessage*);
329 
331  virtual void makeSystemScript(const std::string&);
332 
334  virtual void modifySystemScript(const std::string& scriptid, const std::string&);
335 
337  virtual void modifySystemLayout(const std::string& scriptid, const std::string&);
338 
340  virtual void modifySystemScriptedTask(const DtScriptedTaskMetaData&, const std::string& sourceSciptId = "", bool send = true);
341 
343  virtual void modifyScript(const std::string& id, const std::string& script);
344 
346  virtual void modifyLayout(const std::string& id, const std::string& script);
347 
349  virtual bool changeScriptScriptId(const DtIfScriptedTaskOperation&, bool& needsCompleteResend);
350 
352  virtual void addTaskToTaskFactory(const std::string& id);
353 
355  virtual void removeTaskFromTaskFactory(const std::string& id);
356 
358  virtual void addSetToSetFactory(const std::string& id);
359 
361  virtual void removeSetFromSetFactory(const std::string& id);
362 
364  virtual void signalNewScriptedTask(const std::string&);
365 
367  virtual void loadDefaultScript(DtScriptedTaskMetaData&);
368 
370  virtual void loadDefaultUiLayout(DtScriptedTaskMetaData&);
371 
374  static void tickCallback(void*);
375  virtual void tick();
376 
378  virtual void sendMonitorInformation();
379 
380  virtual void updateScenarioScripts(std::map<std::string, DtScriptedTaskMetaData>&, bool send);
381 
382 protected:
385 
389 
390  mutable tbb::spin_rw_mutex myMutableScriptsByDoctrineMutex;
391  mutable std::map<std::string, ScriptedTaskMetaDataList> myMutableScriptsByDoctrine;
392 
395 
401 
402  std::set<std::string> myDoctrines;
403  DtFilename myDoctrinesFile;
404 
405  typedef std::map<int, std::string> DoctrinesForForce;
407 
408  std::vector<std::string> myScriptPaths;
410 
412  std::map<std::string, std::string> myScriptIdToScriptIdMap;
413 
416  std::map<int, std::string> myDefaultTemplatesForScriptTypes;
417 
418  mutable tbb::mutex myMutex;
419 };
class DtAverager:
Definition: averager.h:26
std::map< int, std::string > DoctrinesForForce
Definition: scriptedTaskManager.h:405
std::set< std::string > myDoctrines
Definition: scriptedTaskManager.h:402
std::shared_ptr< tbb::spin_mutex > myFrameRateMutex
Definition: scriptedTaskManager.h:93
DtFilename myDoctrinesFile
Definition: scriptedTaskManager.h:403
DtSimulationServices * simulationServices() const
Definition: scriptedTaskManager.h:311
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:416
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:393
Manage scripted tasks (primarily Lua tasks) known by VR-Forces.
Definition: scriptedTaskManager.h:76
ScriptedTaskMetaDataList myScenarioScripts
Definition: scriptedTaskManager.h:387
DtAverager * averager
Definition: scriptedTaskManager.h:89
int myMonitoringScripts
Definition: scriptedTaskManager.h:399
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:397
DoctrinesForForce myDoctrinesForForce
Definition: scriptedTaskManager.h:406
DtScriptedTaskManagerCallbackInfo()
Definition: scriptedTaskManager.h:47
Contains the DtRwTranslatableStringObject class declaration.
DtSimulationServices * mySimulationServices
Definition: scriptedTaskManager.h:383
int myMonitoringAll
Definition: scriptedTaskManager.h:398
std::map< std::string, std::string > myScriptIdToScriptIdMap
Definition: scriptedTaskManager.h:412
DtString myLastLanguageRequested
Definition: scriptedTaskManager.h:409
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:384
#define DT_DLL_vrfobjcore
This file is used to determine how to build.
Definition: vrfobjcoreDefines.h:24
double myMonitorTime
Definition: scriptedTaskManager.h:396
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:390
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:94
Definition: ifScriptedTaskOperation.h:41
DtScriptedTaskChangedCallbackList myScriptedTaskChangedCallbackList
Definition: scriptedTaskManager.h:394
Definition: scriptedTaskManager.h:45
Manages resources shared by scripts.
Definition: scriptResourceManager.h:15
tbb::mutex myMutex
Definition: scriptedTaskManager.h:418
Map is by unique id of script.
Definition: scriptedTaskManager.h:81
ScriptedTasksByDirectory mySystemScriptedTasks
Definition: scriptedTaskManager.h:386
const int DtScriptedTaskManagerCallbackInfoRemoved
Definition: scriptedTaskManager.h:32
ScriptedTaskMetaDataList myAllScriptsById
Definition: scriptedTaskManager.h:388
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:408
class DtScriptedTaskMetaData
Definition: scriptedTaskMetaData.h:57
bool mySendMonitorMessage
Definition: scriptedTaskManager.h:400
DtScriptResourceManagerMap myScriptResourceManagers
Definition: scriptedTaskManager.h:411
DtScriptedTaskManagerCallbackInfo(const DtScriptedTaskManagerCallbackInfo &orig)
Definition: scriptedTaskManager.h:48
std::map< std::string, ScriptedTaskMetaDataList > myMutableScriptsByDoctrine
Definition: scriptedTaskManager.h:391
DtScriptedTaskMetaData * systemScript
Definition: scriptedTaskManager.h:88
int flags
Definition: scriptedTaskManager.h:62

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)