30 #include <boost/program_options.hpp> 33 namespace detail {
class application_impl; }
36 class abstract_plugin;
41 bool enable_subscribe_to_all =
false;
43 bool has_api_helper_indexes_plugin =
false;
44 bool has_market_history_plugin =
false;
46 uint64_t api_limit_get_account_history_operations = 100;
47 uint64_t api_limit_get_account_history = 100;
48 uint64_t api_limit_get_grouped_limit_orders = 101;
49 uint64_t api_limit_get_relative_account_history = 100;
50 uint64_t api_limit_get_account_history_by_operations = 100;
51 uint64_t api_limit_get_asset_holders = 100;
52 uint64_t api_limit_get_key_references = 100;
53 uint64_t api_limit_get_htlc_by = 100;
54 uint64_t api_limit_get_full_accounts = 50;
55 uint64_t api_limit_get_full_accounts_lists = 500;
56 uint64_t api_limit_get_top_voters = 200;
57 uint64_t api_limit_get_call_orders = 300;
58 uint64_t api_limit_get_settle_orders = 300;
59 uint64_t api_limit_get_assets = 101;
60 uint64_t api_limit_get_limit_orders = 300;
61 uint64_t api_limit_get_limit_orders_by_account = 101;
62 uint64_t api_limit_get_order_book = 50;
63 uint64_t api_limit_list_htlcs = 100;
64 uint64_t api_limit_lookup_accounts = 1000;
65 uint64_t api_limit_lookup_witness_accounts = 1000;
66 uint64_t api_limit_lookup_committee_member_accounts = 1000;
67 uint64_t api_limit_lookup_vote_ids = 1000;
68 uint64_t api_limit_get_account_limit_orders = 101;
69 uint64_t api_limit_get_collateral_bids = 100;
70 uint64_t api_limit_get_top_markets = 100;
71 uint64_t api_limit_get_trade_history = 100;
72 uint64_t api_limit_get_trade_history_by_sequence = 100;
73 uint64_t api_limit_get_withdraw_permissions_by_giver = 101;
74 uint64_t api_limit_get_withdraw_permissions_by_recipient = 101;
75 uint64_t api_limit_get_tickets = 101;
76 uint64_t api_limit_get_liquidity_pools = 101;
77 uint64_t api_limit_get_liquidity_pool_history = 101;
86 void set_program_options(boost::program_options::options_description& command_line_options,
87 boost::program_options::options_description& configuration_file_options)
const;
88 void initialize(
const fc::path& data_dir,
const boost::program_options::variables_map& options);
89 void initialize_plugins(
const boost::program_options::variables_map& options);
92 void startup_plugins();
93 void shutdown_plugins();
95 template<
typename PluginType>
97 auto plug = std::make_shared<PluginType>();
98 plug->plugin_set_app(
this);
100 string cli_plugin_desc = plug->plugin_name() +
" plugin. " + plug->plugin_description() +
"\nOptions";
101 boost::program_options::options_description plugin_cli_options( cli_plugin_desc ), plugin_cfg_options;
102 plug->plugin_set_program_options(plugin_cli_options, plugin_cfg_options);
104 if( !plugin_cli_options.options().empty() )
105 _cli_options.add(plugin_cli_options);
107 if( !plugin_cfg_options.options().empty() )
109 std::string header_name =
"plugin-cfg-header-" + plug->plugin_name();
110 std::string header_desc = plug->plugin_name() +
" plugin options";
111 _cfg_options.add_options()(header_name.c_str(), header_desc.c_str());
112 _cfg_options.add(plugin_cfg_options);
115 add_available_plugin( plug );
118 enable_plugin(plug->plugin_name());
122 std::shared_ptr<abstract_plugin> get_plugin(
const string& name )
const;
124 template<
typename PluginType>
125 std::shared_ptr<PluginType>
get_plugin(
const string& name )
const 127 std::shared_ptr<abstract_plugin> abs_plugin = get_plugin( name );
128 std::shared_ptr<PluginType> result = std::dynamic_pointer_cast<PluginType>( abs_plugin );
129 FC_ASSERT( result != std::shared_ptr<PluginType>(),
"Unable to load plugin '${p}'", (
"p",name) );
134 std::shared_ptr<chain::database> chain_database()
const;
135 void set_api_limit();
136 void set_block_production(
bool producing_blocks);
138 void set_api_access_info(
const string& username,
api_access_info&& permissions);
140 bool is_finished_syncing()
const;
146 void enable_plugin(
const string& name );
148 bool is_plugin_enabled(
const string& name)
const;
153 void add_available_plugin( std::shared_ptr<abstract_plugin> p );
154 std::shared_ptr<detail::application_impl> my;
156 boost::program_options::options_description _cli_options;
157 boost::program_options::options_description _cfg_options;
std::shared_ptr< fc::thread > elasticsearch_thread
boost::signals2::signal< void()> syncing_finished
Emitted when syncing finishes (is_finished_syncing will return true)
std::shared_ptr< node > node_ptr
std::shared_ptr< PluginType > register_plugin(bool auto_load=false)
provides stack-based nullable value similar to boost::optional
#define FC_ASSERT(TEST,...)
Checks a condition and throws an assert_exception if the test is FALSE.
std::shared_ptr< PluginType > get_plugin(const string &name) const
wraps boost::filesystem::path to provide platform independent path manipulation.