VR-Forces 4.1 Class Documentation
taskMgr.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2006 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"
16 #include "vrfobjcore/taskMgrFact.h"
18 #include <vlutil/vlSmartPointers.h>
19 #include "vrftasks/radioMsgTypes.h"
20 
22 class DtSimTask;
23 class DtSimComponent;
25 class DtVrfObjectMessage;
26 class DtTaskMessage;
27 class DtSimMessage;
29 
32 typedef void (*DtOnTaskNotifyCallbackFcn)(
33  const DtSimTask & task, const DtSimComponent &notifier, void* usr);
34 
37 {
39  void* myUserData;
40 };
41 
47 {
48 private:
51 
52 public:
53 
55  DtSimTaskManager(const DtString & name, DtVrfObject * vrfObject,
56  DtReaderWriterRegistry * parentRegistry = 0);
57 
59  DtSimTaskManager(const DtSimTaskManager & orig,
60  DtReaderWriterRegistry * parentRegistry = 0);
61 
63  const DtSimTaskManager & operator=(const DtSimTaskManager & orig);
64 
66  virtual ~DtSimTaskManager();
67 
69  virtual bool init();
70 
72  virtual void tick();
73 
81  virtual void addTaskProcessor(const DtSimTaskMessageType& taskType,
82  DtTaskControllerComponent* taskController);
83 
86  virtual void removeTaskProcessor(const DtSimTaskMessageType& taskType,
87  DtTaskControllerComponent* taskController);
88 
90  virtual void removeAllReferencesToController(DtTaskControllerComponent*
91  taskController);
92 
96  virtual std::vector<DtSimTaskMessageType> capableTaskIds() const;
97 
109  virtual bool executeTask(DtTaskMessage& taskMsg);
110  virtual bool executeTask(DtTaskMessage& taskMsg, DtSimTaskStatePtr taskState);
112 
119  virtual bool transitionTask(DtTaskMessage& taskMsg, DtSimTaskStatePtr taskState);
120 
123  virtual bool taskActive(int taskId) const;
124 
126  virtual void registerInterfaceMessageCallbacks();
127 
129  virtual void registerRadioMessageCallbacks();
130 
133  virtual void taskNotify(const DtSimTask & task, const DtSimComponent &
134  notifier);
135 
139  virtual void skipTask(bool fromSuperior = false);
140 
144  virtual void taskComplete(const DtVrfObjectMessage & radioMsg, bool success);
145 
148  virtual void sendTaskCompleted(const DtTaskMessage& taskMsg, bool success);
149 
152  void awaitingTask(int taskIdJustCompleted = -1);
153 
156  virtual void setTaskedBySuperior();
157 
159  virtual bool requestTaskNeeded() const;
160 
162  virtual void setRequestTaskNeeded(bool requestTaskNeeded);
163 
166  virtual bool independentlyTasked() const;
167 
170  virtual void setIndependentlyTasked(bool independentlyTasked);
171 
175  virtual bool currentTasksMatchEchelonId();
176 
179  virtual bool isPseudoAggregate() const { return false; }
180 
183  virtual DtString type() const;
184 
186  virtual DtVrfObject * vrfObject() const;
187 
190  virtual void setVrfObject(DtVrfObject * vrfObject);
191 
194 
195  virtual void setSendSkipTaskMessages(bool sendSkipTaskMessages);
196  virtual bool sendSkipTaskMessages();
197  //}
198 
201  virtual void addOnTaskNotifyCallback(
202  DtOnTaskNotifyCallbackFcn fcn, void* userData);
203 
206  virtual void removeOnTaskNotifyCallback(
207  DtOnTaskNotifyCallbackFcn fcn, void* userData);
208 
211  virtual void clearSubtask(int subtaskId);
212 
215  virtual DtTaskWithTaskStateListPtr topLevelTasks() const;
216 
218  virtual bool hasTopLevelTask() const;
219 
222  virtual bool taskTypesAreExclusive(const DtSimTaskMessageType& taskType1, const DtSimTaskMessageType& taskType2) const;
223 
225  virtual bool canExecuteTask(const DtSimTaskMessageType&) const;
226 
229  static void taskedBySuperiorRequestCallback(DtSimMessage * msg, void *
230  usrData);
231 
234  static void skipTaskCallback(DtSimMessage * msg, void * usr);
235 
238  static void clearTaskCallback(DtSimMessage * msg, void * usr);
239 
243  static void objectAboutToBeRemovedCallback(DtVrfObject* object, void* usr);
244 
247  static void subordinateRemoved(DtEntityIdentifier childEid, void* usr);
248 
249  static DtSimTaskManager * creator(const DtString & name,
250  DtVrfObject * vrfObject, DtReaderWriterRegistry * parentRegistry);
251 
256  static DtSimTaskManagerFactory * factory();
257  static void setFactory(DtSimTaskManagerFactory * factory);
258 
259  static void addSimTaskManagerCreatorFcn(const DtString & type,
261 
263  static DtSimTaskManager * createTaskManager(const DtString & name,
264  const DtString & type, DtVrfObject * vrfObject,
265  DtReaderWriterRegistry * parentRegistry = 0);
266 
267 protected:
268 
272  virtual void processClearTask(DtSimMessage * msg);
273 
277  virtual void processObjectAboutToBeRemoved(DtVrfObject* object);
278 
281  virtual bool clearAllTopLevelTasks();
282 
286  virtual void clearConflictingTopLevelTasks(const DtSimTaskMessageType& taskType);
287 
290  virtual void onTaskNotify(const DtSimTask & task, const DtSimComponent &
291  notifier);
292 
297  void processSubordinateRemoved(DtEntityIdentifier childEid);
298 
301  static void taskMessageCallback(DtSimMessage* msg, void* usr);
302 
304  virtual void processTaskMessage(DtSimMessage* msg);
305 
309  virtual std::vector<DtSimTaskMessageType> conflictingTaskTypes(const DtSimTaskMessageType& testTaskType) const;
310 
312  virtual std::list<DtString> taskGroupsForTask(const DtSimTaskMessageType& taskType) const;
313 
314  static void requestCurrentTasksCallback(const DtVrfObjectMessage* msg, void* usr);
315  virtual void processRequestCurrentTasks(const DtVrfObjectMessage* msg);
316 
317  static void unsubscribeCurrentTasksCallback(const DtVrfObjectMessage* msg, void* usr);
318  virtual void processUnsubscribeCurrentTasks(const DtVrfObjectMessage* msg);
319 
320  virtual void sendCurrentTasks();
321 
322  static void clearTaskByTrackingNumberCallback(const DtVrfObjectMessage* msg, void* usr);
323  virtual void processClearTaskByTrackingNumber(const DtVrfObjectMessage* msg);
324 
325 protected:
327 
328  typedef std::map<DtSimTaskMessageType, DtTaskControllerComponent*> DtTaskProcessorMap;
329 
330  std::vector<DtOnTaskNotifyCallbackInfo> myOnTaskNotifyCallbacks;
331 
333 
337 
341 
346 
350 
352 };
353 

Document ID: Generated on Tue Jan 29 18:21:16 EST 2013 from SVN revision 123193
Copyright © 2005-2013 VT MÄK Inc. All Rights Reserved (www.mak.com)