VR-Forces 4.0.4 Class Documentation
include/vrfGuiCore/DtVrfGuiPluginManager.h
Go to the documentation of this file.
00001 /******************************************************************************
00002 ** Copyright (c) 2010 MAK Technologies, Inc.
00003 ** All rights reserved.
00004 ******************************************************************************/
00005 
00008 
00011 
00012 #pragma once
00013 
00014 #include <vrfGuiCore/vrfGuiCore.h>
00015 
00016 #include <vrvCore/DtPluginManager.h>
00017 #include <vrfutil/vrfPluginRecordManager.h>
00018 #include <vrvUtil/DtVirtualBaseClass.h>
00019 #include <vrvUtil/signalslib.h>
00020 
00021 #include <vrfmsgs/ifPluginData.h>
00022 
00023 namespace makVrv
00024 {
00025    class DtDe;
00026    class DtVrvApplicationConfiguration;
00027 }
00028 
00029 class DtSimMessage;
00030 class DtSimulationAddress;
00031 class DtIfPluginData;
00032 class DtDynamicLibrary;
00033 
00034 namespace makVrf 
00035 {
00036    class DtVrfBackendState;
00037 
00040 
00041    class DT_DLL_VRFGUICORE DtVrfGuiPluginManagerExt : public makVrv::DtPluginManager
00042    {
00043    public:
00044       DtVrfGuiPluginManagerExt(makVrv::DtDe&);
00045 
00046       virtual ~DtVrfGuiPluginManagerExt();
00047 
00050       virtual void initializePluginsInOrder();
00051 
00052       makVrv::DtLibraryLoader* libraryLoader()
00053       {
00054          return myLibraryLoader;
00055       }
00056 
00057    };
00058 
00059    class DT_DLL_VRFGUICORE DtVrfGuiPluginManager : public DtVrfPluginRecordManager,
00060       public makVrv::DtVirtualBaseClass
00061    {
00062    public:
00063       typedef std::vector<DtVrfMessagePluginInformation>   PluginInformationList;
00064       typedef std::map<std::string, PluginInformationList> PluginInformationMap;
00065 
00066    public:
00067       DtVrfGuiPluginManager(makVrv::DtDe&);
00068       virtual ~DtVrfGuiPluginManager();
00069 
00071       static DtVrfGuiPluginManager& instance(makVrv::DtDe& de);
00072 
00074       virtual void readPluginsFrom(makVrv::DtVrvApplicationConfiguration& config);
00075 
00076       virtual const std::vector<std::string>& additionalPluginsToLoad();
00077       virtual void setAdditionalPluginsToLoad(const std::vector<std::string>&);
00078 
00079       virtual bool loadDefaultPlugins();
00080       virtual void setLoadDefaultPlugins(bool);
00081 
00082       virtual void setPluginsDirectory(const std::string&);
00083       virtual const std::string& pluginsDirectory() const;
00084 
00085       virtual void addPluginRecord(const DtVrfPluginRecord&);
00086 
00088       virtual bool removePluginRecord(const std::string&);
00089 
00092       virtual bool renamePluginRecord(const std::string& curFileName, const std::string& newName);
00093 
00096       virtual bool removePlugin(const std::string& fileName, const std::string& application,
00097          const std::string& platform, const std::string& configuration, const std::string& transport);
00098 
00100       virtual bool addPlugin(const std::string& fileName, const std::string& application,
00101          const std::string& platform, const std::string& configuration, const std::string& transport);
00102 
00104       virtual void setLoadPlugin(const std::string& fileName, bool b);
00105 
00107       const PluginInformationMap& loadedPlugins() const;
00108 
00109       void setVrvPluginManager(makVrv::DtPluginManager* m)
00110       {
00111          myVrvPluginManager = m;
00112       }
00113 
00115       void setCheckPluginVersions(bool);
00116       bool checkPluginVersions() const;
00117 
00118    public:
00119       boost::signal<void (const DtVrfPluginRecord&)> signal_pluginRecordAdded;
00120       boost::signal<void (const DtVrfPluginRecord&)> signal_pluginRecordRemoved;
00121       boost::signal<void (const std::string&, const std::string&)> signal_pluginRecordRenamed;
00122       boost::signal<void (const std::string&, const std::string&,
00123          const std::string&, const std::string&, const std::string&)> signal_pluginRemoved;
00124       boost::signal<void (const std::string&, const std::string&,
00125          const std::string&, const std::string&, const std::string&)> signal_pluginAdded;
00126       boost::signal<void (const std::string&, bool)> signal_pluginLoadStateChanged;
00127 
00128       boost::signal<void (const std::string&, const PluginInformationList&)> signal_pluginsAdded;
00129       boost::signal<void (const std::string&, const PluginInformationList&)> signal_pluginsRemoved;
00130 
00131    protected:
00133       virtual void initializePlugins();
00134       virtual void initializeFrontEndPlugins();
00135       virtual void initializeBackEndPlugins();
00136 
00137       virtual void slot_backendDiscovered(const DtVrfBackendState&);
00138       virtual void slot_backendRemoved(const DtVrfBackendState&);
00139       virtual void slot_allBackendsAboutToBeRemoved();
00140 
00141       virtual void processPluginData(DtSimMessage*);
00142       virtual void removePendingRequest(const DtVrfBackendState&);
00143 
00144       virtual bool checkVersion(DtDynamicLibrary* lib, const std::string& appVer) const;
00145 
00147       virtual std::string pluginVersion() const;
00148 
00149    protected:
00150       std::vector<std::string>   myAdditionalPluginsToLoad;
00151 
00152       bool                       myLoadDefaultPlugins;
00153       bool                       myCheckPluginVersions;
00154       std::string                myPluginsDirectory;
00155       makVrv::DtDe&              myDe;
00156 
00157       std::vector<std::string>   myPendingPluginRequests;
00158 
00159       PluginInformationMap       myPlugins;
00160 
00161       makVrv::DtPluginManager*   myVrvPluginManager;
00162    };
00163 }

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)