refactor: add const to llmq_ctx, isman, clhandler in rpc code

This commit is contained in:
Konstantin Akimov 2024-12-11 15:11:05 +07:00
parent 6d97441434
commit 5b914fe081
No known key found for this signature in database
GPG Key ID: 2176C4A5D01EA524
4 changed files with 29 additions and 29 deletions

View File

@ -78,7 +78,7 @@ static Mutex cs_blockchange;
static std::condition_variable cond_blockchange; static std::condition_variable cond_blockchange;
static CUpdatedBlock latestblock GUARDED_BY(cs_blockchange); static CUpdatedBlock latestblock GUARDED_BY(cs_blockchange);
extern void TxToJSON(const CTransaction& tx, const uint256 hashBlock, CTxMemPool& mempool, CChainState& active_chainstate, llmq::CChainLocksHandler& clhandler, llmq::CInstantSendManager& isman, UniValue& entry); extern void TxToJSON(const CTransaction& tx, const uint256 hashBlock, const CTxMemPool& mempool, const CChainState& active_chainstate, const llmq::CChainLocksHandler& clhandler, const llmq::CInstantSendManager& isman, UniValue& entry);
/* Calculate the difficulty for a given block index. /* Calculate the difficulty for a given block index.
*/ */
@ -127,7 +127,7 @@ static const CBlockIndex* ParseHashOrHeight(const UniValue& param, ChainstateMan
} }
} }
UniValue blockheaderToJSON(const CBlockIndex* tip, const CBlockIndex* blockindex, llmq::CChainLocksHandler& clhandler) UniValue blockheaderToJSON(const CBlockIndex* tip, const CBlockIndex* blockindex, const llmq::CChainLocksHandler& clhandler)
{ {
// Serialize passed information without accessing chain state of the active chain! // Serialize passed information without accessing chain state of the active chain!
AssertLockNotHeld(cs_main); // For performance reasons AssertLockNotHeld(cs_main); // For performance reasons
@ -159,7 +159,7 @@ UniValue blockheaderToJSON(const CBlockIndex* tip, const CBlockIndex* blockindex
return result; return result;
} }
UniValue blockToJSON(BlockManager& blockman, const CBlock& block, const CBlockIndex* tip, const CBlockIndex* blockindex, llmq::CChainLocksHandler& clhandler, llmq::CInstantSendManager& isman, bool txDetails) UniValue blockToJSON(BlockManager& blockman, const CBlock& block, const CBlockIndex* tip, const CBlockIndex* blockindex, const llmq::CChainLocksHandler& clhandler, const llmq::CInstantSendManager& isman, bool txDetails)
{ {
UniValue result = blockheaderToJSON(tip, blockindex, clhandler); UniValue result = blockheaderToJSON(tip, blockindex, clhandler);
@ -258,8 +258,8 @@ static RPCHelpMan getbestchainlock()
const NodeContext& node = EnsureAnyNodeContext(request.context); const NodeContext& node = EnsureAnyNodeContext(request.context);
LLMQContext& llmq_ctx = EnsureLLMQContext(node); const LLMQContext& llmq_ctx = EnsureLLMQContext(node);
llmq::CChainLockSig clsig = llmq_ctx.clhandler->GetBestChainLock(); const llmq::CChainLockSig clsig = llmq_ctx.clhandler->GetBestChainLock();
if (clsig.IsNull()) { if (clsig.IsNull()) {
throw JSONRPCError(RPC_INTERNAL_ERROR, "Unable to find any ChainLock"); throw JSONRPCError(RPC_INTERNAL_ERROR, "Unable to find any ChainLock");
} }
@ -267,7 +267,7 @@ static RPCHelpMan getbestchainlock()
result.pushKV("height", clsig.getHeight()); result.pushKV("height", clsig.getHeight());
result.pushKV("signature", clsig.getSig().ToString()); result.pushKV("signature", clsig.getSig().ToString());
ChainstateManager& chainman = EnsureChainman(node); const ChainstateManager& chainman = EnsureChainman(node);
LOCK(cs_main); LOCK(cs_main);
result.pushKV("known_block", chainman.m_blockman.LookupBlockIndex(clsig.getBlockHash()) != nullptr); result.pushKV("known_block", chainman.m_blockman.LookupBlockIndex(clsig.getBlockHash()) != nullptr);
return result; return result;
@ -485,7 +485,7 @@ static std::vector<RPCResult> MempoolEntryDescription() { return {
RPCResult{RPCResult::Type::BOOL, "unbroadcast", "Whether this transaction is currently unbroadcast (initial broadcast not yet acknowledged by any peers)"} RPCResult{RPCResult::Type::BOOL, "unbroadcast", "Whether this transaction is currently unbroadcast (initial broadcast not yet acknowledged by any peers)"}
};} };}
static void entryToJSON(const CTxMemPool& pool, UniValue& info, const CTxMemPoolEntry& e, llmq::CInstantSendManager* isman) EXCLUSIVE_LOCKS_REQUIRED(pool.cs) static void entryToJSON(const CTxMemPool& pool, UniValue& info, const CTxMemPoolEntry& e, const llmq::CInstantSendManager* isman) EXCLUSIVE_LOCKS_REQUIRED(pool.cs)
{ {
AssertLockHeld(pool.cs); AssertLockHeld(pool.cs);
@ -535,7 +535,7 @@ static void entryToJSON(const CTxMemPool& pool, UniValue& info, const CTxMemPool
info.pushKV("unbroadcast", pool.IsUnbroadcastTx(tx.GetHash())); info.pushKV("unbroadcast", pool.IsUnbroadcastTx(tx.GetHash()));
} }
UniValue MempoolToJSON(const CTxMemPool& pool, llmq::CInstantSendManager* isman, bool verbose, bool include_mempool_sequence) UniValue MempoolToJSON(const CTxMemPool& pool, const llmq::CInstantSendManager* isman, bool verbose, bool include_mempool_sequence)
{ {
if (verbose) { if (verbose) {
if (include_mempool_sequence) { if (include_mempool_sequence) {
@ -623,7 +623,7 @@ static RPCHelpMan getrawmempool()
const NodeContext& node = EnsureAnyNodeContext(request.context); const NodeContext& node = EnsureAnyNodeContext(request.context);
const CTxMemPool& mempool = EnsureMemPool(node); const CTxMemPool& mempool = EnsureMemPool(node);
LLMQContext& llmq_ctx = EnsureLLMQContext(node); const LLMQContext& llmq_ctx = EnsureLLMQContext(node);
return MempoolToJSON(mempool, llmq_ctx.isman, fVerbose, include_mempool_sequence); return MempoolToJSON(mempool, llmq_ctx.isman, fVerbose, include_mempool_sequence);
}, },
}; };
@ -682,7 +682,7 @@ static RPCHelpMan getmempoolancestors()
return o; return o;
} else { } else {
UniValue o(UniValue::VOBJ); UniValue o(UniValue::VOBJ);
LLMQContext& llmq_ctx = EnsureLLMQContext(node); const LLMQContext& llmq_ctx = EnsureLLMQContext(node);
for (CTxMemPool::txiter ancestorIt : setAncestors) { for (CTxMemPool::txiter ancestorIt : setAncestors) {
const CTxMemPoolEntry &e = *ancestorIt; const CTxMemPoolEntry &e = *ancestorIt;
const uint256& _hash = e.GetTx().GetHash(); const uint256& _hash = e.GetTx().GetHash();
@ -750,7 +750,7 @@ static RPCHelpMan getmempooldescendants()
return o; return o;
} else { } else {
UniValue o(UniValue::VOBJ); UniValue o(UniValue::VOBJ);
LLMQContext& llmq_ctx = EnsureLLMQContext(node); const LLMQContext& llmq_ctx = EnsureLLMQContext(node);
for (CTxMemPool::txiter descendantIt : setDescendants) { for (CTxMemPool::txiter descendantIt : setDescendants) {
const CTxMemPoolEntry &e = *descendantIt; const CTxMemPoolEntry &e = *descendantIt;
const uint256& _hash = e.GetTx().GetHash(); const uint256& _hash = e.GetTx().GetHash();
@ -794,7 +794,7 @@ static RPCHelpMan getmempoolentry()
const CTxMemPoolEntry &e = *it; const CTxMemPoolEntry &e = *it;
UniValue info(UniValue::VOBJ); UniValue info(UniValue::VOBJ);
LLMQContext& llmq_ctx = EnsureLLMQContext(node); const LLMQContext& llmq_ctx = EnsureLLMQContext(node);
entryToJSON(mempool, info, e, llmq_ctx.isman); entryToJSON(mempool, info, e, llmq_ctx.isman);
return info; return info;
}, },
@ -985,7 +985,7 @@ static RPCHelpMan getblockheader()
return strHex; return strHex;
} }
LLMQContext& llmq_ctx = EnsureLLMQContext(node); const LLMQContext& llmq_ctx = EnsureLLMQContext(node);
return blockheaderToJSON(tip, pblockindex, *llmq_ctx.clhandler); return blockheaderToJSON(tip, pblockindex, *llmq_ctx.clhandler);
}, },
}; };
@ -1084,7 +1084,7 @@ static RPCHelpMan getblockheaders()
return arrHeaders; return arrHeaders;
} }
LLMQContext& llmq_ctx = EnsureLLMQContext(node); const LLMQContext& llmq_ctx = EnsureLLMQContext(node);
for (; pblockindex; pblockindex = active_chain.Next(pblockindex)) for (; pblockindex; pblockindex = active_chain.Next(pblockindex))
{ {
arrHeaders.push_back(blockheaderToJSON(tip, pblockindex, *llmq_ctx.clhandler)); arrHeaders.push_back(blockheaderToJSON(tip, pblockindex, *llmq_ctx.clhandler));
@ -1305,7 +1305,7 @@ static RPCHelpMan getblock()
return strHex; return strHex;
} }
LLMQContext& llmq_ctx = EnsureLLMQContext(node); const LLMQContext& llmq_ctx = EnsureLLMQContext(node);
return blockToJSON(chainman.m_blockman, block, tip, pblockindex, *llmq_ctx.clhandler, *llmq_ctx.isman, verbosity >= 2); return blockToJSON(chainman.m_blockman, block, tip, pblockindex, *llmq_ctx.clhandler, *llmq_ctx.isman, verbosity >= 2);
}, },
}; };
@ -1983,7 +1983,7 @@ static RPCHelpMan getchaintips()
}; };
} }
UniValue MempoolInfoToJSON(const CTxMemPool& pool, llmq::CInstantSendManager& isman) UniValue MempoolInfoToJSON(const CTxMemPool& pool, const llmq::CInstantSendManager& isman)
{ {
// Make sure this call is atomic in the pool. // Make sure this call is atomic in the pool.
LOCK(pool.cs); LOCK(pool.cs);
@ -2029,7 +2029,7 @@ static RPCHelpMan getmempoolinfo()
{ {
const NodeContext& node = EnsureAnyNodeContext(request.context); const NodeContext& node = EnsureAnyNodeContext(request.context);
const CTxMemPool& mempool = EnsureMemPool(node); const CTxMemPool& mempool = EnsureMemPool(node);
LLMQContext& llmq_ctx = EnsureLLMQContext(node); const LLMQContext& llmq_ctx = EnsureLLMQContext(node);
return MempoolInfoToJSON(mempool, *llmq_ctx.isman); return MempoolInfoToJSON(mempool, *llmq_ctx.isman);
}, },
}; };
@ -2567,10 +2567,10 @@ static RPCHelpMan getspecialtxes()
ChainstateManager& chainman = EnsureChainman(node); ChainstateManager& chainman = EnsureChainman(node);
LOCK(cs_main); LOCK(cs_main);
CTxMemPool& mempool = EnsureMemPool(node); const CTxMemPool& mempool = EnsureMemPool(node);
LLMQContext& llmq_ctx = EnsureLLMQContext(node); const LLMQContext& llmq_ctx = EnsureLLMQContext(node);
uint256 blockhash(ParseHashV(request.params[0], "blockhash")); const uint256 blockhash(ParseHashV(request.params[0], "blockhash"));
int nTxType = -1; int nTxType = -1;
if (!request.params[1].isNull()) { if (!request.params[1].isNull()) {

View File

@ -41,16 +41,16 @@ double GetDifficulty(const CBlockIndex* blockindex);
void RPCNotifyBlockChange(const CBlockIndex*); void RPCNotifyBlockChange(const CBlockIndex*);
/** Block description to JSON */ /** Block description to JSON */
UniValue blockToJSON(BlockManager& blockman, const CBlock& block, const CBlockIndex* tip, const CBlockIndex* blockindex, llmq::CChainLocksHandler& clhandler, llmq::CInstantSendManager& isman, bool txDetails = false) LOCKS_EXCLUDED(cs_main); UniValue blockToJSON(BlockManager& blockman, const CBlock& block, const CBlockIndex* tip, const CBlockIndex* blockindex, const llmq::CChainLocksHandler& clhandler, const llmq::CInstantSendManager& isman, bool txDetails = false) LOCKS_EXCLUDED(cs_main);
/** Mempool information to JSON */ /** Mempool information to JSON */
UniValue MempoolInfoToJSON(const CTxMemPool& pool, llmq::CInstantSendManager& isman); UniValue MempoolInfoToJSON(const CTxMemPool& pool, const llmq::CInstantSendManager& isman);
/** Mempool to JSON */ /** Mempool to JSON */
UniValue MempoolToJSON(const CTxMemPool& pool, llmq::CInstantSendManager* isman, bool verbose = false, bool include_mempool_sequence = false); UniValue MempoolToJSON(const CTxMemPool& pool, const llmq::CInstantSendManager* isman, bool verbose = false, bool include_mempool_sequence = false);
/** Block header to JSON */ /** Block header to JSON */
UniValue blockheaderToJSON(const CBlockIndex* tip, const CBlockIndex* blockindex, llmq::CChainLocksHandler& clhandler) LOCKS_EXCLUDED(cs_main); UniValue blockheaderToJSON(const CBlockIndex* tip, const CBlockIndex* blockindex, const llmq::CChainLocksHandler& clhandler) LOCKS_EXCLUDED(cs_main);
/** Used by getblockstats to get feerates at different percentiles by weight */ /** Used by getblockstats to get feerates at different percentiles by weight */
void CalculatePercentilesBySize(CAmount result[NUM_GETBLOCKSTATS_PERCENTILES], std::vector<std::pair<CAmount, int64_t>>& scores, int64_t total_size); void CalculatePercentilesBySize(CAmount result[NUM_GETBLOCKSTATS_PERCENTILES], std::vector<std::pair<CAmount, int64_t>>& scores, int64_t total_size);

View File

@ -368,7 +368,7 @@ static RPCHelpMan generateblock()
} }
CChainParams chainparams(Params()); CChainParams chainparams(Params());
LLMQContext& llmq_ctx = EnsureLLMQContext(node); const LLMQContext& llmq_ctx = EnsureLLMQContext(node);
ChainstateManager& chainman = EnsureChainman(node); ChainstateManager& chainman = EnsureChainman(node);
CChainState& active_chainstate = chainman.ActiveChainstate(); CChainState& active_chainstate = chainman.ActiveChainstate();
@ -709,7 +709,7 @@ static RPCHelpMan getblocktemplate()
return "duplicate-inconclusive"; return "duplicate-inconclusive";
} }
LLMQContext& llmq_ctx = EnsureLLMQContext(node); const LLMQContext& llmq_ctx = EnsureLLMQContext(node);
CBlockIndex* const pindexPrev = active_chain.Tip(); CBlockIndex* const pindexPrev = active_chain.Tip();
// TestBlockValidity only supports blocks built on the current Tip // TestBlockValidity only supports blocks built on the current Tip

