From 2e2151df1efb24ab94facd4a4550935c31f0a015 Mon Sep 17 00:00:00 2001 From: clemahieu Date: Wed, 19 Jul 2017 18:50:27 -0500 Subject: [PATCH] Removing duplicate code for confirmation action which is always run. --- rai/core_test/conflicts.cpp | 25 +++++-------------------- rai/core_test/ledger.cpp | 20 ++++---------------- rai/core_test/network.cpp | 10 ++-------- rai/node/bootstrap.cpp | 5 +---- rai/node/node.cpp | 9 ++++----- rai/node/node.hpp | 2 +- 6 files changed, 17 insertions(+), 54 deletions(-) diff --git a/rai/core_test/conflicts.cpp b/rai/core_test/conflicts.cpp index a9d997ae..8baca042 100644 --- a/rai/core_test/conflicts.cpp +++ b/rai/core_test/conflicts.cpp @@ -13,10 +13,7 @@ TEST (conflicts, start_stop) auto node_l (system.nodes [0]); { rai::transaction transaction (node1.store.environment, nullptr, true); - node1.active.start (transaction, send1, [node_l] (std::shared_ptr block_a) - { - node_l->process_confirmed (block_a); - }); + node1.active.start (transaction, send1); } ASSERT_EQ (1, node1.active.roots.size ()); auto root1 (send1->root ()); @@ -38,19 +35,13 @@ TEST (conflicts, add_existing) auto node_l (system.nodes [0]); { rai::transaction transaction (node1.store.environment, nullptr, true); - node1.active.start (transaction, send1, [node_l] (std::shared_ptr block_a) - { - node_l->process_confirmed (block_a); - }); + node1.active.start (transaction, send1); } rai::keypair key2; auto send2 (std::make_shared (genesis.hash (), key2.pub, 0, rai::test_genesis_key.prv, rai::test_genesis_key.pub, 0)); { rai::transaction transaction (node1.store.environment, nullptr, true); - node1.active.start (transaction, send2, [node_l] (std::shared_ptr block_a) - { - node_l->process_confirmed (block_a); - }); + node1.active.start (transaction, send2); } ASSERT_EQ (1, node1.active.roots.size ()); rai::vote vote1 (key2.pub, key2.prv, 0, send2); @@ -73,20 +64,14 @@ TEST (conflicts, add_two) auto node_l (system.nodes [0]); { rai::transaction transaction (node1.store.environment, nullptr, true); - node1.active.start (transaction, send1, [node_l] (std::shared_ptr block_a) - { - node_l->process_confirmed (block_a); - }); + node1.active.start (transaction, send1); } rai::keypair key2; auto send2 (std::make_shared (send1->hash (), key2.pub, 0, rai::test_genesis_key.prv, rai::test_genesis_key.pub, 0)); ASSERT_EQ (rai::process_result::progress, node1.process (*send2).code); { rai::transaction transaction (node1.store.environment, nullptr, true); - node1.active.start (transaction, send2, [node_l] (std::shared_ptr block_a) - { - node_l->process_confirmed (block_a); - }); + node1.active.start (transaction, send2); } ASSERT_EQ (2, node1.active.roots.size ()); } diff --git a/rai/core_test/ledger.cpp b/rai/core_test/ledger.cpp index 16e0ea69..7790d9d8 100644 --- a/rai/core_test/ledger.cpp +++ b/rai/core_test/ledger.cpp @@ -729,10 +729,7 @@ TEST (votes, add_one) auto node_l (system.nodes [0]); { rai::transaction transaction (node1.store.environment, nullptr, true); - node1.active.start (transaction, send1, [node_l] (std::shared_ptr block_a) - { - node_l->process_confirmed (block_a); - }); + node1.active.start (transaction, send1); } auto votes1 (node1.active.roots.find (send1->root ())->election); ASSERT_EQ (1, votes1->votes.rep_votes.size ()); @@ -764,10 +761,7 @@ TEST (votes, add_two) auto node_l (system.nodes [0]); { rai::transaction transaction (node1.store.environment, nullptr, true); - node1.active.start (transaction, send1, [node_l] (std::shared_ptr block_a) - { - node_l->process_confirmed (block_a); - }); + node1.active.start (transaction, send1); } auto votes1 (node1.active.roots.find (send1->root ())->election); rai::vote vote1 (rai::test_genesis_key.pub, rai::test_genesis_key.prv, 1, send1); @@ -801,10 +795,7 @@ TEST (votes, add_existing) auto node_l (system.nodes [0]); { rai::transaction transaction (node1.store.environment, nullptr, true); - node1.active.start (transaction, send1, [node_l] (std::shared_ptr block_a) - { - node_l->process_confirmed (block_a); - }); + node1.active.start (transaction, send1); } auto votes1 (node1.active.roots.find (send1->root ())->election); rai::vote vote1 (rai::test_genesis_key.pub, rai::test_genesis_key.prv, 1, send1); @@ -836,10 +827,7 @@ TEST (votes, add_old) auto node_l (system.nodes [0]); { rai::transaction transaction (node1.store.environment, nullptr, true); - node1.active.start (transaction, send1, [node_l] (std::shared_ptr block_a) - { - node_l->process_confirmed (block_a); - }); + node1.active.start (transaction, send1); } auto votes1 (node1.active.roots.find (send1->root ())->election); rai::vote vote1 (rai::test_genesis_key.pub, rai::test_genesis_key.prv, 2, send1); diff --git a/rai/core_test/network.cpp b/rai/core_test/network.cpp index b3440e7a..292541c8 100644 --- a/rai/core_test/network.cpp +++ b/rai/core_test/network.cpp @@ -262,10 +262,7 @@ TEST (receivable_processor, confirm_insufficient_pos) auto node_l (system.nodes [0]); { rai::transaction transaction (node1.store.environment, nullptr, true); - node1.active.start (transaction, block1, [node_l] (std::shared_ptr block_a) - { - node_l->process_confirmed (block_a); - }); + node1.active.start (transaction, block1); } rai::keypair key1; rai::vote vote (key1.pub, key1.prv, 0, block1); @@ -283,10 +280,7 @@ TEST (receivable_processor, confirm_sufficient_pos) auto node_l (system.nodes [0]); { rai::transaction transaction (node1.store.environment, nullptr, true); - node1.active.start (transaction, block1, [node_l] (std::shared_ptr block_a) - { - node_l->process_confirmed (block_a); - }); + node1.active.start (transaction, block1); } rai::vote vote (rai::test_genesis_key.pub, rai::test_genesis_key.prv, 0, block1); rai::confirm_ack con1 (vote); diff --git a/rai/node/bootstrap.cpp b/rai/node/bootstrap.cpp index 13c87204..0db51153 100755 --- a/rai/node/bootstrap.cpp +++ b/rai/node/bootstrap.cpp @@ -587,10 +587,7 @@ void rai::bulk_pull_client::received_block (boost::system::error_code const & ec { auto node_l (connection.node); std::shared_ptr block (node_l->ledger.forked_block (transaction_a, *block_a)); - node_l->active.start (transaction_a, block, [node_l] (std::shared_ptr block_a) - { - node_l->process_confirmed (block_a); - }); + node_l->active.start (transaction_a, block); connection.node->network.broadcast_confirm_req (block_a); connection.node->network.broadcast_confirm_req (block); BOOST_LOG (connection.node->log) << boost::str (boost::format ("Fork received in bootstrap between: %1% and %2% root %3%") % block_a->hash ().to_string () % block->hash ().to_string () % block_a->root ().to_string ()); diff --git a/rai/node/node.cpp b/rai/node/node.cpp index 5276d200..6d528926 100755 --- a/rai/node/node.cpp +++ b/rai/node/node.cpp @@ -1365,10 +1365,7 @@ void rai::node::process_receive_republish (std::shared_ptr incoming case rai::process_result::progress: { auto node_l (shared_from_this ()); - active.start (transaction_a, block_a, [node_l] (std::shared_ptr block_a) - { - node_l->process_confirmed (block_a); - }); + active.start (transaction_a, block_a); completed.push_back (std::make_tuple (result_a, block_a)); break; } @@ -2564,9 +2561,11 @@ void rai::election::confirm_once (MDB_txn * transaction_a) } } auto winner_l (last_winner); + auto node_l (node.shared ()); auto confirmation_action_l (confirmation_action); - node.background ([winner_l, confirmation_action_l] () + node.background ([winner_l, confirmation_action_l, node_l] () { + node_l->process_confirmed (winner_l); confirmation_action_l (winner_l); }); } diff --git a/rai/node/node.hpp b/rai/node/node.hpp index 139bf078..0c927565 100644 --- a/rai/node/node.hpp +++ b/rai/node/node.hpp @@ -77,7 +77,7 @@ public: active_transactions (rai::node &); // Start an election for a block // Call action with confirmed block, may be different than what we started with - void start (MDB_txn *, std::shared_ptr , std::function )> const &); + void start (MDB_txn *, std::shared_ptr , std::function )> const & = [] (std::shared_ptr ) {}); void vote (rai::vote const &); // Is the root of this block in the roots container bool active (rai::block const &);