From 835cee229a49db9f9ac708d7a259ed62d981b23a Mon Sep 17 00:00:00 2001 From: Dave Collins Date: Tue, 31 Dec 2013 14:48:50 -0600 Subject: [PATCH] Move RPC handler maps near the top of file. Since the command to handler mappings are the most often modified and referenced code in rpcserver.go and rpcwebsocket.go, move them near the top of their respective files. --- rpcserver.go | 156 ++++++++++++++++++++++++------------------------ rpcwebsocket.go | 24 ++++---- 2 files changed, 91 insertions(+), 89 deletions(-) diff --git a/rpcserver.go b/rpcserver.go index 20d631e2..0a6ea249 100644 --- a/rpcserver.go +++ b/rpcserver.go @@ -45,6 +45,84 @@ var ( ErrBadParamsField = errors.New("bad params field") ) +type commandHandler func(*rpcServer, btcjson.Cmd) (interface{}, error) + +// handlers maps RPC command strings to appropriate handler functions. +var handlers = map[string]commandHandler{ + "addmultisigaddress": handleAskWallet, + "addnode": handleAddNode, + "backupwallet": handleAskWallet, + "createmultisig": handleAskWallet, + "createrawtransaction": handleUnimplemented, + "debuglevel": handleDebugLevel, + "decoderawtransaction": handleDecodeRawTransaction, + "decodescript": handleUnimplemented, + "dumpprivkey": handleAskWallet, + "dumpwallet": handleAskWallet, + "encryptwallet": handleAskWallet, + "getaccount": handleAskWallet, + "getaccountaddress": handleAskWallet, + "getaddednodeinfo": handleUnimplemented, + "getaddressesbyaccount": handleAskWallet, + "getbalance": handleAskWallet, + "getbestblockhash": handleGetBestBlockHash, + "getblock": handleGetBlock, + "getblockcount": handleGetBlockCount, + "getblockhash": handleGetBlockHash, + "getblocktemplate": handleUnimplemented, + "getconnectioncount": handleGetConnectionCount, + "getdifficulty": handleGetDifficulty, + "getgenerate": handleGetGenerate, + "gethashespersec": handleGetHashesPerSec, + "getinfo": handleUnimplemented, + "getmininginfo": handleUnimplemented, + "getnettotals": handleUnimplemented, + "getnetworkhashps": handleUnimplemented, + "getnewaddress": handleUnimplemented, + "getpeerinfo": handleGetPeerInfo, + "getrawchangeaddress": handleAskWallet, + "getrawmempool": handleGetRawMempool, + "getrawtransaction": handleGetRawTransaction, + "getreceivedbyaccount": handleAskWallet, + "getreceivedbyaddress": handleAskWallet, + "gettransaction": handleAskWallet, + "gettxout": handleAskWallet, + "gettxoutsetinfo": handleAskWallet, + "getwork": handleUnimplemented, + "help": handleUnimplemented, + "importprivkey": handleAskWallet, + "importwallet": handleAskWallet, + "keypoolrefill": handleAskWallet, + "listaccounts": handleAskWallet, + "listaddressgroupings": handleAskWallet, + "listlockunspent": handleAskWallet, + "listreceivedbyaccount": handleAskWallet, + "listreceivedbyaddress": handleAskWallet, + "listsinceblock": handleAskWallet, + "listtransactions": handleAskWallet, + "listunspent": handleAskWallet, + "lockunspent": handleAskWallet, + "move": handleAskWallet, + "ping": handleUnimplemented, + "sendfrom": handleAskWallet, + "sendmany": handleAskWallet, + "sendrawtransaction": handleSendRawTransaction, + "sendtoaddress": handleAskWallet, + "setaccount": handleAskWallet, + "setgenerate": handleSetGenerate, + "settxfee": handleAskWallet, + "signmessage": handleAskWallet, + "signrawtransaction": handleAskWallet, + "stop": handleStop, + "submitblock": handleUnimplemented, + "validateaddress": handleAskWallet, + "verifychain": handleVerifyChain, + "verifymessage": handleAskWallet, + "walletlock": handleAskWallet, + "walletpassphrase": handleAskWallet, + "walletpassphrasechange": handleAskWallet, +} + // rpcServer holds the items the rpc server may need to access (config, // shutdown, main server, etc.) type rpcServer struct { @@ -341,84 +419,6 @@ func jsonRPCRead(w http.ResponseWriter, r *http.Request, s *rpcServer) { rpcsLog.Debugf(msg) } -type commandHandler func(*rpcServer, btcjson.Cmd) (interface{}, error) - -// handlers maps RPC command strings to appropriate handler functions. -var handlers = map[string]commandHandler{ - "addmultisigaddress": handleAskWallet, - "addnode": handleAddNode, - "backupwallet": handleAskWallet, - "createmultisig": handleAskWallet, - "createrawtransaction": handleUnimplemented, - "debuglevel": handleDebugLevel, - "decoderawtransaction": handleDecodeRawTransaction, - "decodescript": handleUnimplemented, - "dumpprivkey": handleAskWallet, - "dumpwallet": handleAskWallet, - "encryptwallet": handleAskWallet, - "getaccount": handleAskWallet, - "getaccountaddress": handleAskWallet, - "getaddednodeinfo": handleUnimplemented, - "getaddressesbyaccount": handleAskWallet, - "getbalance": handleAskWallet, - "getbestblockhash": handleGetBestBlockHash, - "getblock": handleGetBlock, - "getblockcount": handleGetBlockCount, - "getblockhash": handleGetBlockHash, - "getblocktemplate": handleUnimplemented, - "getconnectioncount": handleGetConnectionCount, - "getdifficulty": handleGetDifficulty, - "getgenerate": handleGetGenerate, - "gethashespersec": handleGetHashesPerSec, - "getinfo": handleUnimplemented, - "getmininginfo": handleUnimplemented, - "getnettotals": handleUnimplemented, - "getnetworkhashps": handleUnimplemented, - "getnewaddress": handleUnimplemented, - "getpeerinfo": handleGetPeerInfo, - "getrawchangeaddress": handleAskWallet, - "getrawmempool": handleGetRawMempool, - "getrawtransaction": handleGetRawTransaction, - "getreceivedbyaccount": handleAskWallet, - "getreceivedbyaddress": handleAskWallet, - "gettransaction": handleAskWallet, - "gettxout": handleAskWallet, - "gettxoutsetinfo": handleAskWallet, - "getwork": handleUnimplemented, - "help": handleUnimplemented, - "importprivkey": handleAskWallet, - "importwallet": handleAskWallet, - "keypoolrefill": handleAskWallet, - "listaccounts": handleAskWallet, - "listaddressgroupings": handleAskWallet, - "listlockunspent": handleAskWallet, - "listreceivedbyaccount": handleAskWallet, - "listreceivedbyaddress": handleAskWallet, - "listsinceblock": handleAskWallet, - "listtransactions": handleAskWallet, - "listunspent": handleAskWallet, - "lockunspent": handleAskWallet, - "move": handleAskWallet, - "ping": handleUnimplemented, - "sendfrom": handleAskWallet, - "sendmany": handleAskWallet, - "sendrawtransaction": handleSendRawTransaction, - "sendtoaddress": handleAskWallet, - "setaccount": handleAskWallet, - "setgenerate": handleSetGenerate, - "settxfee": handleAskWallet, - "signmessage": handleAskWallet, - "signrawtransaction": handleAskWallet, - "stop": handleStop, - "submitblock": handleUnimplemented, - "validateaddress": handleAskWallet, - "verifychain": handleVerifyChain, - "verifymessage": handleAskWallet, - "walletlock": handleAskWallet, - "walletpassphrase": handleAskWallet, - "walletpassphrasechange": handleAskWallet, -} - // handleUnimplemented is a temporary handler for commands that we should // support but do not. func handleUnimplemented(s *rpcServer, cmd btcjson.Cmd) (interface{}, error) { diff --git a/rpcwebsocket.go b/rpcwebsocket.go index bc9c6a8e..075940c8 100644 --- a/rpcwebsocket.go +++ b/rpcwebsocket.go @@ -19,6 +19,19 @@ import ( "sync" ) +type wsCommandHandler func(*rpcServer, btcjson.Cmd, chan []byte, *requestContexts) error + +// wsHandlers maps RPC command strings to appropriate websocket handler +// functions. +var wsHandlers = map[string]wsCommandHandler{ + "getcurrentnet": handleGetCurrentNet, + "getbestblock": handleGetBestBlock, + "notifynewtxs": handleNotifyNewTXs, + "notifyspent": handleNotifySpent, + "rescan": handleRescan, + "sendrawtransaction:": handleWalletSendRawTransaction, +} + // wsContext holds the items the RPC server needs to handle websocket // connections for wallets. type wsContext struct { @@ -225,17 +238,6 @@ type requestContexts struct { minedTxRequests map[btcwire.ShaHash]bool } -type wsCommandHandler func(*rpcServer, btcjson.Cmd, chan []byte, *requestContexts) error - -var wsHandlers = map[string]wsCommandHandler{ - "getcurrentnet": handleGetCurrentNet, - "getbestblock": handleGetBestBlock, - "notifynewtxs": handleNotifyNewTXs, - "notifyspent": handleNotifySpent, - "rescan": handleRescan, - "sendrawtransaction:": handleWalletSendRawTransaction, -} - // respondToAnyCmd checks that a parsed command is a standard or // extension JSON-RPC command and runs the proper handler to reply to // the command. Any and all responses are sent to the wallet from