Bitcoin Core 22.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
13class ArgsManager;
14class BanMan;
15class AddrMan;
17class CConnman;
18class CScheduler;
19class CTxMemPool;
21class PeerManager;
22namespace interfaces {
23class Chain;
24class ChainClient;
25class Init;
26class WalletClient;
27} // namespace interfaces
28
42 std::unique_ptr<AddrMan> addrman;
43 std::unique_ptr<CConnman> connman;
44 std::unique_ptr<CTxMemPool> mempool;
45 std::unique_ptr<CBlockPolicyEstimator> fee_estimator;
46 std::unique_ptr<PeerManager> peerman;
47 std::unique_ptr<ChainstateManager> chainman;
48 std::unique_ptr<BanMan> banman;
49 ArgsManager* args{nullptr}; // Currently a raw pointer because the memory is not managed by this struct
50 std::unique_ptr<interfaces::Chain> chain;
52 std::vector<std::unique_ptr<interfaces::ChainClient>> chain_clients;
56 std::unique_ptr<CScheduler> scheduler;
57 std::function<void()> rpc_interruption_point = [] {};
58
64};
65
66#endif // BITCOIN_NODE_CONTEXT_H
Stochastic address manager.
Definition: addrman.h:55
Definition: banman.h:59
The BlockPolicyEstimator is used for estimating the feerate needed for a transaction to be included i...
Definition: fees.h:132
Definition: net.h:741
Simple class for background tasks that should be run periodically or once "after a while".
Definition: scheduler.h:34
CTxMemPool stores valid-according-to-the-current-best-chain transactions that may be included in the ...
Definition: txmempool.h:424
Provides an interface for creating and interacting with one or two chainstates: an IBD chainstate gen...
Definition: validation.h:847
Initial interface created when a process is first started, and used to give and get access to other i...
Definition: init.h:27
Wallet chain client that in addition to having chain client methods for starting up,...
Definition: wallet.h:313
NodeContext struct containing references to chain state and connection state.
Definition: context.h:39
std::unique_ptr< PeerManager > peerman
Definition: context.h:46
std::unique_ptr< ChainstateManager > chainman
Definition: context.h:47
std::unique_ptr< CBlockPolicyEstimator > fee_estimator
Definition: context.h:45
~NodeContext()
Definition: context.cpp:18
std::unique_ptr< interfaces::Chain > chain
Definition: context.h:50
std::unique_ptr< AddrMan > addrman
Definition: context.h:42
ArgsManager * args
Definition: context.h:49
std::unique_ptr< CTxMemPool > mempool
Definition: context.h:44
std::unique_ptr< BanMan > banman
Definition: context.h:48
interfaces::WalletClient * wallet_client
Reference to chain client that should used to load or create wallets opened by the gui.
Definition: context.h:55
NodeContext()
Declare default constructor and destructor that are not inline, so code instantiating the NodeContext...
Definition: context.cpp:17
std::unique_ptr< CConnman > connman
Definition: context.h:43
std::unique_ptr< CScheduler > scheduler
Definition: context.h:56
std::function< void()> rpc_interruption_point
Definition: context.h:57
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:52