![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /******************************************************************************* 00002 ** Copyright (c) 2007 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 *******************************************************************************/ 00005 /******************************************************************************* 00006 ** $RCSfile: taskCtlrCmpnt.h,v $ $Revision: 1.32 $ $State: Exp $ 00007 *******************************************************************************/ 00008 00011 00014 00015 00016 #ifndef DtTaskControllerComponent_H_ 00017 #define DtTaskControllerComponent_H_ 00018 00019 #include "vrfobjcore/cntrlCmpnt.h" 00020 #include "vrftasks/simTaskState.h" 00021 #include "vrfmsgs/msgExec.h" 00022 #include "vrftasks/taskAndTaskStateDefines.h" 00023 00024 00025 class DtSimManager; 00026 class DtTaskMessage; 00027 class DtSimMessage; 00028 00029 typedef void (*DtTaskMessageCallbackFcn)(DtSimMessage * msg, void * usr, 00030 DtSimTaskStatePtr taskState); 00031 00032 typedef struct DtTaskProcessorCallbackInfo 00033 { 00034 DtMessageCallbackFcn myFunction; 00035 void* myUserData; 00036 } DtTaskProcessorCallbackInfo; 00037 00049 #include "vrfobjcore/vrfobjcoreDefines.h" 00050 class DT_DLL_vrfobjcore DtTaskControllerComponent : public DtControllerComponent 00051 { 00052 00053 public: 00054 00060 DtTaskControllerComponent(const DtString& name, DtVrfObject* owner, 00061 DtSimManager* simManager, 00062 DtComponentDescriptor* compDesc = 0, 00063 DtReaderWriterRegistry* parentRegistry = 0); 00064 00066 virtual ~DtTaskControllerComponent(); 00067 00069 virtual DtString type() const = 0; 00070 00075 virtual void postTick(); 00076 00085 virtual bool beginProcessingTask(const DtTaskMessage& task, 00086 DtSimTaskStatePtr taskState); 00087 00090 virtual void taskNotify(const DtSimTask & task) {}; 00091 00093 00094 00095 virtual void setTasked(bool tasked); 00096 virtual bool tasked() const; 00098 00104 virtual bool showCurrentTaskInGui() const; 00105 00107 virtual void setRadio(DtSimBaseRadio * radio); 00108 00109 virtual void registerTaskMsgCallbacks(); 00110 00122 virtual void addTaskProcessorCallback(int taskType, DtTaskMessageCallbackFcn fcn, void* usr); 00123 00126 virtual void addTaskProcessorCallback(int taskType, DtMessageCallbackFcn fcn, void* usr); 00127 00128 00130 virtual void removeTaskProcessorCallback(int taskType, DtMessageCallbackFcn fcn, void* usr); 00131 00134 virtual void removeTaskProcessorCallback(int taskType, DtTaskMessageCallbackFcn fcn, void* usr); 00135 00139 static void deprecatedTaskProcessorCallbackAdapter(DtSimMessage * msg, void * usr, 00140 DtSimTaskStatePtr taskState); 00141 00143 virtual bool taskActive(int taskId) const = 0; 00144 00147 virtual bool clearTopLevelTasks() = 0; 00148 00151 virtual void clearConflictingTopLevelTasks(int conflictId) = 0; 00152 00154 virtual void clearTasksByType(int taskType) = 0; 00155 00157 virtual void clearTaskById(int taskId) = 0; 00158 00161 virtual std::list<DtTaskMessage*> currentTaskMessages() const = 0; 00162 00165 virtual DtTaskWithTaskStateListPtr topLevelTasks() const = 0; 00166 00168 virtual void enable(); 00169 00173 virtual void disable(); 00174 00175 protected: 00176 00177 00178 00179 protected: 00180 00183 typedef std::pair<DtTaskMessageCallbackFcn, void*> DtTaskCallbackMapPair; 00184 typedef std::map<int, DtTaskCallbackMapPair> DtTaskCallbackMap; 00185 DtTaskCallbackMap myTaskCallbackMap; 00186 00189 std::list<DtTaskProcessorCallbackInfo*> myTaskProcessorCallbackInfoList; 00190 00191 private: 00194 DtTaskControllerComponent(); 00195 00197 DtTaskControllerComponent(const DtTaskControllerComponent & orig); 00198 00200 const DtTaskControllerComponent & operator=(const DtTaskControllerComponent & 00201 orig); 00202 }; 00203 00204 #endif