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