From 6d706ebffd28df1c3fbaab71041aad9a42cf989a Mon Sep 17 00:00:00 2001 From: evoskuil Date: Thu, 15 Feb 2024 21:01:57 -0500 Subject: [PATCH] Update chaser variant passing. --- include/bitcoin/node/chasers/chaser.hpp | 25 +++++++++++-------- include/bitcoin/node/chasers/chaser_check.hpp | 9 ++++--- src/chasers/chaser_check.cpp | 13 +++++++--- src/chasers/chaser_header.cpp | 3 --- 4 files changed, 30 insertions(+), 20 deletions(-) diff --git a/include/bitcoin/node/chasers/chaser.hpp b/include/bitcoin/node/chasers/chaser.hpp index df294e0e..a89ea36b 100644 --- a/include/bitcoin/node/chasers/chaser.hpp +++ b/include/bitcoin/node/chasers/chaser.hpp @@ -42,30 +42,30 @@ class BCN_API chaser public: enum class chase { - /// Initialize chaser state (no data). + /// Initialize chaser state ({}). start, - /// A new strong branch exists (strong header link). + /// A new strong branch exists (strong height_t). /// Issued by 'header' and handled by 'check'. header, - /// A block has been downloaded, checked and stored (header link). + /// A block has been downloaded, checked and stored (header_t). /// Issued by 'check' and handled by 'connect'. checked, - /// A branch has been connected (header link). + /// A branch has been connected (header_t|height_t). /// Issued by 'connect' and handled by 'confirm'. connected, - /// A branch has been confirmed (top header link). + /// A branch has been confirmed (fork header_t|height_t). /// Issued by 'confirm' and handled by 'transaction'. confirmed, - /// A new transaction has been added to the pool (tx link). + /// A new transaction has been added to the pool (transaction_t). /// Issued by 'transaction' and handled by 'candidate'. transaction, - /// A new candidate block has been created (data?). + /// A new candidate block has been created (?). /// Issued by 'candidate' and handled by miners. candidate, @@ -73,12 +73,17 @@ class BCN_API chaser stop }; - typedef database::store store; - typedef database::query query; + using height_t = database::height_link::integer; + using header_t = database::header_link::integer; + using transaction_t = database::tx_link::integer; + using flags_t = database::context::flag::integer; - typedef std::variant link; + typedef std::variant link; typedef network::subscriber event_subscriber; typedef event_subscriber::handler event_handler; + + typedef database::store store; + typedef database::query query; DELETE_COPY_MOVE(chaser); // TODO: public method to check/store a block. diff --git a/include/bitcoin/node/chasers/chaser_check.hpp b/include/bitcoin/node/chasers/chaser_check.hpp index 35d51f49..3e592011 100644 --- a/include/bitcoin/node/chasers/chaser_check.hpp +++ b/include/bitcoin/node/chasers/chaser_check.hpp @@ -39,10 +39,13 @@ class BCN_API chaser_check void checked(const system::chain::block::cptr& block) NOEXCEPT; +protected: + virtual void handle_start() NOEXCEPT; + virtual void handle_header(height_t branch_point) NOEXCEPT; + virtual void handle_event(const code& ec, chase event_, + link value) NOEXCEPT; + private: - void handle_start() NOEXCEPT; - void handle_header() NOEXCEPT; - void handle_event(const code& ec, chase event_, link value) NOEXCEPT; void do_handle_event(const code& ec, chase event_, link value) NOEXCEPT; }; diff --git a/src/chasers/chaser_check.cpp b/src/chasers/chaser_check.cpp index 830bea7b..7cc53946 100644 --- a/src/chasers/chaser_check.cpp +++ b/src/chasers/chaser_check.cpp @@ -19,6 +19,7 @@ #include #include +#include #include #include #include @@ -46,7 +47,8 @@ void chaser_check::handle_event(const code& ec, chase event_, std::bind(&chaser_check::do_handle_event, this, ec, event_, value)); } -void chaser_check::do_handle_event(const code& ec, chase event_, link) NOEXCEPT +void chaser_check::do_handle_event(const code& ec, chase event_, + link value) NOEXCEPT { BC_ASSERT_MSG(stranded(), "chaser_check"); @@ -62,7 +64,8 @@ void chaser_check::do_handle_event(const code& ec, chase event_, link) NOEXCEPT } case chase::header: { - handle_header(); + BC_ASSERT(std::holds_alternative(value)); + handle_header(std::get(value)); break; } default: @@ -74,15 +77,17 @@ void chaser_check::do_handle_event(const code& ec, chase event_, link) NOEXCEPT void chaser_check::handle_start() NOEXCEPT { BC_ASSERT_MSG(stranded(), "chaser_check"); + // get_all_unassociated_above(0) } // TODO: handle the new strong branch (may issue 'checked'). -void chaser_check::handle_header() NOEXCEPT +void chaser_check::handle_header(height_t branch_point) NOEXCEPT { BC_ASSERT_MSG(stranded(), "chaser_check"); + LOGN("Candidate organization above height (" << branch_point << ")."); + // get_all_unassociated_above(branch_point) } -// TODO: pass link? void chaser_check::checked(const block::cptr&) NOEXCEPT { // Push checked block into store and issue 'checked' event so that connect diff --git a/src/chasers/chaser_header.cpp b/src/chasers/chaser_header.cpp index e6242cd6..f62761d1 100644 --- a/src/chasers/chaser_header.cpp +++ b/src/chasers/chaser_header.cpp @@ -32,9 +32,6 @@ using namespace network; using namespace system; using namespace std::placeholders; -using flags_t = database::context::flag::integer; -using height_t = database::context::block::integer; - BC_PUSH_WARNING(NO_THROW_IN_NOEXCEPT) chaser_header::chaser_header(full_node& node) NOEXCEPT