VR-Forces 4.6.1 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 "vrfutil/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 
135  virtual bool executeTask(DtTaskMessage& taskMsg);
136  virtual bool executeTask(DtTaskMessage& taskMsg, DtSimTaskStatePtr taskState);
138 
141  virtual void addBackgroundProcess(const DtString& scriptId, int backgroundProcessId, const DtString& controllerName);
142  virtual void removeBackgroundProcess(const DtString& scriptId);
143 
145  virtual void addScriptedSet(const DtString& scriptId, int backgroundProcessId, const DtString& controllerName);
146  virtual void removeScriptedSet(const DtString& scriptId);
147 
154  virtual bool transitionTask(DtTaskMessage& taskMsg, DtSimTaskStatePtr taskState);
155 
159  virtual int suspendTasks(std::set<DtString> actionCategories);
162  virtual int suspendAllTopLevelTasks();
163 
166  virtual DtSuspendedTaskInfo* suspendTask(int taskId);
167 
169  virtual bool resumeTasks(int suspendId);
170 
172 
173  virtual void addTaskCompleteCallback(DtTaskCompleteCallbackList::DtCallbackFunctionType fcn, void* usr);
174  virtual void removeTaskCompleteCallback(DtTaskCompleteCallbackList::DtCallbackFunctionType fcn, void* usr);
176 
179  virtual bool taskActive(int taskId) const;
180 
182  virtual void registerInterfaceMessageCallbacks();
183 
185  virtual void registerRadioMessageCallbacks();
186 
189  virtual void taskNotify(const DtSimTask & task, const DtSimComponent &
190  notifier);
191 
195  virtual void skipTask(bool fromSuperior = false);
196 
200  virtual void taskComplete(const DtVrfObjectMessage & radioMsg, bool success);
201 
204  virtual void sendTaskCompleted(const DtTaskMessage& taskMsg, bool success);
205 
208  void awaitingTask(int taskIdJustCompleted = -1);
209 
212  virtual void setTaskedBySuperior();
213 
215  virtual bool requestTaskNeeded() const;
216 
218  virtual void setRequestTaskNeeded(bool requestTaskNeeded);
219 
222  virtual bool independentlyTasked() const;
223 
226  virtual void setIndependentlyTasked(bool independentlyTasked);
227 
230  virtual bool isPseudoAggregate() const { return false; }
231 
234  virtual DtString type() const;
235 
237  virtual DtVrfObject * vrfObject() const;
238 
241  virtual void setVrfObject(DtVrfObject * vrfObject);
242 
245 
246  virtual void setSendSkipTaskMessages(bool sendSkipTaskMessages);
247  virtual bool sendSkipTaskMessages();
248  //}
249 
252  virtual void addOnTaskNotifyCallback(
253  DtOnTaskNotifyCallbackFcn fcn, void* userData);
254 
257  virtual void removeOnTaskNotifyCallback(
258  DtOnTaskNotifyCallbackFcn fcn, void* userData);
259 
262  virtual void clearSubtask(int subtaskId);
263 
266  virtual DtTaskWithTaskStateListPtr topLevelTasks() const;
267 
269  virtual bool hasTopLevelTask() const;
270 
273  virtual bool taskTypesAreExclusive(const DtSimTaskMessageType& taskType1, const DtSimTaskMessageType& taskType2) const;
274 
279  virtual bool taskTypesAreExclusive(const std::list<DtString>& task1Categories, const DtSimTaskMessageType& taskType2) const;
280 
282  virtual bool canExecuteTask(const DtSimTaskMessageType&) const;
283 
284  virtual void clearTaskByType(const DtSimTaskMessageType& taskType);
285 
286  virtual void updateTaskInfo();
287 
290  virtual DtScriptReactiveTaskController* reactiveTaskController();
291  virtual void setReactiveTaskController(DtScriptReactiveTaskController* reactiveTaskController);
292 
295  static void taskedBySuperiorRequestCallback(DtSimMessage * msg, void *
296  usrData);
297 
300  static void skipTaskCallback(DtSimMessage * msg, void * usr);
301 
304  static void clearTaskCallback(DtSimMessage * msg, void * usr);
305 
308  static void taskVisualizationRequestCallback(DtSimMessage * msg, void * usr);
309 
313  static void objectAboutToBeRemovedCallback(DtVrfObject* object, void* usr);
314 
317  static void subordinateRemoved(const DtUUID& superior, const DtUUID& subordinate, void* usr);
318 
319  static DtSimTaskManager * creator(const DtString & name,
320  DtVrfObject * vrfObject, DtReaderWriterRegistry * parentRegistry);
321 
326  static DtSimTaskManagerFactory * factory();
327  static void setFactory(DtSimTaskManagerFactory * factory);
328 
329  static void addSimTaskManagerCreatorFcn(const DtString & type,
331 
333  static DtSimTaskManager * createTaskManager(const DtString & name,
334  const DtString & type, DtVrfObject * vrfObject,
335  DtReaderWriterRegistry * parentRegistry = 0);
336 
338  virtual bool hasTopLevelTasks() const;
339 
341  virtual bool taskVisualizationsEnabled(bool includeUnTimedOut) const;
342 
344  virtual bool taskVisualizationsActivated() const;
345 
346 protected:
347 
351  virtual void processClearTask(DtSimMessage * msg);
352 
354  virtual void processTaskVisualizationRequest(DtSimMessage * msg);
355 
359  virtual void processObjectAboutToBeRemoved(DtVrfObject* object);
360 
361  virtual void resumeTaskTree(DtSuspendedTaskInfo* suspendedTaskInfo);
362 
365  virtual bool clearAllTopLevelTasks();
366 
370  virtual void clearConflictingTopLevelTasks(const DtSimTaskMessageType& taskType);
371 
374  virtual void onTaskNotify(const DtSimTask & task, const DtSimComponent &
375  notifier);
376 
381  void processSubordinateRemoved(const DtUUID& superior, const DtUUID& subordinate);
382 
385  static void taskMessageCallback(DtSimMessage* msg, void* usr);
386 
388  virtual void processTaskMessage(DtSimMessage* msg);
389 
391  virtual bool startTaskExecution(DtTaskMessage& taskMsg, DtSimTaskStatePtr taskState, bool taskNotify);
392 
396  virtual std::vector<DtSimTaskMessageType> conflictingTaskTypes(const DtSimTaskMessageType& testTaskType) const;
397 
399  virtual std::list<DtString> taskGroupsForTask(const DtSimTaskMessageType& taskType) const;
400 
401  static void requestCurrentTasksCallback(const DtVrfObjectMessage* msg, void* usr);
402  virtual void processRequestCurrentTasks(const DtVrfObjectMessage* msg);
403 
404  static void unsubscribeCurrentTasksCallback(const DtVrfObjectMessage* msg, void* usr);
405  virtual void processUnsubscribeCurrentTasks(const DtVrfObjectMessage* msg);
406 
407  virtual void sendCurrentTasks();
408  virtual void addSubtasksToCurrentTaskMessage(const DtSuspendedTaskInfoList& subtaskList, int parentTaskId, DtCurrentTasksAdminContent& adminContent);
409 
411  virtual void updateTaskVisualizationList();
412 
414  virtual void sendCurrentTaskVisualizations();
415 
417  virtual void stopCurrentTaskVisualizations();
418 
419  static void clearTaskByTrackingNumberCallback(const DtVrfObjectMessage* msg, void* usr);
420  virtual void processClearTaskByTrackingNumber(const DtVrfObjectMessage* msg);
421 
422  static DtGlobalObjectDesignator nextTaskVisualizationGlobalIdCallback(void* usr);
423  virtual DtGlobalObjectDesignator nextTaskVisualizationGlobalId();
424 
427  virtual void registerSetDataMessageCallbacks();
428  virtual void unregisterSetDataMessageCallbacks();
429 
430  virtual void registerTaskMessageCallbacks();
431  virtual void unregisterTaskMessageCallbacks();
432 
434 protected:
436 
437  typedef std::map<DtSimTaskMessageType, DtTaskControllerComponent*> DtTaskProcessorMap;
438 
439  std::vector<DtOnTaskNotifyCallbackInfo> myOnTaskNotifyCallbacks;
440 
442 
446 
450 
455 
459 
461  std::set<DtSimulationAddress> myTaskVisualizationRequestors;
462 
465 
467 
469 
471 
473 
475 
477  {
478  int taskId;
480  };
481 
482  typedef std::map<DtString, BackgroundProcessInformation> BackgroundProcesses;
483 
486 
487  DtBoost::shared_ptr<DtBulkEnvironmentProcessManager> myTaskVisualizationManager;
488 
490 
492  std::list<DtTaskVisualizationPtr> myCurrentTaskVisualizations;
493  std::list<DtTaskVisualizationPtr> myCurrentInactiveTaskVisualizations;
494 };

Document ID: Generated on Wed Jul 25 16:57:45 EDT 2018 from SVN revision 190790
Copyright © 2005-2018 VT MÄK. All Rights Reserved (www.mak.com)