// Copyright (c) 2010 Satoshi Nakamoto // Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying // file license.txt or http://www.opensource.org/licenses/mit-license.php. #ifndef _BITCOINRPC_H_ #define _BITCOINRPC_H_ 1 #include #include #include "json/json_spirit_reader_template.h" #include "json/json_spirit_writer_template.h" #include "json/json_spirit_utils.h" void ThreadRPCServer(void* parg); int CommandLineRPC(int argc, char *argv[]); /** Convert parameter values for RPC call from strings to command-specific JSON objects. */ json_spirit::Array RPCConvertValues(const std::string &strMethod, const std::vector &strParams); typedef json_spirit::Value(*rpcfn_type)(const json_spirit::Array& params, bool fHelp); class CRPCCommand { public: std::string name; rpcfn_type actor; bool okSafeMode; }; /** * Bitcoin RPC command dispatcher. */ class CRPCTable { private: std::map mapCommands; public: CRPCTable(); const CRPCCommand* operator[](std::string name) const; std::string help(std::string name) const; /** * Execute a method. * @param method Method to execute * @param params Array of arguments (JSON objects) * @returns Result of the call. * @throws an exception (json_spirit::Value) when an error happens. */ json_spirit::Value execute(const std::string &method, const json_spirit::Array ¶ms) const; }; extern const CRPCTable tableRPC; #endif