31 #include <boost/program_options.hpp>
33 #include <fc/io/json.hpp>
34 #include <fc/static_variant.hpp>
35 #include <fc/unique_ptr.hpp>
36 #include <fc/vector.hpp>
43 using fc::static_variant;
95 boost::program_options::options_description& config_file_options)
109 virtual void plugin_initialize(
const boost::program_options::variables_map& options)
override;
113 boost::program_options::options_description& config_file_options)
override;
141 return fc::json::from_string(s).as<T>();
144 #define DEFAULT_VALUE_VECTOR(value) default_value({ fc::json::to_string(value) }, fc::json::to_string(value))
145 #define LOAD_VALUE_SET(options, name, container, type) \
146 if (options.count(name)) \
148 const std::vector<std::string>& ops = options[name].as<std::vector<std::string>>(); \
149 std::transform(ops.begin(), ops.end(), std::inserter(container, container.end()), \
150 &scorum::app::dejsonify<type>); \
156 #define SCORUM_DEFINE_PLUGIN(plugin_name, plugin_class) \
159 std::shared_ptr<scorum::app::abstract_plugin> create_##plugin_name##_plugin(app::application* app) \
161 return std::make_shared<plugin_class>(app); \
166 #define DEFINE_PLUGIN_EVALUATOR(PLUGIN, OPERATION, X) \
167 class X##_evaluator : public scorum::chain::evaluator_impl<scorum::chain::database, X##_evaluator, OPERATION> \
170 typedef X##_operation operation_type; \
172 X##_evaluator(database& db, PLUGIN* plugin) \
173 : scorum::chain::evaluator_impl<scorum::chain::database, X##_evaluator, OPERATION>(db) \
178 void do_apply(const X##_operation& o); \
virtual void plugin_startup()=0
Begin normal runtime operations.
virtual void plugin_initialize(const boost::program_options::variables_map &options)=0
Perform early startup routines and register plugin indexes, callbacks, etc.
virtual void plugin_set_program_options(boost::program_options::options_description &command_line_options, boost::program_options::options_description &config_file_options)=0
Fill in command line parameters used by the plugin.
virtual void plugin_shutdown()=0
Cleanly shut down the plugin.
virtual ~abstract_plugin()
virtual std::string plugin_name() const =0
std::shared_ptr< chain::database > chain_database() const
graphene::net::node_ptr p2p_node()
application & app() const
virtual void plugin_initialize(const boost::program_options::variables_map &options) override
Perform early startup routines and register plugin indexes, callbacks, etc.
virtual void plugin_startup() override
Begin normal runtime operations.
virtual ~plugin() override
chain::database & database()
virtual std::string plugin_name() const override
virtual void plugin_shutdown() override
Cleanly shut down the plugin.
virtual void plugin_set_program_options(boost::program_options::options_description &command_line_options, boost::program_options::options_description &config_file_options) override
Fill in command line parameters used by the plugin.
graphene::net::node & p2p_node()
tracks the blockchain state in an extensible manner
T dejsonify(const std::string &s)