VR-Forces 4.5 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 
144  virtual void addScriptedSet(const DtString& scriptId, int backgroundProcessId, const DtString& controllerName);
145  virtual void removeScriptedSet(const DtString& scriptId);
146 
153  virtual bool transitionTask(DtTaskMessage& taskMsg, DtSimTaskStatePtr taskState);
154 
158  virtual int suspendTasks(std::set<DtString> actionCategories);
161  virtual int suspendAllTopLevelTasks();
162 
165  virtual DtSuspendedTaskInfo* suspendTask(int taskId);
166 
168  virtual bool resumeTasks(int suspendId);
169 
171 
172  virtual void addTaskCompleteCallback(DtTaskCompleteCallbackList::DtCallbackFunctionType fcn, void* usr);
173  virtual void removeTaskCompleteCallback(DtTaskCompleteCallbackList::DtCallbackFunctionType fcn, void* usr);
175 
178  virtual bool taskActive(int taskId) const;
179 
181  virtual void registerInterfaceMessageCallbacks();
182 
184  virtual void registerRadioMessageCallbacks();
185 
188  virtual void taskNotify(const DtSimTask & task, const DtSimComponent &
189  notifier);
190 
194  virtual void skipTask(bool fromSuperior = false);
195 
199  virtual void taskComplete(const DtVrfObjectMessage & radioMsg, bool success);
200 
203  virtual void sendTaskCompleted(const DtTaskMessage& taskMsg, bool success);
204 
207  void awaitingTask(int taskIdJustCompleted = -1);
208 
211  virtual void setTaskedBySuperior();
212 
214  virtual bool requestTaskNeeded() const;
215 
217  virtual void setRequestTaskNeeded(bool requestTaskNeeded);
218 
221  virtual bool independentlyTasked() const;
222 
225  virtual void setIndependentlyTasked(bool independentlyTasked);
226 
229  virtual bool isPseudoAggregate() const { return false; }
230 
233  virtual DtString type() const;
234 
236  virtual DtVrfObject * vrfObject() const;
237 
240  virtual void setVrfObject(DtVrfObject * vrfObject);
241 
244 
245  virtual void setSendSkipTaskMessages(bool sendSkipTaskMessages);
246  virtual bool sendSkipTaskMessages();
247  //}
248 
251  virtual void addOnTaskNotifyCallback(
252  DtOnTaskNotifyCallbackFcn fcn, void* userData);
253 
256  virtual void removeOnTaskNotifyCallback(
257  DtOnTaskNotifyCallbackFcn fcn, void* userData);
258 
261  virtual void clearSubtask(int subtaskId);
262 
265  virtual DtTaskWithTaskStateListPtr topLevelTasks() const;
266 
268  virtual bool hasTopLevelTask() const;
269 
272  virtual bool taskTypesAreExclusive(const DtSimTaskMessageType& taskType1, const DtSimTaskMessageType& taskType2) const;
273 
275  virtual bool canExecuteTask(const DtSimTaskMessageType&) const;
276 
277  virtual void clearTaskByType(const DtSimTaskMessageType& taskType);
278 
279  virtual void updateTaskInfo();
280 
283  virtual DtScriptReactiveTaskController* reactiveTaskController();
284  virtual void setReactiveTaskController(DtScriptReactiveTaskController* reactiveTaskController);
285 
288  static void taskedBySuperiorRequestCallback(DtSimMessage * msg, void *
289  usrData);
290 
293  static void skipTaskCallback(DtSimMessage * msg, void * usr);
294 
297  static void clearTaskCallback(DtSimMessage * msg, void * usr);
298 
301  static void taskVisualizationRequestCallback(DtSimMessage * msg, void * usr);
302 
306  static void objectAboutToBeRemovedCallback(DtVrfObject* object, void* usr);
307 
310  static void subordinateRemoved(const DtUUID& superior, const DtUUID& subordinate, void* usr);
311 
312  static DtSimTaskManager * creator(const DtString & name,
313  DtVrfObject * vrfObject, DtReaderWriterRegistry * parentRegistry);
314 
319  static DtSimTaskManagerFactory * factory();
320  static void setFactory(DtSimTaskManagerFactory * factory);
321 
322  static void addSimTaskManagerCreatorFcn(const DtString & type,
324 
326  static DtSimTaskManager * createTaskManager(const DtString & name,
327  const DtString & type, DtVrfObject * vrfObject,
328  DtReaderWriterRegistry * parentRegistry = 0);
329 
331  virtual bool hasTopLevelTasks() const;
332 
334  virtual bool taskVisualizationsEnabled() const;
335 
336 protected:
337 
341  virtual void processClearTask(DtSimMessage * msg);
342 
344  virtual void processTaskVisualizationRequest(DtSimMessage * msg);
345 
349  virtual void processObjectAboutToBeRemoved(DtVrfObject* object);
350 
351  virtual void resumeTaskTree(DtSuspendedTaskInfo* suspendedTaskInfo);
352 
355  virtual bool clearAllTopLevelTasks();
356 
360  virtual void clearConflictingTopLevelTasks(const DtSimTaskMessageType& taskType);
361 
364  virtual void onTaskNotify(const DtSimTask & task, const DtSimComponent &
365  notifier);
366 
371  void processSubordinateRemoved(const DtUUID& superior, const DtUUID& subordinate);
372 
375  static void taskMessageCallback(DtSimMessage* msg, void* usr);
376 
378  virtual void processTaskMessage(DtSimMessage* msg);
379 
381  virtual bool startTaskExecution(DtTaskMessage& taskMsg, DtSimTaskStatePtr taskState, bool taskNotify);
382 
386  virtual std::vector<DtSimTaskMessageType> conflictingTaskTypes(const DtSimTaskMessageType& testTaskType) const;
387 
389  virtual std::list<DtString> taskGroupsForTask(const DtSimTaskMessageType& taskType) const;
390 
391  static void requestCurrentTasksCallback(const DtVrfObjectMessage* msg, void* usr);
392  virtual void processRequestCurrentTasks(const DtVrfObjectMessage* msg);
393 
394  static void unsubscribeCurrentTasksCallback(const DtVrfObjectMessage* msg, void* usr);
395  virtual void processUnsubscribeCurrentTasks(const DtVrfObjectMessage* msg);
396 
397  virtual void sendCurrentTasks();
398  virtual void addSubtasksToCurrentTaskMessage(const DtSuspendedTaskInfoList& subtaskList, int parentTaskId, DtCurrentTasksAdminContent& adminContent);
399 
400  virtual void sendCurrentTaskVisualizations();
401  virtual void stopCurrentTaskVisualizations();
402 
403  static void clearTaskByTrackingNumberCallback(const DtVrfObjectMessage* msg, void* usr);
404  virtual void processClearTaskByTrackingNumber(const DtVrfObjectMessage* msg);
405 
406  static DtGlobalObjectDesignator nextTaskVisualizationGlobalIdCallback(void* usr);
407  virtual DtGlobalObjectDesignator nextTaskVisualizationGlobalId();
408 
411  virtual void registerSetDataMessageCallbacks();
412  virtual void unregisterSetDataMessageCallbacks();
413 
414  virtual void registerTaskMessageCallbacks();
415  virtual void unregisterTaskMessageCallbacks();
416 
418 protected:
420 
421  typedef std::map<DtSimTaskMessageType, DtTaskControllerComponent*> DtTaskProcessorMap;
422 
423  std::vector<DtOnTaskNotifyCallbackInfo> myOnTaskNotifyCallbacks;
424 
426 
430 
434 
439 
443 
445  std::set<DtSimulationAddress> myTaskVisualizationRequestors;
446 
449 
451 
453 
455 
457 
459 
461  {
462  int taskId;
464  };
465 
466  typedef std::map<DtString, BackgroundProcessInformation> BackgroundProcesses;
467 
470 
472 
474 };

Document ID: Generated on Thu Mar 23 18:54:12 EDT 2017 from SVN revision 174804
Copyright © 2005-2017 VT MÄK. All Rights Reserved (www.mak.com)