server_util.h raw
1 // Copyright (c) 2021-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_RPC_SERVER_UTIL_H
6 #define BITCOIN_RPC_SERVER_UTIL_H
7
8 #include <any>
9
10 #include <consensus/params.h>
11
12 class AddrMan;
13 class ArgsManager;
14 class CBlockIndex;
15 class CBlockPolicyEstimator;
16 class CConnman;
17 class CTxMemPool;
18 class ChainstateManager;
19 class PeerManager;
20 class BanMan;
21 namespace node {
22 struct NodeContext;
23 } // namespace node
24 namespace interfaces {
25 class Mining;
26 } // namespace interfaces
27
28 node::NodeContext& EnsureAnyNodeContext(const std::any& context);
29 CTxMemPool& EnsureMemPool(const node::NodeContext& node);
30 CTxMemPool& EnsureAnyMemPool(const std::any& context);
31 BanMan& EnsureBanman(const node::NodeContext& node);
32 BanMan& EnsureAnyBanman(const std::any& context);
33 ArgsManager& EnsureArgsman(const node::NodeContext& node);
34 ArgsManager& EnsureAnyArgsman(const std::any& context);
35 ChainstateManager& EnsureChainman(const node::NodeContext& node);
36 ChainstateManager& EnsureAnyChainman(const std::any& context);
37 CBlockPolicyEstimator& EnsureFeeEstimator(const node::NodeContext& node);
38 CBlockPolicyEstimator& EnsureAnyFeeEstimator(const std::any& context);
39 CConnman& EnsureConnman(const node::NodeContext& node);
40 interfaces::Mining& EnsureMining(const node::NodeContext& node);
41 PeerManager& EnsurePeerman(const node::NodeContext& node);
42 AddrMan& EnsureAddrman(const node::NodeContext& node);
43 AddrMan& EnsureAnyAddrman(const std::any& context);
44
45 /** Return an empty block index on top of the tip, with height, time and nBits set */
46 void NextEmptyBlockIndex(CBlockIndex& tip, const Consensus::Params& consensusParams, CBlockIndex& next_index);
47
48 #endif // BITCOIN_RPC_SERVER_UTIL_H
49