Plugin description added, SON plugin params example

This commit is contained in:
obucinac 2019-10-08 20:41:57 +02:00 committed by GitHub
parent 940a620ca2
commit e90735a162
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 36 additions and 7 deletions

View file

@ -135,7 +135,7 @@ else( WIN32 ) # Apple AND Linux
endif( APPLE )
if( "${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" )
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-builtin-memcmp -Wno-class-memaccess -Wno-parentheses -Wno-terminate -Wno-invalid-offsetof" )
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-builtin-memcmp -Wno-parentheses -Wno-invalid-offsetof" )
elseif( "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang" )
if( CMAKE_CXX_COMPILER_VERSION VERSION_EQUAL 4.0.0 OR CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 4.0.0 )
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-invalid-partial-specialization" )

View file

@ -56,12 +56,19 @@ namespace graphene { namespace app {
auto plug = std::make_shared<PluginType>();
plug->plugin_set_app(this);
boost::program_options::options_description plugin_cli_options("Options for plugin " + plug->plugin_name()), plugin_cfg_options;
string cli_plugin_desc = plug->plugin_name() + " plugin. " + plug->plugin_description() + "\nOptions";
boost::program_options::options_description plugin_cli_options( cli_plugin_desc ), plugin_cfg_options;
plug->plugin_set_program_options(plugin_cli_options, plugin_cfg_options);
if( !plugin_cli_options.options().empty() )
_cli_options.add(plugin_cli_options);
if( !plugin_cfg_options.options().empty() )
{
std::string header_name = "plugin-cfg-header-" + plug->plugin_name();
std::string header_desc = plug->plugin_name() + " plugin options";
_cfg_options.add_options()(header_name.c_str(), header_desc.c_str());
_cfg_options.add(plugin_cfg_options);
}
add_available_plugin( plug );
return plug;

View file

@ -35,6 +35,7 @@ class abstract_plugin
public:
virtual ~abstract_plugin(){}
virtual std::string plugin_name()const = 0;
virtual std::string plugin_description()const = 0;
/**
* @brief Perform early startup routines and register plugin indexes, callbacks, etc.
@ -100,6 +101,7 @@ class plugin : public abstract_plugin
virtual ~plugin() override;
virtual std::string plugin_name()const override;
virtual std::string plugin_description()const override;
virtual void plugin_initialize( const boost::program_options::variables_map& options ) override;
virtual void plugin_startup() override;
virtual void plugin_shutdown() override;

View file

@ -43,6 +43,11 @@ std::string plugin::plugin_name()const
return "<unknown plugin>";
}
std::string plugin::plugin_description()const
{
return "<no description>";
}
void plugin::plugin_initialize( const boost::program_options::variables_map& options )
{
return;

View file

@ -15,6 +15,9 @@ class peerplays_sidechain_plugin_impl
virtual ~peerplays_sidechain_plugin_impl();
peerplays_sidechain_plugin& _self;
uint32_t parameter;
uint32_t optional_parameter;
};
peerplays_sidechain_plugin_impl::~peerplays_sidechain_plugin_impl()
@ -40,15 +43,27 @@ std::string peerplays_sidechain_plugin::plugin_name()const
}
void peerplays_sidechain_plugin::plugin_set_program_options(
boost::program_options::options_description& /*cli*/,
boost::program_options::options_description& /*cfg*/
boost::program_options::options_description& cli,
boost::program_options::options_description& cfg
)
{
cli.add_options()
("parameter", boost::program_options::value<uint32_t>(), "Parameter")
("optional-parameter", boost::program_options::value<uint32_t>(), "Optional parameter")
;
cfg.add(cli);
}
void peerplays_sidechain_plugin::plugin_initialize(const boost::program_options::variables_map& /*options*/)
void peerplays_sidechain_plugin::plugin_initialize(const boost::program_options::variables_map& options)
{
ilog("peerplays sidechain plugin: plugin_initialize()");
if (options.count("parameter")) {
my->parameter = options["optional-parameter"].as<uint32_t>();
}
if (options.count("optional-parameter")) {
my->optional_parameter = options["optional-parameter"].as<uint32_t>();
}
}
void peerplays_sidechain_plugin::plugin_startup()

View file

@ -40,7 +40,6 @@
#include <fc/interprocess/signals.hpp>
#include <boost/filesystem.hpp>
#include <boost/property_tree/ptree.hpp>
#include <boost/container/flat_set.hpp>
#include <boost/algorithm/string.hpp>
@ -149,10 +148,11 @@ int main(int argc, char** argv) {
std::for_each(plugins.begin(), plugins.end(), [node](const std::string& plug) mutable {
if (!plug.empty()) {
node->enable_plugin(plug);
}
}
});
bpo::notify(options);
node->initialize(data_dir, options);
node->initialize_plugins( options );