Dash Core Source Documentation (0.16.0.1)

Find detailed information regarding the Dash Core source code.

server.cpp File Reference
#include <rpc/server.h>
#include <base58.h>
#include <fs.h>
#include <init.h>
#include <random.h>
#include <sync.h>
#include <ui_interface.h>
#include <util.h>
#include <utilstrencodings.h>
#include <boost/bind.hpp>
#include <boost/signals2/signal.hpp>
#include <boost/algorithm/string/case_conv.hpp>
#include <boost/algorithm/string/classification.hpp>
#include <boost/algorithm/string/split.hpp>
#include <algorithm>
#include <memory>
#include <unordered_map>
+ Include dependency graph for server.cpp:

Go to the source code of this file.

Classes

struct  CRPCSignals
 

Functions

static std::string rpcWarmupStatus ("RPC server started")
 
void RPCTypeCheck (const UniValue &params, const std::list< UniValue::VType > &typesExpected, bool fAllowNull)
 Type-check arguments; throws JSONRPCError if wrong type given. More...
 
void RPCTypeCheckArgument (const UniValue &value, UniValue::VType typeExpected)
 Type-check one argument; throws JSONRPCError if wrong type given. More...
 
void RPCTypeCheckObj (const UniValue &o, const std::map< std::string, UniValueType > &typesExpected, bool fAllowNull, bool fStrict)
 
CAmount AmountFromValue (const UniValue &value)
 
uint256 ParseHashV (const UniValue &v, std::string strName)
 Utilities: convert hex-encoded Values (throws error if not hex). More...
 
uint256 ParseHashO (const UniValue &o, std::string strKey)
 
std::vector< unsigned char > ParseHexV (const UniValue &v, std::string strName)
 
std::vector< unsigned char > ParseHexO (const UniValue &o, std::string strKey)
 
int32_t ParseInt32V (const UniValue &v, const std::string &strName)
 
int64_t ParseInt64V (const UniValue &v, const std::string &strName)
 
double ParseDoubleV (const UniValue &v, const std::string &strName)
 
bool ParseBoolV (const UniValue &v, const std::string &strName)
 
UniValue help (const JSONRPCRequest &jsonRequest)
 
UniValue stop (const JSONRPCRequest &jsonRequest)
 
UniValue uptime (const JSONRPCRequest &jsonRequest)
 
bool StartRPC ()
 
void InterruptRPC ()
 
void StopRPC ()
 
bool IsRPCRunning ()
 Query whether RPC is 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)
 
static UniValue JSONRPCExecOne (JSONRPCRequest jreq, const UniValue &req)
 
std::string JSONRPCExecBatch (const JSONRPCRequest &jreq, const UniValue &vReq)
 
static JSONRPCRequest transformNamedArguments (const JSONRPCRequest &in, const std::vector< std::string > &argNames)
 Process named arguments into a vector of positional arguments, based on the passed-in specification for the RPC call's arguments. More...
 
std::string HelpExampleCli (const std::string &methodname, const std::string &args)
 
std::string HelpExampleRpc (const std::string &methodname, const std::string &args)
 
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(void)> func, int64_t nSeconds)
 Run func nSeconds from now. More...
 

Variables

static bool fRPCRunning = false
 
static bool fRPCInWarmup = true
 
static CCriticalSection cs_rpcWarmup
 
static RPCTimerInterfacetimerInterface = nullptr
 
static std::map< std::string, std::unique_ptr< RPCTimerBase > > deadlineTimers
 
static struct CRPCSignals g_rpcSignals
 
static const CRPCCommand vRPCCommands []
 Call Table. More...
 
CRPCTable tableRPC
 

Function Documentation

◆ AmountFromValue()

CAmount AmountFromValue ( const UniValue value)

◆ help()

◆ HelpExampleCli()

std::string HelpExampleCli ( const std::string &  methodname,
const std::string &  args 
)

Definition at line 578 of file server.cpp.

