rpc: factor out RpcInterruptionPoint from dumptxoutset

This commit is contained in:
MarcoFalke 2020-05-22 15:38:48 -04:00
parent b5c423c48e
commit fa7fc5a8e0
No known key found for this signature in database
GPG key ID: CE2B75697E69A548
3 changed files with 11 additions and 5 deletions

View file

@ -2329,9 +2329,7 @@ UniValue dumptxoutset(const JSONRPCRequest& request)
unsigned int iter{0};
while (pcursor->Valid()) {
if (iter % 5000 == 0 && !IsRPCRunning()) {
throw JSONRPCError(RPC_CLIENT_NOT_CONNECTED, "Shutting down");
}
if (iter % 5000 == 0) RpcInterruptionPoint();
++iter;
if (pcursor->GetKey(key) && pcursor->GetValue(coin)) {
afile << key;

View file

@ -11,9 +11,9 @@
#include <util/strencodings.h>
#include <util/system.h>
#include <boost/signals2/signal.hpp>
#include <boost/algorithm/string/classification.hpp>
#include <boost/algorithm/string/split.hpp>
#include <boost/signals2/signal.hpp>
#include <memory> // for unique_ptr
#include <unordered_map>
@ -309,6 +309,11 @@ bool IsRPCRunning()
return g_rpc_running;
}
void RpcInterruptionPoint()
{
if (!IsRPCRunning()) throw JSONRPCError(RPC_CLIENT_NOT_CONNECTED, "Shutting down");
}
void SetRPCWarmupStatus(const std::string& newStatus)
{
LOCK(cs_rpcWarmup);

View file

@ -9,10 +9,10 @@
#include <amount.h>
#include <rpc/request.h>
#include <functional>
#include <map>
#include <stdint.h>
#include <string>
#include <functional>
#include <univalue.h>
@ -29,6 +29,9 @@ namespace RPCServer
/** Query whether RPC is running */
bool IsRPCRunning();
/** Throw JSONRPCError if RPC is not running */
void RpcInterruptionPoint();
/**
* Set the RPC warmup status. When this is done, all RPC calls will error out
* immediately with RPC_IN_WARMUP.