View File

@ -60,7 +60,7 @@
#include <univalue.h> #include <univalue.h>
void TxToJSON(const CTransaction& tx, const uint256 hashBlock, CTxMemPool& mempool, CChainState& active_chainstate, llmq::CChainLocksHandler& clhandler, llmq::CInstantSendManager& isman, UniValue& entry) void TxToJSON(const CTransaction& tx, const uint256 hashBlock, const CTxMemPool& mempool, const CChainState& active_chainstate, const llmq::CChainLocksHandler& clhandler, const llmq::CInstantSendManager& isman, UniValue& entry)
{ {
LOCK(::cs_main); LOCK(::cs_main);
@ -264,8 +264,8 @@ static RPCHelpMan getrawtransaction()
return EncodeHexTx(*tx); return EncodeHexTx(*tx);
} }
LLMQContext& llmq_ctx = EnsureLLMQContext(node); const LLMQContext& llmq_ctx = EnsureLLMQContext(node);
CTxMemPool& mempool = EnsureMemPool(node); const CTxMemPool& mempool = EnsureMemPool(node);
UniValue result(UniValue::VOBJ); UniValue result(UniValue::VOBJ);
if (blockindex) result.pushKV("in_active_chain", in_active_chain); if (blockindex) result.pushKV("in_active_chain", in_active_chain);