Referenced by abandontransaction(), abortrescan(), addmultisigaddress(), addnode(), backupwallet(), bls_fromsecret_help(), bls_generate_help(), clearbanned(), combinerawtransaction(), createmultisig(), createrawtransaction(), debug(), decoderawtransaction(), decodescript(), disconnectnode(), dumphdinfo(), dumpprivkey(), dumpwallet(), encryptwallet(), estimatefee(), estimaterawfee(), estimatesmartfee(), fundrawtransaction(), getaccount(), getaccountaddress(), getaddednodeinfo(), getaddressbalance(), getaddressdeltas(), getaddressesbyaccount(), getaddressmempool(), getaddresstxids(), getaddressutxos(), getbalance(), getbestblockhash(), getbestchainlock(), getblock(), getblockchaininfo(), getblockcount(), getblockhash(), getblockhashes(), getblockheader(), getblockheaders(), getblockstats(), getblocktemplate(), getchaintips(), getchaintxstats(), getconnectioncount(), getdifficulty(), getgovernanceinfo(), getmemoryinfo(), getmempoolancestors(), getmempooldescendants(), getmempoolentry(), getmempoolinfo(), getmerkleblocks(), getmininginfo(), getnettotals(), getnetworkhashps(), getnetworkinfo(), getnewaddress(), getpeerinfo(), getprivatesendinfo(), getrawchangeaddress(), getrawmempool(), getrawtransaction(), getreceivedbyaccount(), getreceivedbyaddress(), getspecialtxes(), getspentinfo(), getsuperblockbudget(), gettransaction(), gettxout(), gettxoutproof(), gettxoutsetinfo(), getwalletinfo(), importaddress(), importelectrumwallet(), importmulti(), importprivkey(), importpubkey(), importwallet(), invalidateblock(), keypoolrefill(), listaccounts(), listaddressbalances(), listaddressgroupings(), listbanned(), listlockunspent(), listreceivedbyaccount(), listreceivedbyaddress(), listsinceblock(), listtransactions(), listunspent(), listwallets(), loadwallet(), lockunspent(), logging(), movecmd(), ping(), preciousblock(), prioritisetransaction(), protx_info_help(), pruneblockchain(), quorum_list_help(), reconsiderblock(), removeprunedfunds(), rescanblockchain(), savemempool(), sendfrom(), sendmany(), sendrawtransaction(), sendtoaddress(), setaccount(), setban(), setprivatesendamount(), setprivatesendrounds(), settxfee(), signmessage(), signmessagewithprivkey(), signrawtransaction(), spork(), submitblock(), uptime(), validateaddress(), verifychain(), verifymessage(), verifytxoutproof(), waitforblock(), waitforblockheight(), waitfornewblock(), walletlock(), walletpassphrase(), and walletpassphrasechange().

◆ HelpExampleRpc()

std::string HelpExampleRpc ( const std::string &  methodname,
const std::string &  args 
)

Definition at line 583 of file server.cpp.

References BaseParams(), gArgs, ArgsManager::GetArg(), and strprintf.

Referenced by abandontransaction(), abortrescan(), addmultisigaddress(), addnode(), backupwallet(), clearbanned(), createmultisig(), createrawtransaction(), debug(), decoderawtransaction(), decodescript(), disconnectnode(), dumphdinfo(), dumpprivkey(), dumpwallet(), encryptwallet(), getaccount(), getaccountaddress(), getaddednodeinfo(), getaddressbalance(), getaddressdeltas(), getaddressesbyaccount(), getaddressmempool(), getaddresstxids(), getaddressutxos(), getbalance(), getbestblockhash(), getbestchainlock(), getblock(), getblockchaininfo(), getblockcount(), getblockhash(), getblockhashes(), getblockheader(), getblockheaders(), getblockstats(), getblocktemplate(), getchaintips(), getchaintxstats(), getconnectioncount(), getdifficulty(), getgovernanceinfo(), getmemoryinfo(), getmempoolancestors(), getmempooldescendants(), getmempoolentry(), getmempoolinfo(), getmerkleblocks(), getmininginfo(), getnettotals(), getnetworkhashps(), getnetworkinfo(), getnewaddress(), getpeerinfo(), getprivatesendinfo(), getrawchangeaddress(), getrawmempool(), getrawtransaction(), getreceivedbyaccount(), getreceivedbyaddress(), getspecialtxes(), getspentinfo(), getsuperblockbudget(), gettransaction(), gettxout(), gettxoutproof(), gettxoutsetinfo(), getwalletinfo(), importaddress(), importelectrumwallet(), importprivkey(), importpubkey(), importwallet(), invalidateblock(), keypoolrefill(), listaccounts(), listaddressbalances(), listaddressgroupings(), listbanned(), listlockunspent(), listreceivedbyaccount(), listreceivedbyaddress(), listsinceblock(), listtransactions(), listunspent(), listwallets(), loadwallet(), lockunspent(), logging(), movecmd(), ping(), preciousblock(), prioritisetransaction(), pruneblockchain(), quorum_list_help(), reconsiderblock(), removeprunedfunds(), rescanblockchain(), savemempool(), sendfrom(), sendmany(), sendrawtransaction(), sendtoaddress(), setaccount(), setban(), setprivatesendamount(), setprivatesendrounds(), settxfee(), signmessage(), signmessagewithprivkey(), signrawtransaction(), spork(), submitblock(), uptime(), validateaddress(), verifychain(), verifymessage(), verifytxoutproof(), waitforblock(), waitforblockheight(), waitfornewblock(), walletlock(), walletpassphrase(), and walletpassphrasechange().

