Scorum
block_info_plugin.cpp
Go to the documentation of this file.
1 
5 
9 
10 #include <string>
11 
12 namespace scorum {
13 namespace plugin {
14 namespace block_info {
15 
17  : plugin(app)
18 {
19 }
21 {
22 }
23 
24 std::string block_info_plugin::plugin_name() const
25 {
26  return "block_info";
27 }
28 
29 void block_info_plugin::plugin_initialize(const boost::program_options::variables_map& options)
30 {
31  chain::database& db = database();
32 
33  _applied_block_conn = db.applied_block.connect([this](const chain::signed_block& b) { on_applied_block(b); });
34 }
35 
37 {
38  app().register_api_factory<block_info_api>("block_info_api");
39 }
40 
42 {
43 }
44 
46 {
47  uint32_t block_num = b.block_num();
48  const chain::database& db = database();
49 
50  while (block_num >= _block_info.size())
51  _block_info.emplace_back();
52 
53  block_info& info = _block_info[block_num];
55 
56  info.block_id = b.id();
57  info.block_size = fc::raw::pack_size(b);
58  info.aslot = dgpo.current_aslot;
59  info.last_irreversible_block_num = dgpo.last_irreversible_block_num;
60  return;
61 }
62 }
63 }
64 } // scorum::plugin::block_info
65 
void register_api_factory(const std::string &name, std::function< fc::api_ptr(const api_context &)> factory)
application & app() const
Definition: plugin.hpp:119
chain::database & database()
Definition: plugin.hpp:115
tracks the blockchain state in an extensible manner
Definition: database.hpp:52
fc::signal< void(const signed_block &)> applied_block
Definition: database.hpp:221
uint32_t last_irreversible_block_num
last irreversible block num
virtual void plugin_shutdown() override
Cleanly shut down the plugin.
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 std::string plugin_name() const override
void on_applied_block(const chain::signed_block &b)
boost::signals2::scoped_connection _applied_block_conn
Definition: asset.cpp:15
#define SCORUM_DEFINE_PLUGIN(plugin_name, plugin_class)
Definition: plugin.hpp:156
block_id_type id() const
Definition: block.cpp:19