VR-Forces 4.8 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
scriptMultiTaskController.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2013 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 #pragma once
6 
8 
9 #include <map>
16 #include "vrfmsgs/simMessage.h"
19 
20 class DtSimMessage;
21 class DtScriptedTaskSet;
22 
24 {
25 public:
27  DtVrfObject* owner, DtSimManager* simManager, DtComponentDescriptor* desc,
28  DtReaderWriterRegistry* parentRegistry);
29 
30  virtual ~DtScriptMultiTaskController();
31 
32  virtual const char* type() const;
33 
34  virtual bool init();
35 
36  virtual void preFirstTickInit();
37 
38  virtual void tick();
39 
41  virtual bool tickWhileDestroyed() const;
42 
43  virtual bool beginProcessingTask(const DtTaskMessage& task, DtSimTaskStatePtr taskState);
44 
45  virtual void clearTask(int taskId);
46 
47  virtual void taskComplete(int taskId, bool success);
48  virtual void setComplete(DtSetMessageType setId);
49 
50  virtual void suspendTask(int taskId);
51 
53  virtual DtSimTaskStatePtr currentTaskState(int taskId) const;
54 
55  virtual bool createPSR();
56 
57  virtual void registerScriptTaskCallbacks();
58  virtual void unregisterScriptTaskCallbacks();
59 
60  virtual void registerTaskMsgCallbacks();
61  virtual void unregisterTaskMsgCallbacks();
62 
63  virtual void registerScriptSetCallbacks();
64  virtual void unregisterScriptSetCallbacks();
65 
72  virtual bool isTypeTaskable(const DtSimTaskMessageType& taskType, bool remap = true) const;
73  virtual void addTypeTaskable(const DtSimTaskMessageType& taskType, const DtString& system = "");
74  virtual void removeTypeTaskable(const DtSimTaskMessageType& taskType);
75 
78  virtual bool isTypeSetable(const DtSetMessageType& taskType, bool remap = true) const;
79  virtual void addTypeSetable(const DtSetMessageType& taskType, const DtString& system = "");
80  virtual void removeTypeSetable(const DtSetMessageType& taskType);
81 
86  virtual void addRunnableTaskType(const DtSimTaskMessageType& taskType, const DtString& system);
87  virtual void removeRunnableTaskType(const DtSimTaskMessageType& taskType);
88 
93  virtual void addRunnableSetType(const DtSetMessageType& taskType, const DtString& system);
94  virtual void removeRunnableSetType(const DtSetMessageType& taskType);
95 
100  virtual void sweepMarkedForDeletion(bool clearFromPsr = true);
101 
105  virtual void setScriptTickPeriod(int taskId, const DtString& scriptId, double period);
106 
107  static void scriptUpdatedCallback(const DtScriptedTaskManagerCallbackInfo& info, void* usr);
108  static void scenarioSaveCallback(void* usr);
109 
111  virtual void scriptSetTickPeriod(int taskId, const DtString& scriptId, double period);
112  virtual void scriptSetTickWhilePaused(int taskId, const DtString& scriptId, bool enable);
113  virtual void scriptSetRespondToNewSensorContacts(int taskId, const DtString& scriptId, bool respond);
114  virtual void scriptTaskComplete(int taskId, bool success);
115  virtual void scriptSetComplete(const DtString& scriptId);
116  virtual int scriptSendSubtask(DtSimTask& task, int parentTaskId);
117  virtual std::vector<int> scriptPendingSubstaskIds(int taskId);
118  virtual DtSubtaskStatusEntry* scriptSubtaskStatus(int subtaskId, int parentTaskId);
119  virtual void cleanupInactiveSubtaskStatus(int parentTaskId);
120  virtual void scriptClearSubtask(int subtaskId, int parentTaskId);
121  virtual void setCheckpointModeUseCheckpointState(int taskId, const DtString& scriptId, bool);
122  virtual bool checkpointModeUseCheckpointState(int taskId, const DtString& scriptId) const;
123 
124  virtual int askUserQuestion(const DtString& scriptId,
125  const DtTranslatableStream& title, const DtTranslatableStream& message,
126  const std::vector<DtTranslatableStream>& options, int displayFlag);
127  virtual int statusOfUserQuestion(int questionId);
128  virtual void cancelUserQuestion(int questionId);
129 
132  virtual int scriptSendTask(DtSimTask& task, const DtUUID& entityName, int parentTaskId,
133  bool actAsSubtask = true, bool useRadio = false);
134 
135  virtual void notifyScriptTaskError(const DtString& scriptId, int taskId);
136 
137  virtual DtPointTaskVisualizationPtr pointTaskVisualization(int taskId, const DtString& visName);
138  virtual DtLineTaskVisualizationPtr lineTaskVisualization(int taskId, const DtString& visName);
139  virtual DtAreaTaskVisualizationPtr areaTaskVisualization(int taskId, const DtString& visName);
140  virtual DtTextTaskVisualizationPtr textTaskVisualization(int taskId, const DtString& visName);
141  virtual void deleteTaskVisualization(int taskId, const DtString& visName);
143 
146  virtual void addAdditionalReactiveTask(const DtSimTaskMessageType&);
147 
153 
154  static void newSensorContactCallback(const DtVrfObject* object, void* usr);
155  virtual void processNewSensorContact(const DtVrfObject* object);
157 
158  static DtSimComponent* creator(const DtString& name,
159  DtVrfObject* owner, DtSimManager* simManager, DtComponentDescriptor* desc,
160  DtReaderWriterRegistry* parentRegistry);
161 
164  virtual int nextBackgroundProcessId() const;
165 
166  virtual void startScriptedSet(DtScriptedTaskSet*);
167 
168 protected:
171 
172  virtual void processScriptUpdatedCallback(const DtScriptedTaskManagerCallbackInfo& info);
173  virtual void processScenarioSaveCallback();
174 
175  virtual void propagateScriptIdChange(const DtString& oldId, const DtString& newId);
176  virtual bool isForMyEntityType(const DtScriptedTaskMetaData& metaData);
177  virtual void processMetaDataChange(const DtScriptedTaskManagerCallbackInfo& info);
178  virtual void restartScriptInterfaceByType(const DtSimTaskMessageType& taskType);
179  virtual void restartScriptInterfaceByType(const DtSetMessageType& taskType);
180 
183  virtual void clearAndRestoreTasks(bool forceStop = false);
184 
186  virtual void clearAndRestoreSets();
187 
188  static void userQuestionOperationCallback(DtSimMessage* msg, void* usrData);
189  virtual void processUserQuestionOperation(DtSimMessage*);
190 
191  virtual void sendOffOutstandingQuestionFor(const DtString& scriptId);
192 
194  virtual bool backgroundProcessAvailable() const;
195 
196  static void processScriptedSetCallback(DtSimMessage *msg, void * usrData);
197  virtual void processScriptedSet(DtSimMessage *msg);
198 
199  virtual bool checkRemoveTaskId(int taskId, bool clearFromPsr = true);
200 
201  virtual bool markedForDeletion(int taskId) const;
202 
203 protected:
204  std::map<DtSimTaskMessageType, int> myAvailableTaskScripts;
205  std::map<DtSetMessageType, int> myAvailableSetScripts;
206  std::map<DtSimTaskMessageType, int> myBackgroundProcesses;
207 
209  std::map<int, boost::shared_ptr<DtScriptInterface> > myCurrentScriptInterfaceMap;
210  std::list<int> myMarkedForDeletionList;
211 
212  typedef std::pair<int, DtString> TaskAndScriptIds;
214  std::list<TaskAndScriptIds> myRespondToNewSensorContactList;
219  std::map<DtSimTaskMessageType, DtString> myAdditionalRunnableTaskTypes;
220  std::map<DtSetMessageType, DtString> myAdditionalRunnableSetTypes;
221  DtForceType myCurrentForceType;
222 
224 
229  std::map<DtSimTaskMessageType, DtString> myTasksToBeAdded;
230  std::map<DtSetMessageType, DtString> mySetsToBeAdded;
231 
232  std::set<DtSimTaskMessageType> myAdditionalReactiveTasks;
233 };
UUID is a unique ID wrapper class.
Definition: rwUUID.h:222
DtScriptMultiTaskControllerPSR * myProcessState
Definition: scriptMultiTaskController.h:215
virtual DtSubtaskStatusEntry * scriptSubtaskStatus(int subtaskId, int parentTaskId)=0
#define DT_DLL_vrfmodel
This file is used to determine how to build.
Definition: vrfmodelDefines.h:24
DtVrfObject is used to represent any type of simulated object (entities, aggregate, control objects) in a VR-Forces application.
Definition: vrfObject.h:215
std::set< DtSimTaskMessageType > myAdditionalReactiveTasks
Definition: scriptMultiTaskController.h:232
This is a DtReaderWriter subclass which holds the status of a subtask that was issues by another task...
Definition: taskStatusEntry.h:27
std::map< DtSimTaskMessageType, DtString > myTasksToBeAdded
Definition: scriptMultiTaskController.h:229
std::map< DtSetMessageType, int > myAvailableSetScripts
Definition: scriptMultiTaskController.h:205
virtual void notifyScriptTaskError(const DtString &scriptId, int taskId)=0
virtual void scriptTaskComplete(int taskId, bool success)=0
Set version of scripted task that is used in scripted set scripts.
Definition: scriptedTaskSet.h:15
virtual void clearTask()
Called when you want to clear out this component&#39;s task state.
virtual void registerTaskMsgCallbacks()
virtual void preFirstTickInit()
This function can be overridden to initialize a component before it is ticked for the first time...
virtual void scriptClearSubtask(int subtaskId, int parentTaskId)=0
virtual void suspendTask(int taskId)
This method is called when the specified running task is being suspended.
A readable, writable type whose name is the name of a component and that has a list of component name...
Definition: componentDescriptor.h:42
This class provides a base class for all controllers that are capable of executing a DtSimTask...
Definition: multiTaskControllerComponent.h:25
Definition: readerWriterRegistry.h:39
virtual const char * type() const =0
Returns a string identifies the class type of component.
virtual void cancelUserQuestion(int questionId)=0
bool myAreTaskCallbacksRegistered
Definition: scriptMultiTaskController.h:216
virtual void scriptSetTickPeriod(int taskId, const DtString &scriptId, double period)=0
virtual int scriptSendSubtask(DtSimTask &task, int parentTaskId)=0
DtBoost::shared_ptr< DtSimTaskState > DtSimTaskStatePtr
Definition: taskAndTaskStateDefines.h:18
virtual void scriptSetComplete(const DtString &scriptId)=0
DtForceType myCurrentForceType
Definition: scriptMultiTaskController.h:221
Definition: scriptMultiTaskController.h:23
virtual bool init()
Calls setRadio()
virtual DtAreaTaskVisualizationPtr areaTaskVisualization(int taskId, const DtString &name)
Finds an existing or creates a new area task visualization with the given name.
std::pair< int, DtString > TaskAndScriptIds
Definition: scriptMultiTaskController.h:212
std::map< DtSimTaskMessageType, int > myBackgroundProcesses
Definition: scriptMultiTaskController.h:206
File: simMsg.h.
Definition: simMessage.h:35
virtual std::vector< int > scriptPendingSubstaskIds(int taskId)=0
Process State Repository for the DtRotaryWingFlightCommandController component.
Definition: scriptMultiTaskControllerPSR.h:22
virtual void tick()
This gives the thread of control to the component.
virtual bool tickWhileDestroyed() const
If the component returns true here, it will be ticked regardless of the destroyed state of the host e...
std::list< int > myMarkedForDeletionList
Definition: scriptMultiTaskController.h:210
std::map< DtSetMessageType, DtString > mySetsToBeAdded
Definition: scriptMultiTaskController.h:230
Define constants for types of tasks, sets, admin messages, reports, and sim commands (all sent via ra...
This stream is used by the scripting classes to be able to send out translatable messages from script...
Definition: translatableStream.h:22
DtBoost::shared_ptr< DtLineTaskVisualization > DtLineTaskVisualizationPtr
Definition: lineTaskVisualization.h:138
virtual DtSimTaskStatePtr currentTaskState(int taskId) const
virtual int scriptSendTask(DtSimTask &task, const DtUUID &entityName, int parentTaskId, bool actAsSubtask=true, bool useRadio=false)=0
virtual void setScriptTickPeriod(const DtString &scriptId, double period)
If supported, and this is a scripted task controller, set the period to tick the script.
virtual bool beginProcessingTask(const DtTaskMessage &task, DtSimTaskStatePtr taskState)
Called by the task manager when this controller should start executing the specified task...
bool myIsDestroyed
Definition: scriptMultiTaskController.h:223
DtBoost::shared_ptr< DtPointTaskVisualization > DtPointTaskVisualizationPtr
Definition: pointTaskVisualization.h:75
The DtSimComponent class is the base class for the entire simulation model component hierarchy...
Definition: simComponent.h:67
bool myQueueSetsToBeAdded
Definition: scriptMultiTaskController.h:228
virtual bool checkpointModeUseCheckpointState(int taskId, const DtString &scriptId) const =0
const DtTaskControllerComponent & operator=(const DtTaskControllerComponent &orig)
assignment operator
virtual DtTextTaskVisualizationPtr textTaskVisualization(int taskId, const DtString &name)
Finds an existing or creates a new text task visualization with the given name.
virtual void cleanupInactiveSubtaskStatus(int taskId)
Clears out subtask status entries that are either completed or canceled which were started by the spe...
virtual void scriptSetTickWhilePaused(int taskId, const DtString &scriptId, bool enable)=0
DtSimTask is an abstract base class from which real tasks can derive.
Definition: simTask.h:33
std::list< TaskAndScriptIds > myRespondToNewSensorContactList
List of task and script IDs for scripts that will respond to new sensor contacts. ...
Definition: scriptMultiTaskController.h:214
std::map< DtSimTaskMessageType, int > myAvailableTaskScripts
Definition: scriptMultiTaskController.h:204
virtual void scriptSetRespondToNewSensorContacts(int taskId, const DtString &scriptId, bool tick)=0
Definition: scriptedTaskManager.h:44
The simulation engine is controlled by a single,top-level class called the Simulation Manager...
Definition: simManager.h:102
virtual void deleteTaskVisualization(int taskId, const DtString &visName)=0
bool myQueueTasksToBeAdded
Prior to preFirstTickInit, any tasks added should be queued for later addition.
Definition: scriptMultiTaskController.h:227
virtual void setCheckpointModeUseCheckpointState(int taskId, const DtString &scriptId, bool)=0
virtual void taskComplete(int taskId, bool success)
This indicates that the specified task is complete.
std::map< int, boost::shared_ptr< DtScriptInterface > > myCurrentScriptInterfaceMap
Negative task ids are background processes.
Definition: scriptMultiTaskController.h:209
Definition: scriptedTaskMetaData.h:48
std::map< DtSetMessageType, DtString > myAdditionalRunnableSetTypes
Definition: scriptMultiTaskController.h:220
Definition: scriptTaskControllerInterface.h:22
virtual int statusOfUserQuestion(int questionId)=0
A DtTaskMsg is a DtRadioMsg with a pointer to a task.
Definition: taskMessage.h:19
virtual DtLineTaskVisualizationPtr lineTaskVisualization(int taskId, const DtString &name)
Finds an existing or creates a new line task visualization with the given name.
DtBoost::shared_ptr< DtTextTaskVisualization > DtTextTaskVisualizationPtr
Definition: textTaskVisualization.h:75
std::map< DtSimTaskMessageType, DtString > myAdditionalRunnableTaskTypes
This is a list of script IDs that will be run by this component, even if they script is not marked as...
Definition: scriptMultiTaskController.h:219
virtual int askUserQuestion(const DtString &scriptId, const DtTranslatableStream &title, const DtTranslatableStream &message, const std::vector< DtTranslatableStream > &options, int displayFlag)=0
DtBoost::shared_ptr< DtAreaTaskVisualization > DtAreaTaskVisualizationPtr
Definition: areaTaskVisualization.h:61
virtual DtPointTaskVisualizationPtr pointTaskVisualization(int taskId, const DtString &name)
Finds an existing or creates a new point task visualization with the given name.

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)