diff --git a/src/avalanche/processor.h b/src/avalanche/processor.h --- a/src/avalanche/processor.h +++ b/src/avalanche/processor.h @@ -95,6 +95,8 @@ CConnman *connman; std::chrono::milliseconds queryTimeoutDuration; + CTxMemPool &mempool; + /** * Blocks to run avalanche on. */ @@ -166,17 +168,17 @@ std::unique_ptr chainNotificationsHandler; Processor(const ArgsManager &argsman, interfaces::Chain &chain, - CConnman *connmanIn, std::unique_ptr peerDataIn, - CKey sessionKeyIn, uint32_t minQuorumTotalScoreIn, + CConnman *connmanIn, CTxMemPool &mempool, + std::unique_ptr peerDataIn, CKey sessionKeyIn, + uint32_t minQuorumTotalScoreIn, double minQuorumConnectedScoreRatioIn); public: ~Processor(); - static std::unique_ptr MakeProcessor(const ArgsManager &argsman, - interfaces::Chain &chain, - CConnman *connman, - bilingual_str &error); + static std::unique_ptr + MakeProcessor(const ArgsManager &argsman, interfaces::Chain &chain, + CConnman *connman, CTxMemPool &mempool, bilingual_str &error); void setQueryTimeoutDuration(std::chrono::milliseconds d) { queryTimeoutDuration = d; diff --git a/src/avalanche/processor.cpp b/src/avalanche/processor.cpp --- a/src/avalanche/processor.cpp +++ b/src/avalanche/processor.cpp @@ -132,13 +132,14 @@ }; Processor::Processor(const ArgsManager &argsman, interfaces::Chain &chain, - CConnman *connmanIn, std::unique_ptr peerDataIn, - CKey sessionKeyIn, uint32_t minQuorumTotalScoreIn, + CConnman *connmanIn, CTxMemPool &mempool, + std::unique_ptr peerDataIn, CKey sessionKeyIn, + uint32_t minQuorumTotalScoreIn, double minQuorumConnectedScoreRatioIn) : connman(connmanIn), queryTimeoutDuration(argsman.GetArg( "-avatimeout", AVALANCHE_DEFAULT_QUERY_TIMEOUT.count())), - round(0), peerManager(std::make_unique()), + mempool(mempool), round(0), peerManager(std::make_unique()), peerData(std::move(peerDataIn)), sessionKey(std::move(sessionKeyIn)), minQuorumScore(minQuorumTotalScoreIn), minQuorumConnectedScoreRatio(minQuorumConnectedScoreRatioIn) { @@ -155,6 +156,7 @@ std::unique_ptr Processor::MakeProcessor(const ArgsManager &argsman, interfaces::Chain &chain, CConnman *connman, + CTxMemPool &mempool, bilingual_str &error) { std::unique_ptr peerData; CKey masterKey; @@ -276,8 +278,9 @@ // We can't use std::make_unique with a private constructor return std::unique_ptr(new Processor( - argsman, chain, connman, std::move(peerData), std::move(sessionKey), - Proof::amountToScore(minQuorumStake), minQuorumConnectedStakeRatio)); + argsman, chain, connman, mempool, std::move(peerData), + std::move(sessionKey), Proof::amountToScore(minQuorumStake), + minQuorumConnectedStakeRatio)); } bool Processor::addBlockToReconcile(const CBlockIndex *pindex) { diff --git a/src/avalanche/test/processor_tests.cpp b/src/avalanche/test/processor_tests.cpp --- a/src/avalanche/test/processor_tests.cpp +++ b/src/avalanche/test/processor_tests.cpp @@ -103,7 +103,8 @@ // Get the processor ready. bilingual_str error; m_processor = Processor::MakeProcessor(*m_node.args, *m_node.chain, - m_node.connman.get(), error); + m_node.connman.get(), + *m_node.mempool, error); BOOST_CHECK(m_processor); } @@ -1219,8 +1220,9 @@ gArgs.ForceSetArg("-avaproof", localProof->ToHex()); bilingual_str error; - std::unique_ptr processor = Processor::MakeProcessor( - *m_node.args, *m_node.chain, m_node.connman.get(), error); + std::unique_ptr processor = + Processor::MakeProcessor(*m_node.args, *m_node.chain, + m_node.connman.get(), *m_node.mempool, error); BOOST_CHECK(processor != nullptr); BOOST_CHECK(processor->getLocalProof() != nullptr); @@ -1360,7 +1362,8 @@ bilingual_str error; std::unique_ptr processor = Processor::MakeProcessor( - *m_node.args, *m_node.chain, m_node.connman.get(), error); + *m_node.args, *m_node.chain, m_node.connman.get(), *m_node.mempool, + error); if (std::get<2>(*it)) { BOOST_CHECK(processor != nullptr); diff --git a/src/init.cpp b/src/init.cpp --- a/src/init.cpp +++ b/src/init.cpp @@ -2592,7 +2592,7 @@ // Step 6.5 (I guess ?): Initialize Avalanche. bilingual_str avalancheError; g_avalanche = avalanche::Processor::MakeProcessor( - args, *node.chain, node.connman.get(), avalancheError); + args, *node.chain, node.connman.get(), *node.mempool, avalancheError); if (!g_avalanche) { InitError(avalancheError); return false;