mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-01-25 18:53:23 -03:00
refactor: Add RPC server ExecuteCommands function
No change in behavior. New function is split from CRPCTable::execute and used in the next commit.
This commit is contained in:
parent
6158a6d397
commit
14f3d9b908
1 changed files with 12 additions and 4 deletions
|
@ -437,6 +437,16 @@ static inline JSONRPCRequest transformNamedArguments(const JSONRPCRequest& in, c
|
|||
return out;
|
||||
}
|
||||
|
||||
static bool ExecuteCommands(const std::vector<const CRPCCommand*>& commands, const JSONRPCRequest& request, UniValue& result)
|
||||
{
|
||||
for (const auto& command : commands) {
|
||||
if (ExecuteCommand(*command, request, result, &command == &commands.back())) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
UniValue CRPCTable::execute(const JSONRPCRequest &request) const
|
||||
{
|
||||
// Return immediately if in warmup
|
||||
|
@ -450,10 +460,8 @@ UniValue CRPCTable::execute(const JSONRPCRequest &request) const
|
|||
auto it = mapCommands.find(request.strMethod);
|
||||
if (it != mapCommands.end()) {
|
||||
UniValue result;
|
||||
for (const auto& command : it->second) {
|
||||
if (ExecuteCommand(*command, request, result, &command == &it->second.back())) {
|
||||
return result;
|
||||
}
|
||||
if (ExecuteCommands(it->second, request, result)) {
|
||||
return result;
|
||||
}
|
||||
}
|
||||
throw JSONRPCError(RPC_METHOD_NOT_FOUND, "Method not found");
|
||||
|
|
Loading…
Add table
Reference in a new issue