VR-Forces 4.3 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
simTaskManager.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"
18 #include <vlutil/vlSmartPointers.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  typedef std::set<DtSimTaskMessageType> SupportingTasks;
61  typedef std::map<int, SupportingTasks> AvailableSupportingTasks;
62 
64  DtSimTaskManager(const DtString & name, DtVrfObject * vrfObject,
65  DtReaderWriterRegistry * parentRegistry = 0);
66 
68  DtSimTaskManager(const DtSimTaskManager & orig,
69  DtReaderWriterRegistry * parentRegistry = 0);
70 
72  const DtSimTaskManager & operator=(const DtSimTaskManager & orig);
73 
75  virtual ~DtSimTaskManager();
76 
78  virtual bool init();
79 
81  virtual void tick();
82 
90  virtual void addTaskProcessor(const DtSimTaskMessageType& taskType,
91  DtTaskControllerComponent* taskController);
92 
95  virtual void removeTaskProcessor(const DtSimTaskMessageType& taskType,
96  DtTaskControllerComponent* taskController);
97 
99  virtual void removeAllReferencesToController(DtTaskControllerComponent*
100  taskController);
101 
105  virtual std::vector<DtSimTaskMessageType> capableTaskIds() const;
106 
109  virtual AvailableSupportingTasks supportingTasks() const;
110 
112  virtual SupportingTasks supportingTasks(int) const;
113 
116  virtual void addSupportingTask(int, const DtSimTaskMessageType&);
117  virtual void addSupportingTasks(int, const SupportingTasks&);
118  virtual void removeSupportingTask(int, const DtSimTaskMessageType&);
119  virtual void removeSupportingTasks(int);
121 
133  virtual bool executeTask(DtTaskMessage& taskMsg);
134  virtual bool executeTask(DtTaskMessage& taskMsg, DtSimTaskStatePtr taskState);
136 
143  virtual bool transitionTask(DtTaskMessage& taskMsg, DtSimTaskStatePtr taskState);
144 
148  virtual int suspendTasks(std::set<DtString> actionCategories);
151  virtual int suspendAllTopLevelTasks();
152 
155  virtual DtSuspendedTaskInfo* suspendTask(int taskId);
156 
158  virtual bool resumeTasks(int suspendId);
159 
161 
162  virtual void addTaskCompleteCallback(DtTaskCompleteCallbackList::DtCallbackFunctionType fcn, void* usr);
163  virtual void removeTaskCompleteCallback(DtTaskCompleteCallbackList::DtCallbackFunctionType fcn, void* usr);
165 
168  virtual bool taskActive(int taskId) const;
169 
171  virtual void registerInterfaceMessageCallbacks();
172 
174  virtual void registerRadioMessageCallbacks();
175 
178  virtual void taskNotify(const DtSimTask & task, const DtSimComponent &
179  notifier);
180 
184  virtual void skipTask(bool fromSuperior = false);
185 
189  virtual void taskComplete(const DtVrfObjectMessage & radioMsg, bool success);
190 
193  virtual void sendTaskCompleted(const DtTaskMessage& taskMsg, bool success);
194 
197  void awaitingTask(int taskIdJustCompleted = -1);
198 
201  virtual void setTaskedBySuperior();
202 
204  virtual bool requestTaskNeeded() const;
205 
207  virtual void setRequestTaskNeeded(bool requestTaskNeeded);
208 
211  virtual bool independentlyTasked() const;
212 
215  virtual void setIndependentlyTasked(bool independentlyTasked);
216 
220  virtual bool currentTasksMatchEchelonId();
221 
224  virtual bool isPseudoAggregate() const { return false; }
225 
228  virtual DtString type() const;
229 
231  virtual DtVrfObject * vrfObject() const;
232 
235  virtual void setVrfObject(DtVrfObject * vrfObject);
236 
239 
240  virtual void setSendSkipTaskMessages(bool sendSkipTaskMessages);
241  virtual bool sendSkipTaskMessages();
242  //}
243 
246  virtual void addOnTaskNotifyCallback(
247  DtOnTaskNotifyCallbackFcn fcn, void* userData);
248 
251  virtual void removeOnTaskNotifyCallback(
252  DtOnTaskNotifyCallbackFcn fcn, void* userData);
253 
256  virtual void clearSubtask(int subtaskId);
257 
260  virtual DtTaskWithTaskStateListPtr topLevelTasks() const;
261 
263  virtual bool hasTopLevelTask() const;
264 
267  virtual bool taskTypesAreExclusive(const DtSimTaskMessageType& taskType1, const DtSimTaskMessageType& taskType2) const;
268 
270  virtual bool canExecuteTask(const DtSimTaskMessageType&) const;
271 
272  virtual void clearTaskByType(const DtSimTaskMessageType& taskType);
273 
274  virtual void updateTaskInfo();
275 
278  virtual DtScriptReactiveTaskController* reactiveTaskController();
279  virtual void setReactiveTaskController(DtScriptReactiveTaskController* reactiveTaskController);
280 
283  static void taskedBySuperiorRequestCallback(DtSimMessage * msg, void *
284  usrData);
285 
288  static void skipTaskCallback(DtSimMessage * msg, void * usr);
289 
292  static void clearTaskCallback(DtSimMessage * msg, void * usr);
293 
297  static void objectAboutToBeRemovedCallback(DtVrfObject* object, void* usr);
298 
301  static void subordinateRemoved(DtEntityIdentifier childEid, void* usr);
302 
303  static DtSimTaskManager * creator(const DtString & name,
304  DtVrfObject * vrfObject, DtReaderWriterRegistry * parentRegistry);
305 
310  static DtSimTaskManagerFactory * factory();
311  static void setFactory(DtSimTaskManagerFactory * factory);
312 
313  static void addSimTaskManagerCreatorFcn(const DtString & type,
315 
317  static DtSimTaskManager * createTaskManager(const DtString & name,
318  const DtString & type, DtVrfObject * vrfObject,
319  DtReaderWriterRegistry * parentRegistry = 0);
320 
321 protected:
322 
326  virtual void processClearTask(DtSimMessage * msg);
327 
331  virtual void processObjectAboutToBeRemoved(DtVrfObject* object);
332 
333  virtual void resumeTaskTree(DtSuspendedTaskInfo* suspendedTaskInfo);
334 
337  virtual bool clearAllTopLevelTasks();
338 
342  virtual void clearConflictingTopLevelTasks(const DtSimTaskMessageType& taskType);
343 
346  virtual void onTaskNotify(const DtSimTask & task, const DtSimComponent &
347  notifier);
348 
353  void processSubordinateRemoved(DtEntityIdentifier childEid);
354 
357  static void taskMessageCallback(DtSimMessage* msg, void* usr);
358 
360  virtual void processTaskMessage(DtSimMessage* msg);
361 
363  virtual bool startTaskExecution(DtTaskMessage& taskMsg, DtSimTaskStatePtr taskState, bool taskNotify);
364 
368  virtual std::vector<DtSimTaskMessageType> conflictingTaskTypes(const DtSimTaskMessageType& testTaskType) const;
369 
371  virtual std::list<DtString> taskGroupsForTask(const DtSimTaskMessageType& taskType) const;
372 
373  static void requestCurrentTasksCallback(const DtVrfObjectMessage* msg, void* usr);
374  virtual void processRequestCurrentTasks(const DtVrfObjectMessage* msg);
375 
376  static void unsubscribeCurrentTasksCallback(const DtVrfObjectMessage* msg, void* usr);
377  virtual void processUnsubscribeCurrentTasks(const DtVrfObjectMessage* msg);
378 
379  virtual void sendCurrentTasks();
380  virtual void addSubtasksToCurrentTaskMessage(const DtSuspendedTaskInfoList& subtaskList, int parentTaskId, DtCurrentTasksAdminContent& adminContent);
381 
382  static void clearTaskByTrackingNumberCallback(const DtVrfObjectMessage* msg, void* usr);
383  virtual void processClearTaskByTrackingNumber(const DtVrfObjectMessage* msg);
384 
387  virtual void registerSetDataMessageCallbacks();
388  virtual void unregisterSetDataMessageCallbacks();
389 
390  virtual void registerTaskMessageCallbacks();
391  virtual void unregisterTaskMessageCallbacks();
392 
394 protected:
396 
397  typedef std::map<DtSimTaskMessageType, DtTaskControllerComponent*> DtTaskProcessorMap;
398 
399  std::vector<DtOnTaskNotifyCallbackInfo> myOnTaskNotifyCallbacks;
400 
402 
406 
410 
415 
419 
421 
423 
425 
427 
429 };

Document ID: Generated on Wed Mar 11 21:20:57 EDT 2015 from SVN revision 150940
Copyright © 2005-2014 VT MÄK. All Rights Reserved (www.mak.com)