Bitcoin Core 29.99.0
P2P Digital Currency
Classes | Functions | Variables
server.cpp File Reference
#include <bitcoin-build-config.h>
#include <rpc/server.h>
#include <common/args.h>
#include <common/system.h>
#include <logging.h>
#include <node/context.h>
#include <node/kernel_notifications.h>
#include <rpc/server_util.h>
#include <rpc/util.h>
#include <sync.h>
#include <util/signalinterrupt.h>
#include <util/strencodings.h>
#include <util/string.h>
#include <util/time.h>
#include <validation.h>
#include <cassert>
#include <chrono>
#include <memory>
#include <mutex>
#include <unordered_map>
Include dependency graph for server.cpp:

Go to the source code of this file.

Classes

struct  RPCCommandExecutionInfo
 
struct  RPCServerInfo
 
struct  RPCCommandExecution
 

Functions

static bool fRPCInWarmup GUARDED_BY (g_rpc_warmup_mutex) = "RPC server started"
 
static std::map< std::string, std::unique_ptr< RPCTimerBase > > deadlineTimers GUARDED_BY (g_deadline_timers_mutex)
 
static bool ExecuteCommand (const CRPCCommand &command, const JSONRPCRequest &request, UniValue &result, bool last_handler)
 
static RPCHelpMan help ()
 
static RPCHelpMan stop ()
 
static RPCHelpMan uptime ()
 
static RPCHelpMan getrpcinfo ()
 
void StartRPC ()
 
void InterruptRPC ()
 
void StopRPC ()
 
bool IsRPCRunning ()
 Query whether RPC is running. More...
 
void RpcInterruptionPoint ()
 Throw JSONRPCError if RPC is not running. More...
 
void SetRPCWarmupStatus (const std::string &newStatus)
 Set the RPC warmup status. More...
 
void SetRPCWarmupFinished ()
 
bool RPCIsInWarmup (std::string *outStatus)
 
bool IsDeprecatedRPCEnabled (const std::string &method)
 
UniValue JSONRPCExec (const JSONRPCRequest &jreq, bool catch_errors)
 
static JSONRPCRequest transformNamedArguments (const JSONRPCRequest &in, const std::vector< std::pair< std::string, bool > > &argNames)
 Process named arguments into a vector of positional arguments, based on the passed-in specification for the RPC call's arguments. More...
 
static bool ExecuteCommands (const std::vector< const CRPCCommand * > &commands, const JSONRPCRequest &request, UniValue &result)
 
void RPCSetTimerInterfaceIfUnset (RPCTimerInterface *iface)
 Set the factory function for timer, but only, if unset. More...
 
void RPCSetTimerInterface (RPCTimerInterface *iface)
 Set the factory function for timers. More...
 
void RPCUnsetTimerInterface (RPCTimerInterface *iface)
 Unset factory function for timers. More...
 
void RPCRunLater (const std::string &name, std::function< void()> func, int64_t nSeconds)
 Run func nSeconds from now. More...
 

Variables

static GlobalMutex g_rpc_warmup_mutex
 
static std::atomic< bool > g_rpc_running {false}
 
static RPCTimerInterfacetimerInterface = nullptr
 
static GlobalMutex g_deadline_timers_mutex
 
static RPCServerInfo g_rpc_server_info
 
static const CRPCCommand vRPCCommands []
 
CRPCTable tableRPC
 

Function Documentation

◆ ExecuteCommand()

static bool ExecuteCommand ( const CRPCCommand command,
const JSONRPCRequest request,
UniValue result,
bool  last_handler 
)
static

Definition at line 508 of file server.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ExecuteCommands()

static bool ExecuteCommands ( const std::vector< const CRPCCommand * > &  commands,
const JSONRPCRequest request,
UniValue result 
)
static

Definition at line 478 of file server.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ getrpcinfo()

static RPCHelpMan getrpcinfo ( )
static

Definition at line 203 of file server.cpp.

Here is the call graph for this function:

◆ GUARDED_BY() [1/2]

static std::map< std::string, std::unique_ptr< RPCTimerBase > > deadlineTimers GUARDED_BY ( g_deadline_timers_mutex  )
static

◆ GUARDED_BY() [2/2]

static std::string rpcWarmupStatus GUARDED_BY ( g_rpc_warmup_mutex  ) = "RPC server started"
static

◆ help()

static RPCHelpMan help ( )
static