◆ InterruptRPC()

void InterruptRPC ( )

Definition at line 375 of file server.cpp.

References fRPCRunning, LogPrint, and BCLog::RPC.

Referenced by Interrupt().

◆ IsDeprecatedRPCEnabled()

bool IsDeprecatedRPCEnabled ( const std::string &  method)

Definition at line 447 of file server.cpp.

References gArgs, and ArgsManager::GetArgs().

Referenced by addmultisigaddress(), createmultisig(), estimatefee(), and getmininginfo().

◆ IsRPCRunning()

bool IsRPCRunning ( )

Query whether RPC is running.

Definition at line 390 of file server.cpp.

References fRPCRunning.

Referenced by CRPCTable::appendCommand(), getblocktemplate(), waitforblock(), waitforblockheight(), and waitfornewblock().

◆ JSONRPCExecBatch()

std::string JSONRPCExecBatch ( const JSONRPCRequest jreq,
const UniValue vReq 
)

◆ JSONRPCExecOne()

static UniValue JSONRPCExecOne ( JSONRPCRequest  jreq,
const UniValue req 
)
static

◆ ParseBoolV()

bool ParseBoolV ( const UniValue v,
const std::string &  strName 
)

◆ ParseDoubleV()

double ParseDoubleV ( const UniValue v,
const std::string &  strName 
)

Definition at line 170 of file server.cpp.

References UniValue::getValStr(), JSONRPCError(), ParseDouble(), and RPC_INVALID_PARAMETER.

Referenced by quorum_dkgsimerror().

◆ ParseHashO()

uint256 ParseHashO ( const UniValue o,
std::string  strKey 
)

Definition at line 134 of file server.cpp.

References find_value(), and ParseHashV().

Referenced by createrawtransaction(), and signrawtransaction().

◆ ParseHashV()

◆ ParseHexO()

std::vector<unsigned char> ParseHexO ( const UniValue o,
std::string  strKey 
)

Definition at line 147 of file server.cpp.

References find_value(), and ParseHexV().

Referenced by signrawtransaction().

◆ ParseHexV()

std::vector<unsigned char> ParseHexV ( const UniValue v,
std::string  strName 
)

◆ ParseInt32V()

int32_t ParseInt32V ( const UniValue v,
const std::string &  strName 
)

◆ ParseInt64V()

int64_t ParseInt64V ( const UniValue v,
const std::string &  strName 
)

Definition at line 161 of file server.cpp.

References UniValue::getValStr(), JSONRPCError(), ParseInt64(), and RPC_INVALID_PARAMETER.

◆ RPCIsInWarmup()

bool RPCIsInWarmup ( std::string *  outStatus)

Definition at line 408 of file server.cpp.

References cs_rpcWarmup, fRPCInWarmup, LOCK, and rpcWarmupStatus().

Referenced by CheckWarmup(), and PrepareShutdown().

◆ RPCRunLater()

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

Run func nSeconds from now.

Overrides previous timer <name> (if any).

Definition at line 607 of file server.cpp.

References deadlineTimers, JSONRPCError(), LogPrint, name, RPCTimerInterface::Name(), RPCTimerInterface::NewTimer(), BCLog::RPC, RPC_INTERNAL_ERROR, and timerInterface.

Referenced by walletpassphrase().

◆ RPCSetTimerInterface()

void RPCSetTimerInterface ( RPCTimerInterface iface)

Set the factory function for timers.

Definition at line 596 of file server.cpp.

References timerInterface.

Referenced by StartHTTPRPC().

◆ RPCSetTimerInterfaceIfUnset()

void RPCSetTimerInterfaceIfUnset ( RPCTimerInterface iface)

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

