VR-Forces Development_Version 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;
36 
39 typedef void (*DtOnTaskNotifyCallbackFcn)(
40  const DtSimTask & task, const DtSimComponent &notifier, void* usr);
41 
44 {
46  void* myUserData;
47 };
48 
54 {
55 private:
58 
59 public:
61  typedef std::set<DtSimTaskMessageType> SupportingTasks;
62  typedef std::map<int, SupportingTasks> AvailableSupportingTasks;
63 
65  DtSimTaskManager(const DtString & name, DtVrfObject * vrfObject,
66  DtReaderWriterRegistry * parentRegistry = 0);
67 
69  DtSimTaskManager(const DtSimTaskManager & orig,
70  DtReaderWriterRegistry * parentRegistry = 0);
71 
73  const DtSimTaskManager & operator=(const DtSimTaskManager & orig);
74 
76  virtual ~DtSimTaskManager();
77 
79  virtual bool init();
80 
82  virtual void tick();
83 
91  virtual void addTaskProcessor(const DtSimTaskMessageType& taskType,
92  DtTaskControllerComponent* taskController);
93 
96  virtual void removeTaskProcessor(const DtSimTaskMessageType& taskType,
97  DtTaskControllerComponent* taskController);
98 
100  virtual void removeAllReferencesToController(DtTaskControllerComponent*
101  taskController);
102 
106  virtual std::vector<DtSimTaskMessageType> capableTaskIds() const;
107 
110  virtual AvailableSupportingTasks supportingTasks() const;
111 
113  virtual SupportingTasks supportingTasks(int) const;
114 
117  virtual void addSupportingTask(int, const DtSimTaskMessageType&);
118  virtual void addSupportingTasks(int, const SupportingTasks&);
119  virtual void removeSupportingTask(int, const DtSimTaskMessageType&);
120  virtual void removeSupportingTasks(int);
122 
134  virtual bool executeTask(DtTaskMessage& taskMsg);
135  virtual bool executeTask(DtTaskMessage& taskMsg, DtSimTaskStatePtr taskState);
137 
140  virtual void addBackgroundProcess(const DtString& scriptId, int backgroundProcessId, const DtString& controllerName);
141  virtual void removeBackgroundProcess(const DtString& scriptId);
142 
149  virtual bool transitionTask(DtTaskMessage& taskMsg, DtSimTaskStatePtr taskState);
150 
154  virtual int suspendTasks(std::set<DtString> actionCategories);
157  virtual int suspendAllTopLevelTasks();
158 
161  virtual DtSuspendedTaskInfo* suspendTask(int taskId);
162 
164  virtual bool resumeTasks(int suspendId);
165 
167 
168  virtual void addTaskCompleteCallback(DtTaskCompleteCallbackList::DtCallbackFunctionType fcn, void* usr);
169  virtual void removeTaskCompleteCallback(DtTaskCompleteCallbackList::DtCallbackFunctionType fcn, void* usr);
171 
174  virtual bool taskActive(int taskId) const;
175 
177  virtual void registerInterfaceMessageCallbacks();
178 
180  virtual void registerRadioMessageCallbacks();
181 
184  virtual void taskNotify(const DtSimTask & task, const DtSimComponent &
185  notifier);
186 
190  virtual void skipTask(bool fromSuperior = false);
191 
195  virtual void taskComplete(const DtVrfObjectMessage & radioMsg, bool success);
196 
199  virtual void sendTaskCompleted(const DtTaskMessage& taskMsg, bool success);
200 
203  void awaitingTask(int taskIdJustCompleted = -1);
204 
207  virtual void setTaskedBySuperior();
208 
210  virtual bool requestTaskNeeded() const;
211 
213  virtual void setRequestTaskNeeded(bool requestTaskNeeded);
214 
217  virtual bool independentlyTasked() const;
218 
221  virtual void setIndependentlyTasked(bool independentlyTasked);
222 
225  virtual bool isPseudoAggregate() const { return false; }
226 
229  virtual DtString type() const;
230 
232  virtual DtVrfObject * vrfObject() const;
233 
236  virtual void setVrfObject(DtVrfObject * vrfObject);
237 
240 
241  virtual void setSendSkipTaskMessages(bool sendSkipTaskMessages);
242  virtual bool sendSkipTaskMessages();
243  //}
244 
247  virtual void addOnTaskNotifyCallback(
248  DtOnTaskNotifyCallbackFcn fcn, void* userData);
249 
252  virtual void removeOnTaskNotifyCallback(
253  DtOnTaskNotifyCallbackFcn fcn, void* userData);
254 
257  virtual void clearSubtask(int subtaskId);
258 
261  virtual DtTaskWithTaskStateListPtr topLevelTasks() const;
262 
264  virtual bool hasTopLevelTask() const;
265 
268  virtual bool taskTypesAreExclusive(const DtSimTaskMessageType& taskType1, const DtSimTaskMessageType& taskType2) const;
269 
271  virtual bool canExecuteTask(const DtSimTaskMessageType&) const;
272 
273  virtual void clearTaskByType(const DtSimTaskMessageType& taskType);
274 
275  virtual void updateTaskInfo();
276 
279  virtual DtScriptReactiveTaskController* reactiveTaskController();
280  virtual void setReactiveTaskController(DtScriptReactiveTaskController* reactiveTaskController);
281 
284  static void taskedBySuperiorRequestCallback(DtSimMessage * msg, void *
285  usrData);
286 
289  static void skipTaskCallback(DtSimMessage * msg, void * usr);
290 
293  static void clearTaskCallback(DtSimMessage * msg, void * usr);
294 
297  static void taskVisualizationRequestCallback(DtSimMessage * msg, void * usr);
298 
302  static void objectAboutToBeRemovedCallback(DtVrfObject* object, void* usr);
303 
306  static void subordinateRemoved(const DtUUID& subordinate, void* usr);
307 
308  static DtSimTaskManager * creator(const DtString & name,
309  DtVrfObject * vrfObject, DtReaderWriterRegistry * parentRegistry);
310 
315  static DtSimTaskManagerFactory * factory();
316  static void setFactory(DtSimTaskManagerFactory * factory);
317 
318  static void addSimTaskManagerCreatorFcn(const DtString & type,
320 
322  static DtSimTaskManager * createTaskManager(const DtString & name,
323  const DtString & type, DtVrfObject * vrfObject,
324  DtReaderWriterRegistry * parentRegistry = 0);
325 
326 protected:
327 
331  virtual void processClearTask(DtSimMessage * msg);
332 
334  virtual void processTaskVisualizationRequest(DtSimMessage * msg);
335 
339  virtual void processObjectAboutToBeRemoved(DtVrfObject* object);
340 
341  virtual void resumeTaskTree(DtSuspendedTaskInfo* suspendedTaskInfo);
342 
345  virtual bool clearAllTopLevelTasks();
346 
350  virtual void clearConflictingTopLevelTasks(const DtSimTaskMessageType& taskType);
351 
354  virtual void onTaskNotify(const DtSimTask & task, const DtSimComponent &
355  notifier);
356 
361  void processSubordinateRemoved(const DtUUID& subordinate);
362 
365  static void taskMessageCallback(DtSimMessage* msg, void* usr);
366 
368  virtual void processTaskMessage(DtSimMessage* msg);
369 
371  virtual bool startTaskExecution(DtTaskMessage& taskMsg, DtSimTaskStatePtr taskState, bool taskNotify);
372 
376  virtual std::vector<DtSimTaskMessageType> conflictingTaskTypes(const DtSimTaskMessageType& testTaskType) const;
377 
379  virtual std::list<DtString> taskGroupsForTask(const DtSimTaskMessageType& taskType) const;
380 
381  static void requestCurrentTasksCallback(const DtVrfObjectMessage* msg, void* usr);
382  virtual void processRequestCurrentTasks(const DtVrfObjectMessage* msg);
383 
384  static void unsubscribeCurrentTasksCallback(const DtVrfObjectMessage* msg, void* usr);
385  virtual void processUnsubscribeCurrentTasks(const DtVrfObjectMessage* msg);
386 
387  virtual void sendCurrentTasks();
388  virtual void addSubtasksToCurrentTaskMessage(const DtSuspendedTaskInfoList& subtaskList, int parentTaskId, DtCurrentTasksAdminContent& adminContent);
389 
390  virtual void sendCurrentTaskVisualizations();
391  virtual void stopCurrentTaskVisualizations();
392 
393  static void clearTaskByTrackingNumberCallback(const DtVrfObjectMessage* msg, void* usr);
394  virtual void processClearTaskByTrackingNumber(const DtVrfObjectMessage* msg);
395 
396  static DtGlobalObjectDesignator nextTaskVisualizationGlobalIdCallback(void* usr);
397  virtual DtGlobalObjectDesignator nextTaskVisualizationGlobalId();
398 
401  virtual void registerSetDataMessageCallbacks();
402  virtual void unregisterSetDataMessageCallbacks();
403 
404  virtual void registerTaskMessageCallbacks();
405  virtual void unregisterTaskMessageCallbacks();
406 
408 protected:
410 
411  typedef std::map<DtSimTaskMessageType, DtTaskControllerComponent*> DtTaskProcessorMap;
412 
413  std::vector<DtOnTaskNotifyCallbackInfo> myOnTaskNotifyCallbacks;
414 
416 
420 
424 
429 
433 
435  std::set<DtSimulationAddress> myTaskVisualizationRequestors;
436 
439 
441 
443 
445 
447 
449 
451  {
452  int taskId;
454  };
455 
456  typedef std::map<DtString, BackgroundProcessInformation> BackgroundProcesses;
457 
459 
461 
463 };

Document ID: Generated on Mon Jul 4 01:00:18 EDT 2016 from SVN revision 166489
Copyright © 2005-2015 VT MÄK. All Rights Reserved (www.mak.com)