Definition at line 127 of file server.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ InterruptRPC()

void InterruptRPC ( )

Definition at line 290 of file server.cpp.

Here is the caller graph for this function:

◆ IsDeprecatedRPCEnabled()

bool IsDeprecatedRPCEnabled ( const std::string &  method)

Definition at line 345 of file server.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ IsRPCRunning()

bool IsRPCRunning ( )

Query whether RPC is running.

Definition at line 314 of file server.cpp.

Here is the caller graph for this function:

◆ JSONRPCExec()

UniValue JSONRPCExec ( const JSONRPCRequest jreq,
bool  catch_errors 
)

Definition at line 352 of file server.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ RpcInterruptionPoint()

void RpcInterruptionPoint ( )

Throw JSONRPCError if RPC is not running.

Definition at line 319 of file server.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ RPCIsInWarmup()

bool RPCIsInWarmup ( std::string *  outStatus)

Definition at line 337 of file server.cpp.

Here is the caller graph for this function:

◆ RPCRunLater()

void RPCRunLater ( const std::string &  name,
std::function< void()>  func,
int64_t  nSeconds 
)

Run func nSeconds from now.

Overrides previous timer <name> (if any).

Definition at line 567 of file server.cpp.

Here is the call graph for this function:

◆ RPCSetTimerInterface()

void RPCSetTimerInterface ( RPCTimerInterface iface)

Set the factory function for timers.

Definition at line 556 of file server.cpp.

Here is the caller graph for this function:

◆ RPCSetTimerInterfaceIfUnset()

void RPCSetTimerInterfaceIfUnset ( RPCTimerInterface iface)

Set the factory function for timer, but only, if unset.

Definition at line 550 of file server.cpp.

◆ RPCUnsetTimerInterface()

void RPCUnsetTimerInterface ( RPCTimerInterface iface)

Unset factory function for timers.

Definition at line 561 of file server.cpp.

Here is the caller graph for this function:

◆ SetRPCWarmupFinished()

void SetRPCWarmupFinished ( )

Definition at line 330 of file server.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ SetRPCWarmupStatus()

void SetRPCWarmupStatus ( const std::string &  newStatus)

Set the RPC warmup status.

When this is done, all RPC calls will error out immediately with RPC_IN_WARMUP.

Definition at line 324 of file server.cpp.

Here is the caller graph for this function:

◆ StartRPC()

void StartRPC ( )

Definition at line 284 of file server.cpp.

Here is the caller graph for this function:

◆ stop()

static RPCHelpMan stop ( )
static

Definition at line 156 of file server.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ StopRPC()

void StopRPC ( )

Definition at line 301 of file server.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ transformNamedArguments()

static JSONRPCRequest transformNamedArguments ( const JSONRPCRequest in,
const std::vector< std::pair< std::string, bool > > &  argNames 
)
inlinestatic

Process named arguments into a vector of positional arguments, based on the passed-in specification for the RPC call's arguments.

Definition at line 374 of file server.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ uptime()

static RPCHelpMan uptime ( )
static

Definition at line 183 of file server.cpp.

Here is the call graph for this function:

Variable Documentation

◆ g_deadline_timers_mutex

GlobalMutex g_deadline_timers_mutex
static

Definition at line 39 of file server.cpp.

◆ g_rpc_running

std::atomic<bool> g_rpc_running {false}
static

Definition at line 33 of file server.cpp.

◆ g_rpc_server_info

RPCServerInfo g_rpc_server_info
static

Definition at line 55 of file server.cpp.

◆ g_rpc_warmup_mutex

GlobalMutex g_rpc_warmup_mutex
static

Definition at line 32 of file server.cpp.

◆ tableRPC

CRPCTable tableRPC

Definition at line 577 of file server.cpp.

◆ timerInterface

RPCTimerInterface* timerInterface = nullptr
static

Definition at line 37 of file server.cpp.

◆ vRPCCommands

const CRPCCommand vRPCCommands[]
static
Initial value:
{
{"control", &getrpcinfo},
{"control", &help},
{"control", &stop},
{"control", &uptime},
}
static RPCHelpMan uptime()
Definition: server.cpp:183
static RPCHelpMan getrpcinfo()
Definition: server.cpp:203
static RPCHelpMan stop()
Definition: server.cpp:156
static RPCHelpMan help()
Definition: server.cpp:127

Definition at line 249 of file server.cpp.