30 #include <graphene/net/node.hpp>
33 #include <fc/rpc/api_connection.hpp>
34 #include <fc/rpc/websocket_api.hpp>
36 #include <boost/program_options.hpp>
38 #define SCORUMD_CONFIG_FILE_NAME "config.ini"
75 struct genesis_state_type;
83 class application_impl;
86 class abstract_plugin;
90 class network_broadcast_api;
96 void print_program_options(std::ostream& stream,
const boost::program_options::options_description& options);
105 void set_program_options(boost::program_options::options_description& command_line_options,
106 boost::program_options::options_description& configuration_file_options)
const;
107 void initialize(
const boost::program_options::variables_map& options);
124 auto plug = std::make_shared<PluginType>(
this);
131 std::shared_ptr<abstract_plugin>
get_plugin(
const std::string& name)
const;
133 template <
typename PluginType> std::shared_ptr<PluginType>
get_plugin(
const std::string& name)
const
135 std::shared_ptr<abstract_plugin> abs_plugin =
get_plugin(name);
136 std::shared_ptr<PluginType>
result = std::dynamic_pointer_cast<PluginType>(abs_plugin);
137 FC_ASSERT(
result != std::shared_ptr<PluginType>());
165 std::shared_ptr<Api> api = std::make_shared<Api>(ctx);
166 api->on_api_startup();
167 return std::make_shared<fc::api<Api>>(api);
184 std::shared_ptr<fc::rpc::websocket_api_connection>
_ws_apic;
188 const std::string print_config(
const boost::program_options::variables_map& vm);
190 std::shared_ptr<detail::application_impl> my;
192 boost::program_options::options_description _cli_options;
193 boost::program_options::options_description _cfg_options;
195 const std::shared_ptr<plugin> null_plugin;
197 bool _read_only =
false;
200 template <
class C,
typename... Args>
201 boost::signals2::scoped_connection
202 connect_signal(boost::signals2::signal<
void(Args...)>& sig, C& c, void (C::*f)(Args...))
204 std::weak_ptr<C> weak_c = c.shared_from_this();
205 return sig.connect([weak_c, f](Args... args) {
206 std::shared_ptr<C> shared_c = weak_c.lock();
209 ((*shared_c).*f)(args...);
213 fc::path
get_data_dir_path(
const boost::program_options::variables_map& options);
218 const boost::program_options::options_description& cfg_options);
std::vector< std::string > get_default_apis() const
void set_block_production(bool producing_blocks)
void enable_plugin(const std::string &name)
std::shared_ptr< chain::database > chain_database() const
std::shared_ptr< PluginType > get_plugin(const std::string &name) const
fc::optional< fc::api< network_broadcast_api > > _remote_net_api
void initialize(const boost::program_options::variables_map &options)
void register_api_factory(const std::string &name)
std::shared_ptr< PluginType > register_plugin()
fc::http::websocket_connection_ptr _ws_ptr
std::shared_ptr< abstract_plugin > get_plugin(const std::string &name) const
bool is_read_only() const
fc::optional< fc::api< login_api > > _remote_login
void set_program_options(boost::program_options::options_description &command_line_options, boost::program_options::options_description &configuration_file_options) const
graphene::net::node_ptr p2p_node()
void register_abstract_plugin(std::shared_ptr< abstract_plugin > plug)
fc::http::websocket_client _client
std::shared_ptr< fc::rpc::websocket_api_connection > _ws_apic
fc::api< network_broadcast_api > & get_write_node_net_api()
std::vector< std::string > get_default_plugins() const
fc::optional< api_access_info > get_api_access_info(const std::string &username) const
void register_api_factory(const std::string &name, std::function< fc::api_ptr(const api_context &)> factory)
fc::api_ptr create_api_by_name(const api_context &ctx)
void get_max_block_age(int32_t &result)
void set_api_access_info(const std::string &username, api_access_info &&permissions)
fc::optional< std::string > _remote_endpoint
void initialize_plugins(const boost::program_options::variables_map &options)
void print_program_options(std::ostream &stream, const boost::program_options::options_description &options)
boost::signals2::scoped_connection connect_signal(boost::signals2::signal< void(Args...)> &sig, C &c, void(C::*f)(Args...))
void print_application_version()
fc::path get_data_dir_path(const boost::program_options::variables_map &options)
void create_config_file_if_not_exist(const fc::path &config_ini_path, const boost::program_options::options_description &cfg_options)
fc::path get_config_file_path(const boost::program_options::variables_map &options)