Changeset 5909 for branches/newapi

Show
Ignore:
Timestamp:
12/02/07 20:06:43 (12 months ago)
Author:
erijo
Message:

Made PluginManager? a singleton.

Location:
branches/newapi/licq/src
Files:
9 modified

Legend:

Unmodified
Added
Removed
  • branches/newapi/licq/src/CMakeLists.txt

    r5820 r5909  
    22  daemon.cpp 
    33  main.cpp 
     4  static.cpp 
    45 
    56#   backgroundcodes.c 
  • branches/newapi/licq/src/daemon.cpp

    r5897 r5909  
    2323#include "licq/exception/unixexception.h" 
    2424#include "licq/version.h" 
    25 #include "plugin/plugincacheimpl.h" 
    26 #include "plugin/pluginloaderimpl.h" 
    27 #include "plugin/pluginmanagerimpl.h" 
     25#include "plugin/plugincache.h" 
     26#include "plugin/pluginmanager.h" 
    2827#include "util/streamlogsink.h" 
    2928#include "util/support.h" 
     
    9190  : myLog(*Log::getThreadLog()) 
    9291{ 
    93   myPluginLoader = new PluginLoaderImpl(); 
    94   myPluginCache = new PluginCacheImpl(myLog, *myPluginLoader); 
    95   myPluginManager = new PluginManagerImpl(*myPluginCache); 
     92  // Empty 
    9693} 
    9794 
    9895LicqDaemon::Daemon::~Daemon() 
    9996{ 
    100   delete myPluginManager; 
    101   delete myPluginCache; 
    102   delete myPluginLoader; 
     97  // Empty 
    10398} 
    10499 
     
    204199  std::vector< boost::shared_ptr<const Licq::Plugin::Information> >* info) 
    205200{ 
    206   myPluginManager->getPluginInformation(info); 
     201  PluginManager::getInstance()->getPluginInformation(info); 
    207202} 
    208203 
     
    241236void LicqDaemon::Daemon::setupDefaultPluginPaths(bool reload) 
    242237{ 
    243   myPluginCache->addSearchPath(myBaseDir + ".plugins/"); 
     238  PluginCache* cache = PluginManager::getInstance()->getPluginCache(); 
     239  cache->addSearchPath(myBaseDir + ".plugins/"); 
    244240 
    245241  if (reload) 
    246     myPluginCache->reload(); 
     242    cache->reload(); 
    247243} 
    248244 
     
    251247  setupDefaultPluginPaths(false); 
    252248 
     249  PluginCache* cache = PluginManager::getInstance()->getPluginCache(); 
    253250  for (std::vector<std::string>::const_iterator it = paths.begin(); 
    254251       it != paths.end(); ++it) 
    255252  { 
    256     myPluginCache->addSearchPath(*it); 
    257   } 
    258  
    259   myPluginCache->reload(); 
     253    cache->addSearchPath(*it); 
     254  } 
     255 
     256  cache->reload(); 
    260257} 
    261258 
    262259void LicqDaemon::Daemon::printAvailablePlugins(std::ostream& os) const 
    263260{ 
    264   const size_t size = myPluginCache->getSize(); 
     261  PluginCache* cache = PluginManager::getInstance()->getPluginCache(); 
     262 
     263  const size_t size = cache->getSize(); 
    265264  if (size == 0) 
    266265  { 
    267     os << "No plugins found.\n"; 
     266    os << tr("No plugins found.") << "\n"; 
    268267    return; 
    269268  } 
     
    272271  { 
    273272    boost::shared_ptr<const Licq::Plugin::Information> info = 
    274         myPluginCache->getInformation(i); 
     273        cache->getInformation(i); 
    275274 
    276275    if (i != 0) 
  • branches/newapi/licq/src/daemon.h

    r5897 r5909  
    5252 
    5353private: 
    54   Log& myLog; 
    55  
    56   class PluginLoader* myPluginLoader; 
    57   class PluginCache* myPluginCache; 
    58   class PluginManager* myPluginManager; 
     54  Licq::Log& myLog; 
    5955 
    6056  std::string myBaseDir; 
  • branches/newapi/licq/src/plugin/plugincache.h

    r5608 r5909  
    3737{ 
    3838public: 
    39   virtual ~PluginCache() {} 
    40  
    4139  virtual bool addSearchPath(const std::string& path) = 0; 
    4240  virtual void reload() = 0; 
     
    5048  virtual boost::shared_ptr<const Licq::Plugin::Information> 
    5149      getInformation(size_t index) = 0; 
     50 
     51protected: 
     52  virtual ~PluginCache() { /* Empty */ } 
    5253}; 
    5354 
  • branches/newapi/licq/src/plugin/plugincacheimpl.cpp

    r5807 r5909  
    2525#include "plugin/pluginlibrary.h" 
    2626#include "plugin/pluginloader.h" 
     27#include "util/log.h" 
    2728#include "util/support.h" 
    2829#include "util/tr.h" 
     
    102103} 
    103104 
    104 LicqDaemon::PluginCacheImpl::PluginCacheImpl(Licq::Log& log, 
    105                                              PluginLoader& loader, 
     105LicqDaemon::PluginCacheImpl::PluginCacheImpl(PluginLoader& loader, 
    106106                                             bool testMode) 
    107   : myLog(log), myLoader(loader), myInTestMode(testMode) 
     107  : myLog(*Log::getThreadLog()), 
     108    myLoader(loader), 
     109    myInTestMode(testMode) 
    108110{ 
    109111  // Empty 
     
    225227    catch (const bfs::filesystem_error&) 
    226228    { 
    227     // Empty 
     229      // Empty 
    228230    } 
    229231  } 
  • branches/newapi/licq/src/plugin/plugincacheimpl.h

    r5797 r5909  
    2121#define LICQDAEMON_PLUGINCACHEIMPL_H 
    2222 
    23 #include "licq/interface/log.h" 
    2423#include "plugin/plugincache.h" 
    2524 
     
    4847   * @param[in] loader The PluginLoader to use to load plugins. 
    4948   */ 
    50   PluginCacheImpl(Licq::Log& log, PluginLoader& loader, bool testMode = false); 
     49  PluginCacheImpl(PluginLoader& loader, bool testMode = false); 
    5150 
    5251  /** 
     
    145144  void clearCache(); 
    146145 
    147   Licq::Log& myLog; 
     146  class Licq::Log& myLog; 
    148147  PluginLoader& myLoader; 
    149148  const bool myInTestMode; 
  • branches/newapi/licq/src/plugin/pluginmanager.h

    r5354 r5909  
    2323#include "licq/interface/plugin.h" 
    2424 
     25#include <boost/noncopyable.hpp> 
    2526#include <boost/shared_ptr.hpp> 
    2627#include <vector> 
     
    3435{ 
    3536 
     37class PluginCache; 
     38 
    3639/** 
    3740 * An abstract interface to ease unit testing. Please refer to 
    3841 * PluginManagerImpl for the real documentation. 
    3942 */ 
    40 class PluginManager 
     43class PluginManager : private boost::noncopyable 
    4144{ 
    4245public: 
    43   virtual ~PluginManager() {} 
     46  /** 
     47   * @returns The PluginManager singleton. 
     48   */ 
     49  static PluginManager* getInstance(); 
    4450 
    4551  virtual void getPluginInformation( 
     
    5056             Licq::LogSink& sink, 
    5157             int argc, char** argv) = 0; 
     58 
     59  virtual PluginCache* getPluginCache() const = 0; 
     60 
     61protected: 
     62  virtual ~PluginManager() { /* Empty */ } 
    5263}; 
    5364 
  • branches/newapi/licq/src/plugin/pluginmanagerimpl.h

    r5354 r5909  
    2828{ 
    2929 
    30 class PluginCache; 
    3130class PluginInstance; 
    3231 
     
    4847                              int argc, char** argv); 
    4948 
     49  /** 
     50   * @returns The plugin cache used. 
     51   */ 
     52  PluginCache* getPluginCache() const; 
     53 
    5054private: 
    5155  PluginCache& myCache; 
     
    5862} // namespace LicqDaemon 
    5963 
     64inline LicqDaemon::PluginCache* 
     65LicqDaemon::PluginManagerImpl::getPluginCache() const 
     66{ 
     67  return &myCache; 
     68} 
     69 
    6070#endif 
  • branches/newapi/licq/src/plugin/test/plugincachetest.cpp

    r5808 r5909  
    2525#include "plugin/pluginlibrary.h" 
    2626#include "plugin/pluginloader.h" 
    27 #include "test/log.h" 
    2827 
    2928#include <boost/filesystem/operations.hpp> 
     
    125124struct PluginCacheFixture 
    126125{ 
    127   PluginCacheFixture() : myCache(myLog, myLoader, true) {} 
    128   Log myLog; 
     126  PluginCacheFixture() : myCache(myLoader, true) {} 
    129127  MockPluginLoader myLoader; 
    130128  LicqDaemon::PluginCacheImpl myCache;