rpc: Add alt Ensure* functions acepting NodeContext

This commit is contained in:
Carl Dong 2021-04-12 18:25:13 -04:00
parent d7824acdb9
commit 306b1cd3ee
2 changed files with 21 additions and 6 deletions

View file

@ -64,18 +64,21 @@ NodeContext& EnsureNodeContext(const std::any& context)
return *node_context;
}
CTxMemPool& EnsureMemPool(const std::any& context)
CTxMemPool& EnsureMemPool(const NodeContext& node)
{
const NodeContext& node = EnsureNodeContext(context);
if (!node.mempool) {
throw JSONRPCError(RPC_CLIENT_MEMPOOL_DISABLED, "Mempool disabled or instance not found");
}
return *node.mempool;
}
ChainstateManager& EnsureChainman(const std::any& context)
CTxMemPool& EnsureMemPool(const std::any& context)
{
return EnsureMemPool(EnsureNodeContext(context));
}
ChainstateManager& EnsureChainman(const NodeContext& node)
{
const NodeContext& node = EnsureNodeContext(context);
if (!node.chainman) {
throw JSONRPCError(RPC_INTERNAL_ERROR, "Node chainman not found");
}
@ -83,15 +86,24 @@ ChainstateManager& EnsureChainman(const std::any& context)
return *node.chainman;
}
CBlockPolicyEstimator& EnsureFeeEstimator(const std::any& context)
ChainstateManager& EnsureChainman(const std::any& context)
{
return EnsureChainman(EnsureNodeContext(context));
}
CBlockPolicyEstimator& EnsureFeeEstimator(const NodeContext& node)
{
NodeContext& node = EnsureNodeContext(context);
if (!node.fee_estimator) {
throw JSONRPCError(RPC_INTERNAL_ERROR, "Fee estimation disabled");
}
return *node.fee_estimator;
}
CBlockPolicyEstimator& EnsureFeeEstimator(const std::any& context)
{
return EnsureFeeEstimator(EnsureNodeContext(context));
}
/* Calculate the difficulty for a given block index.
*/
double GetDifficulty(const CBlockIndex* blockindex)

View file

@ -57,8 +57,11 @@ void ScriptPubKeyToUniv(const CScript& scriptPubKey, UniValue& out, bool fInclud
void TxToUniv(const CTransaction& tx, const uint256& hashBlock, UniValue& entry, bool include_hex = true, int serialize_flags = 0, const CTxUndo* txundo = nullptr);
NodeContext& EnsureNodeContext(const std::any& context);
CTxMemPool& EnsureMemPool(const NodeContext& node);
CTxMemPool& EnsureMemPool(const std::any& context);
ChainstateManager& EnsureChainman(const NodeContext& node);
ChainstateManager& EnsureChainman(const std::any& context);
CBlockPolicyEstimator& EnsureFeeEstimator(const NodeContext& node);
CBlockPolicyEstimator& EnsureFeeEstimator(const std::any& context);
/**