blockmanager_opts.h raw
1 // Copyright (c) 2022-present The Bitcoin Core developers
2 // Distributed under the MIT software license, see the accompanying
3 // file COPYING or http://www.opensource.org/licenses/mit-license.php.
4
5 #ifndef BITCOIN_KERNEL_BLOCKMANAGER_OPTS_H
6 #define BITCOIN_KERNEL_BLOCKMANAGER_OPTS_H
7
8 #include <dbwrapper.h>
9 #include <kernel/notifications_interface.h>
10 #include <util/fs.h>
11
12 #include <cstdint>
13
14 class CChainParams;
15
16 namespace kernel {
17
18 static constexpr bool DEFAULT_XOR_BLOCKSDIR{true};
19
20 /**
21 * An options struct for `BlockManager`, more ergonomically referred to as
22 * `BlockManager::Options` due to the using-declaration in `BlockManager`.
23 */
24 struct BlockManagerOpts {
25 const CChainParams& chainparams;
26 bool use_xor{DEFAULT_XOR_BLOCKSDIR};
27 uint64_t prune_target{0};
28 bool fast_prune{false};
29 const fs::path blocks_dir;
30 Notifications& notifications;
31 DBParams block_tree_db_params;
32 };
33
34 } // namespace kernel
35
36 #endif // BITCOIN_KERNEL_BLOCKMANAGER_OPTS_H
37