VR-Forces 4.0.4 Class Documentation
include/vrfGuiCore/DtVrfCurrentTaskManager.h
Go to the documentation of this file.
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 }

Document ID: Generated on Fri Jun 29 16:33:32 EDT 2012 from SVN revision 116588
Copyright © 2005-2012 VT MÄK Inc. All Rights Reserved (www.mak.com)