mirror of
https://github.com/RetroShare/RetroShare.git
synced 2024-10-01 02:35:48 -04:00
improved plugin management to allow services to be used, and config pages to be added
git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@4960 b45a01b8-16f6-495d-af2f-9b41ad6348cc
This commit is contained in:
parent
fbce07eab0
commit
2c6a2b4ee7
@ -198,6 +198,7 @@ bool RsPluginManager::loadPlugin(const std::string& plugin_name)
|
||||
PluginInfo pf ;
|
||||
pf.plugin = NULL ;
|
||||
pf.file_name = plugin_name ;
|
||||
pf.info_string = "" ;
|
||||
std::cerr << " -> hashing." << std::endl;
|
||||
uint64_t size ;
|
||||
|
||||
@ -232,9 +233,10 @@ bool RsPluginManager::loadPlugin(const std::string& plugin_name)
|
||||
|
||||
if(handle == NULL)
|
||||
{
|
||||
std::cerr << " Cannot open plugin: " << dlerror() << std::endl ;
|
||||
const char *val = dlerror() ;
|
||||
std::cerr << " Cannot open plugin: " << val << std::endl ;
|
||||
pinfo.status = PLUGIN_STATUS_DLOPEN_ERROR ;
|
||||
pinfo.info_string = dlerror() ;
|
||||
pinfo.info_string = val ;
|
||||
return false ;
|
||||
}
|
||||
|
||||
@ -331,7 +333,13 @@ void RsPluginManager::addConfigurations(p3ConfigMgr *ConfigMgr)
|
||||
for(uint32_t i=0;i<_plugins.size();++i)
|
||||
if(_plugins[i].plugin != NULL && _plugins[i].plugin->configurationFileName().length() > 0)
|
||||
{
|
||||
if( _plugins[i].plugin->rs_cache_service() != NULL)
|
||||
ConfigMgr->addConfiguration(_plugins[i].plugin->configurationFileName(), _plugins[i].plugin->rs_cache_service());
|
||||
else if(_plugins[i].plugin->rs_pqi_service() != NULL)
|
||||
ConfigMgr->addConfiguration(_plugins[i].plugin->configurationFileName(), _plugins[i].plugin->rs_pqi_service());
|
||||
else
|
||||
continue ;
|
||||
|
||||
std::cerr << " Added configuration for plugin " << _plugins[i].plugin->getPluginName() << ", with file " << _plugins[i].plugin->configurationFileName() << std::endl;
|
||||
}
|
||||
}
|
||||
@ -401,3 +409,8 @@ RsCacheService::RsCacheService(uint16_t service_type,uint32_t config_type,uint32
|
||||
{
|
||||
}
|
||||
|
||||
RsPQIService::RsPQIService(uint16_t service_type,uint32_t config_type,uint32_t tick_delay_in_seconds, RsPluginHandler* pgHandler)
|
||||
: p3Service(service_type),p3Config(config_type)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -10,8 +10,9 @@ class p3ConfigMgr ;
|
||||
class p3ServiceServer ;
|
||||
class p3LinkMgr ;
|
||||
|
||||
struct PluginInfo
|
||||
class PluginInfo
|
||||
{
|
||||
public:
|
||||
RsPlugin *plugin ;
|
||||
std::string info_string ;
|
||||
std::string file_hash ;
|
||||
|
@ -1,17 +1,18 @@
|
||||
#pragma once
|
||||
|
||||
#include "services/p3service.h"
|
||||
#include "plugins/pluginmanager.h"
|
||||
|
||||
// The following class abstracts the construction of a peer-to-peer service. The user only has to
|
||||
// supply RS with a type ID. If the ID is already in use, RS will complain.
|
||||
//
|
||||
class RsPQIService: public p3Config
|
||||
class RsPQIService: public p3Service, public p3Config
|
||||
{
|
||||
public:
|
||||
RsPQIService(uint16_t type,uint32_t config_type,uint32_t tick_delay_in_seconds, RsPluginHandler* pgHandler) ;
|
||||
|
||||
uint32_t tickDelay() const { return _tick_delay_in_seconds ; }
|
||||
virtual void tick() {}
|
||||
virtual int tick() = 0 ;
|
||||
|
||||
// Functions from p3config
|
||||
//
|
||||
|
@ -46,7 +46,7 @@ class QApplication;
|
||||
class RsCacheService ;
|
||||
class ftServer ;
|
||||
class ConfigPage ;
|
||||
class pqiService ;
|
||||
class RsPQIService ;
|
||||
|
||||
// Used for the status of plugins.
|
||||
//
|
||||
@ -78,7 +78,7 @@ class RsPlugin
|
||||
{
|
||||
public:
|
||||
virtual RsCacheService *rs_cache_service() const { return NULL ; }
|
||||
virtual pqiService *rs_pqi_service() const { return NULL ; }
|
||||
virtual RsPQIService *rs_pqi_service() const { return NULL ; }
|
||||
virtual uint16_t rs_service_id() const { return 0 ; }
|
||||
|
||||
virtual MainPage *qt_page() const { return NULL ; }
|
||||
|
@ -127,7 +127,7 @@ RSettingsWin::initStackedWidget()
|
||||
RsPlugin *pl = rsPlugins->plugin(i) ;
|
||||
|
||||
if(pl->qt_config_page() != NULL)
|
||||
stackedWidget->addWidget(pl->qt_config_page()) ;
|
||||
addPage(pl->qt_config_page()) ;
|
||||
}
|
||||
|
||||
// make the first page the default.
|
||||
|
Loading…
Reference in New Issue
Block a user