VR-Forces 4.7 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties 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 <readerWriter/rwBoolean.h>
13 #include <vector>
14 #include <map>
15 #include "vrfobjcore/vrfObject.h"
19 #include <vlutil/vlSmartPointers.h>
22 #include <set>
23 
25 class DtSimTask;
26 class DtSimComponent;
28 class DtVrfObjectMessage;
29 class DtTaskMessage;
30 class DtSimMessage;
34 class DtScriptedTaskTask;
37 
40 typedef void (*DtOnTaskNotifyCallbackFcn)(
41  const DtSimTask & task, const DtSimComponent &notifier, void* usr);
42 
45 {
47  void* myUserData;
48 };
49 
55 {
56 private:
59 
60 public:
62  typedef std::set<DtSimTaskMessageType> SupportingTasks;
63  typedef std::map<int, SupportingTasks> AvailableSupportingTasks;
64 
66  DtSimTaskManager(const DtString & name, DtVrfObject * vrfObject,
67  DtReaderWriterRegistry * parentRegistry = 0);
68 
70  DtSimTaskManager(const DtSimTaskManager & orig,
71  DtReaderWriterRegistry * parentRegistry = 0);
72 
74  const DtSimTaskManager & operator=(const DtSimTaskManager & orig);
75 
77  virtual ~DtSimTaskManager();
78 
80  virtual bool init();
81 
83  virtual void tick();
84 
92  virtual void addTaskProcessor(const DtSimTaskMessageType& taskType,
93  DtTaskControllerComponent* taskController);
94 
97  virtual void removeTaskProcessor(const DtSimTaskMessageType& taskType,
98  DtTaskControllerComponent* taskController);
99 
101  virtual void removeAllReferencesToController(DtTaskControllerComponent*
102  taskController);
103 
107  virtual std::vector<DtSimTaskMessageType> capableTaskIds() const;
108 
111  virtual AvailableSupportingTasks supportingTasks() const;
112 
114  virtual SupportingTasks supportingTasks(int) const;
115 
118  virtual void addSupportingTask(int, const DtSimTaskMessageType&);
119  virtual void addSupportingTasks(int, const SupportingTasks&);
120  virtual void removeSupportingTask(int, const DtSimTaskMessageType&);
121  virtual void removeSupportingTasks(int);
123 
138  virtual bool executeTask(DtTaskMessage& taskMsg, bool clearConflictingTopLevelTasks = true);
139  virtual bool executeTask(DtTaskMessage& taskMsg, DtSimTaskStatePtr taskState, bool clearConflictingTopLevelTasks = true);
141 
144  virtual void addBackgroundProcess(const DtString& scriptId, int backgroundProcessId, const DtString& controllerName);
145  virtual void removeBackgroundProcess(const DtString& scriptId);
146 
148  virtual void addScriptedSet(const DtString& scriptId, int backgroundProcessId, const DtString& controllerName);
149  virtual void removeScriptedSet(const DtString& scriptId);
150 
157  virtual bool transitionTask(DtTaskMessage& taskMsg, DtSimTaskStatePtr taskState);
158 
162  virtual int suspendTasks(std::set<DtString> actionCategories);
165  virtual int suspendAllTopLevelTasks();
166 
169  virtual DtSuspendedTaskInfo* suspendTask(int taskId);
170 
172  virtual bool resumeTasks(int suspendId);
173 
175 
176  virtual void addTaskCompleteCallback(DtTaskCompleteCallbackList::DtCallbackFunctionType fcn, void* usr);
177  virtual void removeTaskCompleteCallback(DtTaskCompleteCallbackList::DtCallbackFunctionType fcn, void* usr);
179 
182  virtual bool taskActive(int taskId) const;
183 
185  virtual void registerInterfaceMessageCallbacks();
186 
188  virtual void registerRadioMessageCallbacks();
189 
192  virtual void taskNotify(const DtSimTask & task, const DtSimComponent& notifier,
193  bool clearConflictingTopLevelTasks = true);
194 
198  virtual void skipTask(bool fromSuperior = false);
199 
205  virtual void taskComplete(const DtVrfObjectMessage & radioMsg, bool success, bool affectsIndependentTaskStatus = true);
206 
209  virtual void sendTaskCompleted(const DtTaskMessage& taskMsg, bool success);
210 
213  void awaitingTask(int taskIdJustCompleted = -1);
214 
217  virtual void setTaskedBySuperior();
218 
220  virtual bool requestTaskNeeded() const;
221 
223  virtual void setRequestTaskNeeded(bool requestTaskNeeded);
224 
227  virtual bool independentlyTasked() const;
228 
231  virtual void setIndependentlyTasked(bool independentlyTasked);
232 
235  virtual bool isPseudoAggregate() const { return false; }
236 
239  virtual DtString type() const;
240 
242  virtual DtVrfObject * vrfObject() const;
243 
246  virtual void setVrfObject(DtVrfObject * vrfObject);
247 
250 
251  virtual void setSendSkipTaskMessages(bool sendSkipTaskMessages);
252  virtual bool sendSkipTaskMessages();
253  //}
254 
257  virtual void addOnTaskNotifyCallback(
258  DtOnTaskNotifyCallbackFcn fcn, void* userData);
259 
262  virtual void removeOnTaskNotifyCallback(
263  DtOnTaskNotifyCallbackFcn fcn, void* userData);
264 
267  virtual void clearSubtask(int subtaskId);
268 
271  virtual DtTaskWithTaskStateListPtr topLevelTasks() const;
272 
274  virtual bool hasTopLevelTask() const;
275 
278  virtual bool taskTypesAreExclusive(const DtSimTaskMessageType& taskType1, const DtSimTaskMessageType& taskType2) const;
279 
284  virtual bool taskTypesAreExclusive(const std::list<DtString>& task1Categories, const DtSimTaskMessageType& taskType2) const;
285 
287  virtual bool canExecuteTask(const DtSimTaskMessageType&) const;
288 
289  virtual void clearTaskByType(const DtSimTaskMessageType& taskType);
290 
291  virtual void updateTaskInfo();
292 
294  virtual bool canBeExecutedConcurrently(const DtSimTaskMessageType& taskType) const;
295 
298  virtual DtScriptReactiveTaskController* reactiveTaskController();
299  virtual void setReactiveTaskController(DtScriptReactiveTaskController* reactiveTaskController);
300 
303  static void taskedBySuperiorRequestCallback(DtSimMessage * msg, void *
304  usrData);
305 
308  static void skipTaskCallback(DtSimMessage * msg, void * usr);
309 
312  static void clearTaskCallback(DtSimMessage * msg, void * usr);
313 
316  static void taskVisualizationRequestCallback(DtSimMessage * msg, void * usr);
317 
321  static void objectAboutToBeRemovedCallback(DtVrfObject* object, void* usr);
322 
325  static void subordinateRemoved(const DtUUID& superior, const DtUUID& subordinate, void* usr);
326 
327  static DtSimTaskManager * creator(const DtString & name,
328  DtVrfObject * vrfObject, DtReaderWriterRegistry * parentRegistry);
329 
334  static DtSimTaskManagerFactory * factory();
335  static void setFactory(DtSimTaskManagerFactory * factory);
336 
337  static void addSimTaskManagerCreatorFcn(const DtString & type,
339 
341  static DtSimTaskManager * createTaskManager(const DtString & name,
342  const DtString & type, DtVrfObject * vrfObject,
343  DtReaderWriterRegistry * parentRegistry = 0);
344 
346  virtual bool hasTopLevelTasks() const;
347 
349  virtual bool taskVisualizationsEnabled(bool includeUnTimedOut) const;
350 
352  virtual bool taskVisualizationsActivated() const;
353 
354 protected:
355 
359  virtual void processClearTask(DtSimMessage * msg);
360 
362  virtual void processTaskVisualizationRequest(DtSimMessage * msg);
363 
367  virtual void processObjectAboutToBeRemoved(DtVrfObject* object);
368 
369  virtual void resumeTaskTree(DtSuspendedTaskInfo* suspendedTaskInfo);
370 
373  virtual bool clearAllTopLevelTasks();
374 
378  virtual void clearConflictingTopLevelTasks(const DtSimTaskMessageType& taskType);
379 
382  virtual void onTaskNotify(const DtSimTask & task, const DtSimComponent &
383  notifier);
384 
389  void processSubordinateRemoved(const DtUUID& superior, const DtUUID& subordinate);
390 
393  static void taskMessageCallback(DtSimMessage* msg, void* usr);
394 
396  virtual void processTaskMessage(DtSimMessage* msg);
397 
399  virtual bool startTaskExecution(DtTaskMessage& taskMsg, DtSimTaskStatePtr taskState,
400  bool taskNotify, bool clearConflictingTopLevelTasks = true);
401 
405  virtual std::vector<DtSimTaskMessageType> conflictingTaskTypes(const DtSimTaskMessageType& testTaskType) const;
406 
408  virtual std::list<DtString> taskGroupsForTask(const DtSimTaskMessageType& taskType) const;
409 
410  static void requestCurrentTasksCallback(const DtVrfObjectMessage* msg, void* usr);
411  virtual void processRequestCurrentTasks(const DtVrfObjectMessage* msg);
412 
413  static void unsubscribeCurrentTasksCallback(const DtVrfObjectMessage* msg, void* usr);
414  virtual void processUnsubscribeCurrentTasks(const DtVrfObjectMessage* msg);
415 
416  virtual void sendCurrentTasks();
417  virtual void addSubtasksToCurrentTaskMessage(const DtSuspendedTaskInfoList& subtaskList, int parentTaskId, DtCurrentTasksAdminContent& adminContent);
418 
420  virtual void updateTaskVisualizationList();
421 
423  virtual void sendCurrentTaskVisualizations();
424 
426  virtual void stopCurrentTaskVisualizations();
427 
428  static void clearTaskByTrackingNumberCallback(const DtVrfObjectMessage* msg, void* usr);
429  virtual void processClearTaskByTrackingNumber(const DtVrfObjectMessage* msg);
430 
431  static DtGlobalObjectDesignator nextTaskVisualizationGlobalIdCallback(void* usr);
432  virtual DtGlobalObjectDesignator nextTaskVisualizationGlobalId();
433 
436  virtual void registerSetDataMessageCallbacks();
437  virtual void unregisterSetDataMessageCallbacks();
438 
439  virtual void registerTaskMessageCallbacks();
440  virtual void unregisterTaskMessageCallbacks();
441 
443 protected:
445 
446  typedef std::map<DtSimTaskMessageType, DtTaskControllerComponent*> DtTaskProcessorMap;
447 
448  std::vector<DtOnTaskNotifyCallbackInfo> myOnTaskNotifyCallbacks;
449 
451 
455 
459 
464 
468 
470  std::set<DtSimulationAddress> myTaskVisualizationRequestors;
471 
474 
476 
478 
480 
482 
484 
486  {
487  int taskId;
489  };
490 
491  typedef std::map<DtString, BackgroundProcessInformation> BackgroundProcesses;
492 
495 
496  DtBoost::shared_ptr<DtBulkEnvironmentProcessManager> myTaskVisualizationManager;
497 
499 
501  std::list<DtTaskVisualizationPtr> myCurrentTaskVisualizations;
502  std::list<DtTaskVisualizationPtr> myCurrentInactiveTaskVisualizations;
503 };

Document ID: Generated on Fri Apr 26 21:53:14 EDT 2019 from SVN revision 197883
Copyright © 2005-2019 VT MAK. All Rights Reserved (www.mak.com)