VR-Forces 4.2 Class Documentation
taskMgr.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2013 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
8 
10 #pragma once
11 
12 #include "vrfutil/rwBoolean.h"
13 #include <vector>
14 #include <map>
15 #include "vrfobjcore/vrfObject.h"
16 #include "vrfobjcore/taskMgrFact.h"
18 #include <vlutil/vlSmartPointers.h>
19 #include "vrftasks/radioMsgTypes.h"
21 #include <set>
22 
24 class DtSimTask;
25 class DtSimComponent;
27 class DtVrfObjectMessage;
28 class DtTaskMessage;
29 class DtSimMessage;
33 class DtScriptedTaskTask;
35 
38 typedef void (*DtOnTaskNotifyCallbackFcn)(
39  const DtSimTask & task, const DtSimComponent &notifier, void* usr);
40 
43 {
45  void* myUserData;
46 };
47 
53 {
54 private:
57 
58 public:
60 
62  DtSimTaskManager(const DtString & name, DtVrfObject * vrfObject,
63  DtReaderWriterRegistry * parentRegistry = 0);
64 
66  DtSimTaskManager(const DtSimTaskManager & orig,
67  DtReaderWriterRegistry * parentRegistry = 0);
68 
70  const DtSimTaskManager & operator=(const DtSimTaskManager & orig);
71 
73  virtual ~DtSimTaskManager();
74 
76  virtual bool init();
77 
79  virtual void tick();
80 
88  virtual void addTaskProcessor(const DtSimTaskMessageType& taskType,
89  DtTaskControllerComponent* taskController);
90 
93  virtual void removeTaskProcessor(const DtSimTaskMessageType& taskType,
94  DtTaskControllerComponent* taskController);
95 
97  virtual void removeAllReferencesToController(DtTaskControllerComponent*
98  taskController);
99 
103  virtual std::vector<DtSimTaskMessageType> capableTaskIds() const;
104 
116  virtual bool executeTask(DtTaskMessage& taskMsg);
117  virtual bool executeTask(DtTaskMessage& taskMsg, DtSimTaskStatePtr taskState);
119 
126  virtual bool transitionTask(DtTaskMessage& taskMsg, DtSimTaskStatePtr taskState);
127 
131  virtual int suspendTasks(std::set<DtString> actionCategories);
134  virtual int suspendAllTopLevelTasks();
135 
138  virtual DtSuspendedTaskInfo* suspendTask(int taskId);
139 
141  virtual bool resumeTasks(int suspendId);
142 
144 
145  virtual void addTaskCompleteCallback(DtTaskCompleteCallbackList::DtCallbackFunctionType fcn, void* usr);
146  virtual void removeTaskCompleteCallback(DtTaskCompleteCallbackList::DtCallbackFunctionType fcn, void* usr);
148 
151  virtual bool taskActive(int taskId) const;
152 
154  virtual void registerInterfaceMessageCallbacks();
155 
157  virtual void registerRadioMessageCallbacks();
158 
161  virtual void taskNotify(const DtSimTask & task, const DtSimComponent &
162  notifier);
163 
167  virtual void skipTask(bool fromSuperior = false);
168 
172  virtual void taskComplete(const DtVrfObjectMessage & radioMsg, bool success);
173 
176  virtual void sendTaskCompleted(const DtTaskMessage& taskMsg, bool success);
177 
180  void awaitingTask(int taskIdJustCompleted = -1);
181 
184  virtual void setTaskedBySuperior();
185 
187  virtual bool requestTaskNeeded() const;
188 
190  virtual void setRequestTaskNeeded(bool requestTaskNeeded);
191 
194  virtual bool independentlyTasked() const;
195 
198  virtual void setIndependentlyTasked(bool independentlyTasked);
199 
203  virtual bool currentTasksMatchEchelonId();
204 
207  virtual bool isPseudoAggregate() const { return false; }
208 
211  virtual DtString type() const;
212 
214  virtual DtVrfObject * vrfObject() const;
215 
218  virtual void setVrfObject(DtVrfObject * vrfObject);
219 
222 
223  virtual void setSendSkipTaskMessages(bool sendSkipTaskMessages);
224  virtual bool sendSkipTaskMessages();
225  //}
226 
229  virtual void addOnTaskNotifyCallback(
230  DtOnTaskNotifyCallbackFcn fcn, void* userData);
231 
234  virtual void removeOnTaskNotifyCallback(
235  DtOnTaskNotifyCallbackFcn fcn, void* userData);
236 
239  virtual void clearSubtask(int subtaskId);
240 
243  virtual DtTaskWithTaskStateListPtr topLevelTasks() const;
244 
246  virtual bool hasTopLevelTask() const;
247 
250  virtual bool taskTypesAreExclusive(const DtSimTaskMessageType& taskType1, const DtSimTaskMessageType& taskType2) const;
251 
253  virtual bool canExecuteTask(const DtSimTaskMessageType&) const;
254 
255  virtual void clearTaskByType(const DtSimTaskMessageType& taskType);
256 
257  virtual void updateTaskInfo();
258 
261  virtual DtScriptReactiveTaskController* reactiveTaskController();
262  virtual void setReactiveTaskController(DtScriptReactiveTaskController* reactiveTaskController);
263 
266  static void taskedBySuperiorRequestCallback(DtSimMessage * msg, void *
267  usrData);
268 
271  static void skipTaskCallback(DtSimMessage * msg, void * usr);
272 
275  static void clearTaskCallback(DtSimMessage * msg, void * usr);
276 
280  static void objectAboutToBeRemovedCallback(DtVrfObject* object, void* usr);
281 
284  static void subordinateRemoved(DtEntityIdentifier childEid, void* usr);
285 
286  static DtSimTaskManager * creator(const DtString & name,
287  DtVrfObject * vrfObject, DtReaderWriterRegistry * parentRegistry);
288 
293  static DtSimTaskManagerFactory * factory();
294  static void setFactory(DtSimTaskManagerFactory * factory);
295 
296  static void addSimTaskManagerCreatorFcn(const DtString & type,
298 
300  static DtSimTaskManager * createTaskManager(const DtString & name,
301  const DtString & type, DtVrfObject * vrfObject,
302  DtReaderWriterRegistry * parentRegistry = 0);
303 
304 protected:
305 
309  virtual void processClearTask(DtSimMessage * msg);
310 
314  virtual void processObjectAboutToBeRemoved(DtVrfObject* object);
315 
316  virtual void resumeTaskTree(DtSuspendedTaskInfo* suspendedTaskInfo);
317 
320  virtual bool clearAllTopLevelTasks();
321 
325  virtual void clearConflictingTopLevelTasks(const DtSimTaskMessageType& taskType);
326 
329  virtual void onTaskNotify(const DtSimTask & task, const DtSimComponent &
330  notifier);
331 
336  void processSubordinateRemoved(DtEntityIdentifier childEid);
337 
340  static void taskMessageCallback(DtSimMessage* msg, void* usr);
341 
343  virtual void processTaskMessage(DtSimMessage* msg);
344 
346  virtual bool startTaskExecution(DtTaskMessage& taskMsg, DtSimTaskStatePtr taskState, bool taskNotify);
347 
351  virtual std::vector<DtSimTaskMessageType> conflictingTaskTypes(const DtSimTaskMessageType& testTaskType) const;
352 
354  virtual std::list<DtString> taskGroupsForTask(const DtSimTaskMessageType& taskType) const;
355 
356  static void requestCurrentTasksCallback(const DtVrfObjectMessage* msg, void* usr);
357  virtual void processRequestCurrentTasks(const DtVrfObjectMessage* msg);
358 
359  static void unsubscribeCurrentTasksCallback(const DtVrfObjectMessage* msg, void* usr);
360  virtual void processUnsubscribeCurrentTasks(const DtVrfObjectMessage* msg);
361 
362  virtual void sendCurrentTasks();
363  virtual void addSubtasksToCurrentTaskMessage(const DtSuspendedTaskInfoList& subtaskList, int parentTaskId, DtCurrentTasksAdminContent& adminContent);
364 
365  static void clearTaskByTrackingNumberCallback(const DtVrfObjectMessage* msg, void* usr);
366  virtual void processClearTaskByTrackingNumber(const DtVrfObjectMessage* msg);
367 
368 protected:
370 
371  typedef std::map<DtSimTaskMessageType, DtTaskControllerComponent*> DtTaskProcessorMap;
372 
373  std::vector<DtOnTaskNotifyCallbackInfo> myOnTaskNotifyCallbacks;
374 
376 
380 
384 
389 
393 
395 
397 
399 
401 };
402 

Document ID: Generated on Sun Nov 24 19:49:21 EST 2013 from SVN revision 133924
Copyright © 2005-2013 VT MÄK. All Rights Reserved (www.mak.com)