mirror of
https://github.com/RetroShare/RetroShare.git
synced 2025-05-02 06:06:10 -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
5 changed files with 29 additions and 14 deletions
|
@ -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)
|
||||
{
|
||||
ConfigMgr->addConfiguration(_plugins[i].plugin->configurationFileName(), _plugins[i].plugin->rs_cache_service());
|
||||
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,13 +10,14 @@ class p3ConfigMgr ;
|
|||
class p3ServiceServer ;
|
||||
class p3LinkMgr ;
|
||||
|
||||
struct PluginInfo
|
||||
class PluginInfo
|
||||
{
|
||||
RsPlugin *plugin ;
|
||||
std::string info_string ;
|
||||
std::string file_hash ;
|
||||
std::string file_name ;
|
||||
uint32_t status ;
|
||||
public:
|
||||
RsPlugin *plugin ;
|
||||
std::string info_string ;
|
||||
std::string file_hash ;
|
||||
std::string file_name ;
|
||||
uint32_t status ;
|
||||
};
|
||||
|
||||
class RsPluginManager: public RsPluginHandler, public p3Config
|
||||
|
|
|
@ -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
|
||||
//
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue