aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--rpc/json.go50
-rw-r--r--rpc/packages.go47
-rw-r--r--rpc/server.go2
3 files changed, 48 insertions, 51 deletions
diff --git a/rpc/json.go b/rpc/json.go
index dc37a7cb7..5446cb3c1 100644
--- a/rpc/json.go
+++ b/rpc/json.go
@@ -54,54 +54,4 @@ func (self jsonWrapper) ParseRequestBody(req *http.Request) (RpcRequest, error)
return reqParsed, nil
}
-func (self jsonWrapper) GetRequestReply(xeth *EthereumApi, req *RpcRequest, reply *interface{}) error {
- // Spec at https://github.com/ethereum/wiki/wiki/Generic-JSON-RPC
- jsonlogger.DebugDetailf("%T %s", req.Params, req.Params)
- switch req.Method {
- case "eth_coinbase":
- return xeth.GetCoinbase(reply)
- case "eth_listening":
- return xeth.GetIsListening(reply)
- case "eth_mining":
- return xeth.GetIsMining(reply)
- case "eth_peerCount":
- return xeth.GetPeerCount(reply)
- case "eth_countAt":
- args, err := req.ToGetTxCountArgs()
- if err != nil {
- return err
- }
- return xeth.GetTxCountAt(args, reply)
- case "eth_codeAt":
- args, err := req.ToGetCodeAtArgs()
- if err != nil {
- return err
- }
- return xeth.GetCodeAt(args, reply)
- case "eth_balanceAt":
- args, err := req.ToGetBalanceArgs()
- if err != nil {
- return err
- }
- return xeth.GetBalanceAt(args, reply)
- case "eth_stateAt":
- args, err := req.ToGetStorageArgs()
- if err != nil {
- return err
- }
- return xeth.GetStorageAt(args, reply)
- case "eth_blockByNumber", "eth_blockByHash":
- args, err := req.ToGetBlockArgs()
- if err != nil {
- return err
- }
- return xeth.GetBlock(args, reply)
- default:
- return NewErrorResponse(ErrorNotImplemented)
- }
-
- jsonlogger.DebugDetailf("Reply: %T %s", reply, reply)
- return nil
-}
-
var JSON jsonWrapper
diff --git a/rpc/packages.go b/rpc/packages.go
index 34a4467b1..e87e0db7c 100644
--- a/rpc/packages.go
+++ b/rpc/packages.go
@@ -157,5 +157,52 @@ func (p *EthereumApi) GetCodeAt(args *GetCodeAtArgs, reply *interface{}) error {
return nil
}
+func (p *EthereumApi) GetRequestReply(req *RpcRequest, reply *interface{}) error {
+ // Spec at https://github.com/ethereum/wiki/wiki/Generic-JSON-RPC
+ jsonlogger.DebugDetailf("%T %s", req.Params, req.Params)
+ switch req.Method {
+ case "eth_coinbase":
+ return p.GetCoinbase(reply)
+ case "eth_listening":
+ return p.GetIsListening(reply)
+ case "eth_mining":
+ return p.GetIsMining(reply)
+ case "eth_peerCount":
+ return p.GetPeerCount(reply)
+ case "eth_countAt":
+ args, err := req.ToGetTxCountArgs()
+ if err != nil {
+ return err
+ }
+ return p.GetTxCountAt(args, reply)
+ case "eth_codeAt":
+ args, err := req.ToGetCodeAtArgs()
+ if err != nil {
+ return err
+ }
+ return p.GetCodeAt(args, reply)
+ case "eth_balanceAt":
+ args, err := req.ToGetBalanceArgs()
+ if err != nil {
+ return err
+ }
+ return p.GetBalanceAt(args, reply)
+ case "eth_stateAt":
+ args, err := req.ToGetStorageArgs()
+ if err != nil {
+ return err
+ }
+ return p.GetStorageAt(args, reply)
+ case "eth_blockByNumber", "eth_blockByHash":
+ args, err := req.ToGetBlockArgs()
+ if err != nil {
+ return err
+ }
+ return p.GetBlock(args, reply)
+ default:
+ return NewErrorResponse(ErrorNotImplemented)
+ }
+
+ jsonlogger.DebugDetailf("Reply: %T %s", reply, reply)
return nil
}
diff --git a/rpc/server.go b/rpc/server.go
index d14f50f24..a4cf1aa7c 100644
--- a/rpc/server.go
+++ b/rpc/server.go
@@ -89,7 +89,7 @@ func apiHandler(xeth *EthereumApi) http.Handler {
}
var response interface{}
- reserr := JSON.GetRequestReply(xeth, &reqParsed, &response)
+ reserr := xeth.GetRequestReply(&reqParsed, &response)
if reserr != nil {
jsonlogger.Errorln(reserr)
JSON.Send(w, &RpcErrorResponse{JsonRpc: reqParsed.JsonRpc, ID: reqParsed.ID, Error: true, ErrorText: reserr.Error()})