Bitcoin Core  21.99.0
P2P Digital Currency
context.h
Go to the documentation of this file.
1 // Copyright (c) 2019-2020 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_NODE_CONTEXT_H
6 #define BITCOIN_NODE_CONTEXT_H
7 
8 #include <cassert>
9 #include <functional>
10 #include <memory>
11 #include <vector>
12 
13 class ArgsManager;
14 class BanMan;
15 class CAddrMan;
17 class CConnman;
18 class CScheduler;
19 class CTxMemPool;
20 class ChainstateManager;
21 class PeerManager;
22 namespace interfaces {
23 class Chain;
24 class ChainClient;
25 class WalletClient;
26 } // namespace interfaces
27 
38 struct NodeContext {
39  std::unique_ptr<CAddrMan> addrman;
40  std::unique_ptr<CConnman> connman;
41  std::unique_ptr<CTxMemPool> mempool;
42  std::unique_ptr<CBlockPolicyEstimator> fee_estimator;
43  std::unique_ptr<PeerManager> peerman;
44  ChainstateManager* chainman{nullptr}; // Currently a raw pointer because the memory is not managed by this struct
45  std::unique_ptr<BanMan> banman;
46  ArgsManager* args{nullptr}; // Currently a raw pointer because the memory is not managed by this struct
47  std::unique_ptr<interfaces::Chain> chain;
49  std::vector<std::unique_ptr<interfaces::ChainClient>> chain_clients;
53  std::unique_ptr<CScheduler> scheduler;
54  std::function<void()> rpc_interruption_point = [] {};
55 
59  NodeContext();
60  ~NodeContext();
61 };
62 
63 #endif // BITCOIN_NODE_CONTEXT_H
interfaces
Definition: dummywallet.cpp:10
CScheduler
Simple class for background tasks that should be run periodically or once "after a while".
Definition: scheduler.h:33
NodeContext::fee_estimator
std::unique_ptr< CBlockPolicyEstimator > fee_estimator
Definition: context.h:42
NodeContext::~NodeContext
~NodeContext()
Definition: context.cpp:17
NodeContext::args
ArgsManager * args
Definition: context.h:46
NodeContext::mempool
std::unique_ptr< CTxMemPool > mempool
Definition: context.h:41
CTxMemPool
CTxMemPool stores valid-according-to-the-current-best-chain transactions that may be included in the ...
Definition: txmempool.h:477
NodeContext::NodeContext
NodeContext()
Declare default constructor and destructor that are not inline, so code instantiating the NodeContext...
Definition: context.cpp:16
NodeContext::rpc_interruption_point
std::function< void()> rpc_interruption_point
Definition: context.h:54
NodeContext::chain
std::unique_ptr< interfaces::Chain > chain
Definition: context.h:47
CBlockPolicyEstimator
Definition: fees.h:131
PeerManager
Definition: net_processing.h:37
interfaces::WalletClient
Wallet chain client that in addition to having chain client methods for starting up,...
Definition: wallet.h:309
NodeContext::addrman
std::unique_ptr< CAddrMan > addrman
Definition: context.h:39
NodeContext::peerman
std::unique_ptr< PeerManager > peerman
Definition: context.h:43
BanMan
Definition: banman.h:57
ChainstateManager
Provides an interface for creating and interacting with one or two chainstates: an IBD chainstate gen...
Definition: validation.h:807
NodeContext::wallet_client
interfaces::WalletClient * wallet_client
Reference to chain client that should used to load or create wallets opened by the gui.
Definition: context.h:52
NodeContext::chain_clients
std::vector< std::unique_ptr< interfaces::ChainClient > > chain_clients
List of all chain clients (wallet processes or other client) connected to node.
Definition: context.h:49
CConnman
Definition: net.h:803
CAddrMan
Stochastical (IP) address manager.
Definition: addrman.h:172
NodeContext::banman
std::unique_ptr< BanMan > banman
Definition: context.h:45
ArgsManager
Definition: system.h:166
NodeContext::scheduler
std::unique_ptr< CScheduler > scheduler
Definition: context.h:53
NodeContext::connman
std::unique_ptr< CConnman > connman
Definition: context.h:40
NodeContext
NodeContext struct containing references to chain state and connection state.
Definition: context.h:38
NodeContext::chainman
ChainstateManager * chainman
Definition: context.h:44