![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /****************************************************************************** 00002 ** Copyright (c) 2009 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 ******************************************************************************/ 00005 /****************************************************************************** 00006 ** $RCSfile: DtVrfCurrentTaskManager.h,v $ $Revision: 1.1 $ $State: Exp $ 00007 ******************************************************************************/ 00008 00011 00013 00014 #pragma once 00015 00016 #include <vrfGuiCore/vrfGuiCore.h> 00017 00018 #include <vrvUtil/DtVirtualBaseClass.h> 00019 #include <vrvCore/DtStateView.h> 00020 #include <vrvCore/DtEntityState.h> 00021 00022 #include <vrftasks/simTask.h> 00023 00024 #include <boost/signal.hpp> 00025 #include <boost/function.hpp> 00026 00027 class DtSimTask; 00028 class DtVrfObjectMessage; 00029 00030 namespace makVrv 00031 { 00032 class DtDe; 00033 class DtSimObjectEntry; 00034 } 00035 00036 namespace makVrf 00037 { 00038 class DT_DLL_VRFGUICORE DtVrfCurrentTaskManager : public makVrv::DtVirtualBaseClass 00039 { 00040 public: 00041 00042 typedef std::vector<int> Conflicting; 00043 typedef DtBoost::shared_ptr<DtSimTask> DtSimTaskSharedPtr; 00044 typedef std::pair<DtSimTaskSharedPtr, Conflicting> TaskInformation; 00045 typedef std::vector<TaskInformation> EntityTaskInformation; 00046 00047 public: 00048 DtVrfCurrentTaskManager(makVrv::DtDe&); 00049 virtual ~DtVrfCurrentTaskManager(); 00050 00052 static DtVrfCurrentTaskManager& instance(makVrv::DtDe& de); 00053 00054 public: 00055 boost::signal<void (const std::string& entityName)> signal_currentTaskChanged; 00056 00057 virtual void subscribeForTaskInformation(const makVrv::DtUniqueID& simId); 00058 virtual void unsubscribeForTaskInformation(const makVrv::DtUniqueID& simId, bool all = false); 00059 00062 typedef boost::function<void (std::string, const EntityTaskInformation&)> DtRequestTaskCallbackFcn; 00063 00064 virtual void requestCurrentTasksFor(const makVrv::DtUniqueID& simId, DtRequestTaskCallbackFcn); 00065 00068 virtual const EntityTaskInformation* tasksFor(const makVrv::DtUniqueID& simId) const; 00069 00070 protected: 00071 virtual void slot_simObjectEntryAboutToBeRemoved(makVrv::DtSimObjectEntry& entry); 00072 virtual void processEntityCurrentTaskCallback(const DtVrfObjectMessage* msg); 00073 00074 virtual makVrv::DtUniqueID isMonitoring(const std::string& e) const; 00075 virtual makVrv::DtUniqueID isRequesting(const std::string& e) const; 00076 00077 protected: 00078 makVrv::DtDe& myDe; 00079 00080 typedef std::pair<EntityTaskInformation, int> EntityTasks; 00081 00082 typedef std::map<makVrv::DtUniqueID, EntityTasks> DtEntityTaskMap; 00083 DtEntityTaskMap myTasks; 00084 00085 typedef std::vector<DtRequestTaskCallbackFcn> DtRequestCallbackVector; 00086 typedef std::map<makVrv::DtUniqueID, DtRequestCallbackVector> DtRequestCallbackMap; 00087 00088 DtRequestCallbackMap myTaskRequestCallbacks; 00089 }; 00090 }