diff options
author | Carl Dong <contact@carldong.me> | 2022-03-01 16:14:12 -0500 |
---|---|---|
committer | Carl Dong <contact@carldong.me> | 2022-05-20 11:54:18 -0400 |
commit | dbe45c34f8b4fd7d615f7e05ef1454798ef0c8ca (patch) | |
tree | 6d6d691e36a8055a8339d92c3e10985a1c177a75 | |
parent | 4d0c00dffd13df9b055dbca244783c5de9ca23a5 (diff) |
Add ChainstateManagerOpts, using as ::Options
[META] Although it seems like we don't need it for just one option,
we're going to introduce another member to this struct *in the
next commit*. In future patchsets for libbitcoinkernel decoupling
it from ArgsManager, even more members will be added here.
-rw-r--r-- | src/Makefile.am | 1 | ||||
-rw-r--r-- | src/bitcoin-chainstate.cpp | 5 | ||||
-rw-r--r-- | src/init.cpp | 5 | ||||
-rw-r--r-- | src/kernel/chainstatemanager_opts.h | 22 | ||||
-rw-r--r-- | src/test/util/setup_common.cpp | 5 | ||||
-rw-r--r-- | src/test/validation_chainstate_tests.cpp | 7 | ||||
-rw-r--r-- | src/validation.h | 6 |
7 files changed, 45 insertions, 6 deletions
diff --git a/src/Makefile.am b/src/Makefile.am index 357e562c69..d421e8f89d 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -171,6 +171,7 @@ BITCOIN_CORE_H = \ interfaces/ipc.h \ interfaces/node.h \ interfaces/wallet.h \ + kernel/chainstatemanager_opts.h \ key.h \ key_io.h \ logging.h \ diff --git a/src/bitcoin-chainstate.cpp b/src/bitcoin-chainstate.cpp index 812585ba1e..b667641964 100644 --- a/src/bitcoin-chainstate.cpp +++ b/src/bitcoin-chainstate.cpp @@ -70,7 +70,10 @@ int main(int argc, char* argv[]) // SETUP: Chainstate - ChainstateManager chainman{chainparams}; + const ChainstateManager::Options chainman_opts{ + chainparams, + }; + ChainstateManager chainman{chainman_opts}; auto rv = node::LoadChainstate(false, std::ref(chainman), diff --git a/src/init.cpp b/src/init.cpp index 060541e975..ec94060e99 100644 --- a/src/init.cpp +++ b/src/init.cpp @@ -1421,7 +1421,10 @@ bool AppInitMain(NodeContext& node, interfaces::BlockAndHeaderTipInfo* tip_info) for (bool fLoaded = false; !fLoaded && !ShutdownRequested();) { node.mempool = std::make_unique<CTxMemPool>(node.fee_estimator.get(), mempool_check_ratio); - node.chainman = std::make_unique<ChainstateManager>(chainparams); + const ChainstateManager::Options chainman_opts{ + chainparams, + }; + node.chainman = std::make_unique<ChainstateManager>(chainman_opts); ChainstateManager& chainman = *node.chainman; const bool fReset = fReindex; diff --git a/src/kernel/chainstatemanager_opts.h b/src/kernel/chainstatemanager_opts.h new file mode 100644 index 0000000000..f2646700a4 --- /dev/null +++ b/src/kernel/chainstatemanager_opts.h @@ -0,0 +1,22 @@ +// Copyright (c) 2022 The Bitcoin Core developers +// Distributed under the MIT software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. + +#ifndef BITCOIN_KERNEL_CHAINSTATEMANAGER_OPTS_H +#define BITCOIN_KERNEL_CHAINSTATEMANAGER_OPTS_H + +#include <cstdint> +#include <functional> + +class CChainParams; + +/** + * An options struct for `ChainstateManager`, more ergonomically referred to as + * `ChainstateManager::Options` due to the using-declaration in + * `ChainstateManager`. + */ +struct ChainstateManagerOpts { + const CChainParams& chainparams; +}; + +#endif // BITCOIN_KERNEL_CHAINSTATEMANAGER_OPTS_H diff --git a/src/test/util/setup_common.cpp b/src/test/util/setup_common.cpp index ff78f87ec1..ba37a6113f 100644 --- a/src/test/util/setup_common.cpp +++ b/src/test/util/setup_common.cpp @@ -164,7 +164,10 @@ ChainTestingSetup::ChainTestingSetup(const std::string& chainName, const std::ve m_cache_sizes = CalculateCacheSizes(m_args); - m_node.chainman = std::make_unique<ChainstateManager>(chainparams); + const ChainstateManager::Options chainman_opts{ + chainparams, + }; + m_node.chainman = std::make_unique<ChainstateManager>(chainman_opts); m_node.chainman->m_blockman.m_block_tree_db = std::make_unique<CBlockTreeDB>(m_cache_sizes.block_tree_db, true); // Start script-checking threads. Set g_parallel_script_checks to true so they are used. diff --git a/src/test/validation_chainstate_tests.cpp b/src/test/validation_chainstate_tests.cpp index e7c7584f1c..55c2228767 100644 --- a/src/test/validation_chainstate_tests.cpp +++ b/src/test/validation_chainstate_tests.cpp @@ -22,8 +22,11 @@ BOOST_FIXTURE_TEST_SUITE(validation_chainstate_tests, TestingSetup) //! BOOST_AUTO_TEST_CASE(validation_chainstate_resize_caches) { - const CChainParams& chainparams = Params(); - ChainstateManager manager(chainparams); + const ChainstateManager::Options chainman_opts{ + Params(), + }; + ChainstateManager manager{chainman_opts}; + WITH_LOCK(::cs_main, manager.m_blockman.m_block_tree_db = std::make_unique<CBlockTreeDB>(1 << 20, true)); CTxMemPool mempool; diff --git a/src/validation.h b/src/validation.h index 04745a6e36..cae4ed4f14 100644 --- a/src/validation.h +++ b/src/validation.h @@ -14,6 +14,7 @@ #include <attributes.h> #include <chain.h> #include <chainparams.h> +#include <kernel/chainstatemanager_opts.h> #include <consensus/amount.h> #include <deploymentstatus.h> #include <fs.h> @@ -853,7 +854,10 @@ private: friend CChainState; public: - explicit ChainstateManager(const CChainParams& chainparams) : m_chainparams{chainparams} { } + using Options = ChainstateManagerOpts; + + explicit ChainstateManager(const Options& opts) + : m_chainparams(opts.chainparams) {}; const CChainParams& GetParams() const { return m_chainparams; } const Consensus::Params& GetConsensus() const { return m_chainparams.GetConsensus(); } |