/ src / rpc / server_util.h
server_util.h
 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