VR-Forces 4.0.4 Class Documentation
include/vrfGuiCore/DtVrfSimBackEndManager.h
Go to the documentation of this file.
00001 /*******************************************************************************
00002 ** Copyright (c) 2009 MAK Technologies, Inc.
00003 ** All rights reserved.
00004 *******************************************************************************/
00005 /*******************************************************************************
00006 ** $RCSfile: DtVrfSimBackEndManager.h,v $ $Revision: 1.2 $ $State: Exp $
00007 *******************************************************************************/
00008 
00011 
00013 
00014 #pragma once
00015 
00016 #include <vrfGuiCore/vrfGuiCore.h>
00017 #include <vrfGuiCore/DtVrfBackendState.h>
00018 #include <vrfGuiCore/DtQueuedManager.h>
00019 
00020 #include <vrvCore/DtSimData.h>
00021 #include <vrvCore/DtDe.h>
00022 
00023 #include <boost/function.hpp>
00024 #include <boost/signal.hpp>
00025 
00026 class DtBackend;
00027 class DtSimulationAddress;
00028 class DtSimMessage;
00029 class DtIfLoadComplete;
00030 class DtIfSaveComplete;
00031 
00032 namespace makVrv
00033 {
00034    class DtBaseSimulation;
00035 }
00036 
00038 const int DtSessionChangedTerrain   = 0x00000001;
00039 const int DtSessionChangedScenario  = 0x00000002;
00040 const int DtSessionChangedNumberBEs = 0x00000004;
00041 const int DtSessionScenarioJustLoaded = 0x00000008;
00042 
00043 namespace makVrf
00044 {
00045    class DtVrfBackEndState;
00046 
00052    class DT_DLL_VRFGUICORE DtVrfSimBackendManager : public DtQueuedManager
00053    {
00054    public:
00055       typedef std::map<std::string, DtVrfBackendState*> DtVrfSimBackendStates;
00056 
00057    public:
00058       DtVrfSimBackendManager(makVrv::DtDe&);
00059       virtual ~DtVrfSimBackendManager();
00060 
00062       static DtVrfSimBackendManager& instance(makVrv::DtDe& de);
00063 
00064    public:
00066       virtual bool backEndsPresent() const;
00067 
00069       virtual bool anyBackendsLoaded() const;
00070 
00072       virtual bool allBackendsLoaded() const;
00073 
00075       virtual bool backendLoaded(const DtSimulationAddress&) const;
00076 
00078       virtual bool backendSaving(const DtSimulationAddress&) const;
00079 
00081       virtual bool anyBackendsPlaying() const;
00082 
00084       virtual bool anyBackendsInControlState(int state) const;
00085 
00087       virtual bool allBackendsCanSimulate() const;
00088 
00090       virtual bool backendCanSimulate(const DtSimulationAddress&) const;
00091 
00093       virtual void duplicateBackendDiscovered(const DtSimulationAddress&);
00094 
00100 
00101       virtual void removeAllBackends();
00102       virtual void addBackend(const DtBackend*);
00103       virtual void backendRemoved(const DtSimulationAddress&);
00104       virtual void backendUpdated(const DtSimulationAddress&, const DtBackend*);
00106 
00107       DtVrfBackendState* stateFor(const DtSimulationAddress&) const;
00108 
00109       const DtSimulationAddress& selectedBackend() const
00110       {
00111          return mySelectedBackend;
00112       }
00113 
00114       void setSelectedBackend(const DtSimulationAddress&);
00115 
00116       virtual int numberOfBackends() const;
00117 
00119       virtual void clearSelectedBackend();
00120 
00122       virtual double simTime() const;
00123 
00125       virtual double simStartSimTime() const;
00126 
00127       const DtVrfSimBackendStates& backendStates() const
00128       {
00129          return myBackendStates;
00130       }
00131 
00132    public:
00134       virtual void signalWhenAllBackendsClosed();
00135 
00137       virtual void signalIfAllBackendsClosed();
00138       boost::signal<void ()> signal_allBackendsClosed;
00139 
00142       virtual void signalWhenAllBackendsLoaded();
00143 
00146       virtual void signalIfAllBackendsLoaded();
00147       boost::signal<void ()> signal_allBackendsLoaded;
00148 
00150       virtual void signalWhenAllBackendsSaved();
00151 
00153       virtual void signalIfAllBackendsSaved();
00154       boost::signal<void ()> signal_allBackendsSaved;
00155 
00156       const std::string& sessionScenario() const
00157       {
00158          return mySessionScenarioName;
00159       }
00160 
00161       const std::string& sessionTerrain() const
00162       {
00163          return mySessionTerrainName;
00164       }
00165 
00166    public:
00167       boost::signal<void (const DtVrfBackendState&)> signal_frameRatesUpdated;
00168       boost::signal<void (const DtVrfBackendState&)> signal_backendDiscovered;
00169       boost::signal<void (const DtVrfBackendState&)> signal_backendRemoved;
00170       boost::signal<void (const DtVrfBackendState&, int)> signal_backendUpdated;
00171       boost::signal<void (int)> signal_sessionUpdated;
00172       boost::signal<void (const DtVrfBackendState&)> signal_duplicateSimulationAddress;
00173       boost::signal<void (const DtSimulationAddress& old, const DtSimulationAddress& newaddr)> signal_selectedBackendChanged;
00174       boost::signal<void ()> signal_allBackendsAboutToBeRemoved;
00175 
00176    protected:
00177       virtual void slot_frameRatesUpdated(const DtVrfBackendState&);
00178       virtual void simulationBackendRemoved(DtVrfBackendState*);
00179       virtual void simulationBackendDiscovered(DtVrfBackendState*);
00180       virtual void simulationBackendUpdated(DtSimulationAddress, int);
00181       virtual void duplicateSimulationBackendDiscovered(DtSimulationAddress);
00182 
00183       virtual void processLoadCompleteCallback(DtSimMessage*);
00184       virtual void processSaveCompleteCallback(DtSimMessage*);
00185 
00187       virtual void backendSaved(const std::string&);
00188 
00189       virtual void setBackendSaving(const DtSimulationAddress&, bool b);
00190 
00192       virtual void updateSessionInformation(int sessionFlags = 0);
00193 
00194    protected:
00195       makVrv::DtBaseSimulation*   mySimulation;
00196       DtVrfSimBackendStates      myBackendStates;
00197       DtSimulationAddress        mySelectedBackend;
00198       bool                       mySignalWhenAllBackendsClosed;
00199       bool                       mySignalWhenAllBackendsLoaded;
00200       bool                       mySignalWhenAllBackendsSaved;
00201       std::map<std::string, char> myBackendsWaitingForSave;
00202       std::map<std::string, bool> myAlreadyDuplicateWarned;
00203       std::map<std::string, bool> myNeedToLoad;
00204       std::vector<std::string>   myNeedToSave;
00205 
00206       std::string                mySessionTerrainName;
00207       std::string                mySessionScenarioName;
00208 
00209       std::map<std::string, bool> myJustLoadedMap;
00210    };
00211 }

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)