Definition at line 590 of file server.cpp.

References timerInterface.

Referenced by RPCConsole::RPCConsole().

◆ RPCTypeCheck()

void RPCTypeCheck ( const UniValue params,
const std::list< UniValue::VType > &  typesExpected,
bool  fAllowNull = false 
)

Type-check arguments; throws JSONRPCError if wrong type given.

Does not check that the right number of arguments are passed, just that any passed are the correct type.

Definition at line 54 of file server.cpp.

References UniValue::isNull(), RPCTypeCheckArgument(), and UniValue::size().

Referenced by createrawtransaction(), decoderawtransaction(), decodescript(), estimatefee(), estimaterawfee(), estimatesmartfee(), fundrawtransaction(), importmulti(), sendrawtransaction(), setmocktime(), and signrawtransaction().

◆ RPCTypeCheckArgument()

void RPCTypeCheckArgument ( const UniValue value,
UniValue::VType  typeExpected 
)

Type-check one argument; throws JSONRPCError if wrong type given.

Definition at line 72 of file server.cpp.

References JSONRPCError(), RPC_TYPE_ERROR, strprintf, UniValue::type(), and uvTypeName().

Referenced by estimaterawfee(), estimatesmartfee(), listunspent(), lockunspent(), and RPCTypeCheck().

◆ RPCTypeCheckObj()

void RPCTypeCheckObj ( const UniValue o,
const std::map< std::string, UniValueType > &  typesExpected,
bool  fAllowNull,
bool  fStrict 
)

◆ RPCUnsetTimerInterface()

void RPCUnsetTimerInterface ( RPCTimerInterface iface)

Unset factory function for timers.

Definition at line 601 of file server.cpp.

References timerInterface.

Referenced by StopHTTPRPC(), and RPCConsole::~RPCConsole().

◆ rpcWarmupStatus()

static std::string rpcWarmupStatus ( "RPC server started"  )
static

◆ SetRPCWarmupFinished()

void SetRPCWarmupFinished ( )

Definition at line 401 of file server.cpp.

References cs_rpcWarmup, fRPCInWarmup, and LOCK.

Referenced by AppInitMain().

◆ 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 395 of file server.cpp.

References cs_rpcWarmup, LOCK, and rpcWarmupStatus().

Referenced by AppInitMain().

◆ StartRPC()

bool StartRPC ( )

Definition at line 367 of file server.cpp.

References fRPCRunning, g_rpcSignals, LogPrint, BCLog::RPC, and CRPCSignals::Started.

Referenced by AppInitServers().

◆ stop()

◆ StopRPC()

void StopRPC ( )

◆ transformNamedArguments()

static JSONRPCRequest transformNamedArguments ( const JSONRPCRequest in,
const std::vector< std::string > &  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 490 of file server.cpp.

References UniValue::getKeys(), UniValue::getValues(), JSONRPCError(), JSONRPCRequest::params, UniValue::push_back(), RPC_INVALID_PARAMETER, and UniValue::VARR.

Referenced by CRPCTable::execute().

◆ uptime()

Variable Documentation

◆ cs_rpcWarmup

CCriticalSection cs_rpcWarmup
static

◆ deadlineTimers

std::map<std::string, std::unique_ptr<RPCTimerBase> > deadlineTimers
static

Definition at line 35 of file server.cpp.

Referenced by RPCRunLater(), and StopRPC().

◆ fRPCInWarmup

bool fRPCInWarmup = true
static

◆ fRPCRunning

bool fRPCRunning = false
static

Definition at line 28 of file server.cpp.

Referenced by InterruptRPC(), IsRPCRunning(), and StartRPC().

◆ g_rpcSignals

◆ tableRPC

◆ timerInterface

RPCTimerInterface* timerInterface = nullptr
static

◆ vRPCCommands

const CRPCCommand vRPCCommands[]
static
Initial value:
=
{
{ "control", "help", &help, {"command"} },
{ "control", "stop", &stop, {"wait"} },
{ "control", "uptime", &uptime, {} },
}
UniValue uptime(const JSONRPCRequest &jsonRequest)
Definition: server.cpp:305
UniValue help(const JSONRPCRequest &jsonRequest)
Definition: server.cpp:263
UniValue stop(const JSONRPCRequest &jsonRequest)
Definition: server.cpp:286

Call Table.

Definition at line 324 of file server.cpp.

Referenced by CRPCTable::CRPCTable().

Released under the MIT license