6 #include <fc/variant_object.hpp>
21 struct object_id_type;
28 namespace debug_node {
29 using app::application;
32 class debug_node_plugin_impl;
47 const std::string& account_name)
66 virtual void plugin_initialize(
const boost::program_options::variables_map& options)
override;
68 boost::program_options::options_description& cfg)
override;
72 template <
typename Lambda>
78 auto it = _debug_updates.find(head_id);
79 if (it == _debug_updates.end())
80 it = _debug_updates.emplace(head_id, std::vector<std::function<
void(
chain::database&)>>()).first;
81 it->second.emplace_back(callback);
84 FC_ASSERT(head_block.valid());
94 uint32_t miss_blocks = 0,
97 const fc::time_point_sec& head_block_time,
98 bool generate_sparsely,
111 void on_changed_objects(
const std::vector<graphene::db::object_id_type>& ids);
112 void on_removed_objects(
const std::vector<const graphene::db::object*> objs);
115 void apply_debug_updates();
117 std::map<protocol::public_key_type, fc::ecc::private_key> _private_keys;
119 boost::signals2::scoped_connection _applied_block_conn;
application & app() const
chain::database & database()
tracks the blockchain state in an extensible manner
optional< signed_block > fetch_block_by_id(const block_id_type &id) const
bool push_block(const signed_block &b, uint32_t skip=skip_nothing)
block_id_type head_block_id() const
debug_node_plugin(application *app)
virtual void plugin_startup() override
Begin normal runtime operations.
uint32_t debug_generate_blocks_until(const std::string &debug_key, const fc::time_point_sec &head_block_time, bool generate_sparsely, uint32_t skip=scorum::chain::database::skip_nothing, private_key_storage *key_storage=nullptr)
void flush_json_object_stream()
virtual ~debug_node_plugin()
void set_json_object_stream(const std::string &filename)
void debug_update(Lambda &&callback, uint32_t skip=scorum::chain::database::skip_nothing)
uint32_t debug_generate_blocks(const std::string &debug_key, uint32_t count, uint32_t skip=scorum::chain::database::skip_nothing, uint32_t miss_blocks=0, private_key_storage *key_storage=nullptr)
virtual void plugin_set_program_options(boost::program_options::options_description &cli, boost::program_options::options_description &cfg) override
Fill in command line parameters used by the plugin.
virtual std::string plugin_name() const override
void load_debug_updates(const fc::variant_object &target)
virtual void plugin_initialize(const boost::program_options::variables_map &options) override
Perform early startup routines and register plugin indexes, callbacks, etc.
void save_debug_updates(fc::mutable_variant_object &target)
virtual void plugin_shutdown() override
Cleanly shut down the plugin.
virtual ~private_key_storage()
virtual void maybe_get_private_key(fc::optional< fc::ecc::private_key > &result, const scorum::chain::public_key_type &pubkey, const std::string &account_name)=0
scorum::protocol::chain_properties chain_properties
fc::ripemd160 block_id_type