Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
G
Geth-Modification
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
张蕾
Geth-Modification
Commits
52ccaa60
Commit
52ccaa60
authored
Feb 24, 2015
by
Jeffrey Wilcke
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #379 from tgerring/rpcupdates
RPC cleanup
parents
ed90efb0
2e3a6e25
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
127 additions
and
170 deletions
+127
-170
api.go
rpc/api.go
+38
-40
api_test.go
rpc/api_test.go
+0
-0
args.go
rpc/args.go
+18
-48
server.go
rpc/http/server.go
+1
-1
messages.go
rpc/messages.go
+69
-80
server.go
rpc/ws/server.go
+1
-1
No files found.
rpc/
packages
.go
→
rpc/
api
.go
View file @
52ccaa60
...
@@ -9,7 +9,6 @@ For each request type, define the following:
...
@@ -9,7 +9,6 @@ For each request type, define the following:
package
rpc
package
rpc
import
(
import
(
"fmt"
"math/big"
"math/big"
"strings"
"strings"
"sync"
"sync"
...
@@ -26,8 +25,9 @@ import (
...
@@ -26,8 +25,9 @@ import (
)
)
var
(
var
(
defaultGasPrice
=
big
.
NewInt
(
10000000000000
)
defaultGasPrice
=
big
.
NewInt
(
10000000000000
)
defaultGas
=
big
.
NewInt
(
10000
)
defaultGas
=
big
.
NewInt
(
10000
)
filterTickerTime
=
15
*
time
.
Second
)
)
type
EthereumApi
struct
{
type
EthereumApi
struct
{
...
@@ -63,6 +63,39 @@ func NewEthereumApi(eth *xeth.XEth) *EthereumApi {
...
@@ -63,6 +63,39 @@ func NewEthereumApi(eth *xeth.XEth) *EthereumApi {
return
api
return
api
}
}
func
(
self
*
EthereumApi
)
start
()
{
timer
:=
time
.
NewTicker
(
filterTickerTime
)
done
:
for
{
select
{
case
<-
timer
.
C
:
self
.
logMut
.
Lock
()
self
.
messagesMut
.
Lock
()
for
id
,
filter
:=
range
self
.
logs
{
if
time
.
Since
(
filter
.
timeout
)
>
20
*
time
.
Second
{
self
.
filterManager
.
UninstallFilter
(
id
)
delete
(
self
.
logs
,
id
)
}
}
for
id
,
filter
:=
range
self
.
messages
{
if
time
.
Since
(
filter
.
timeout
)
>
20
*
time
.
Second
{
self
.
xeth
.
Whisper
()
.
Unwatch
(
id
)
delete
(
self
.
messages
,
id
)
}
}
self
.
logMut
.
Unlock
()
self
.
messagesMut
.
Unlock
()
case
<-
self
.
quit
:
break
done
}
}
}
func
(
self
*
EthereumApi
)
stop
()
{
close
(
self
.
quit
)
}
func
(
self
*
EthereumApi
)
Register
(
args
string
,
reply
*
interface
{})
error
{
func
(
self
*
EthereumApi
)
Register
(
args
string
,
reply
*
interface
{})
error
{
self
.
regmut
.
Lock
()
self
.
regmut
.
Lock
()
defer
self
.
regmut
.
Unlock
()
defer
self
.
regmut
.
Unlock
()
...
@@ -410,7 +443,7 @@ func (p *EthereumApi) WhisperMessages(id int, reply *interface{}) error {
...
@@ -410,7 +443,7 @@ func (p *EthereumApi) WhisperMessages(id int, reply *interface{}) error {
}
}
func
(
p
*
EthereumApi
)
GetRequestReply
(
req
*
RpcRequest
,
reply
*
interface
{})
error
{
func
(
p
*
EthereumApi
)
GetRequestReply
(
req
*
RpcRequest
,
reply
*
interface
{})
error
{
// Spec at https://github.com/ethereum/wiki/wiki/Generic-ON-RPC
// Spec at https://github.com/ethereum/wiki/wiki/Generic-
JS
ON-RPC
rpclogger
.
DebugDetailf
(
"%T %s"
,
req
.
Params
,
req
.
Params
)
rpclogger
.
DebugDetailf
(
"%T %s"
,
req
.
Params
,
req
.
Params
)
switch
req
.
Method
{
switch
req
.
Method
{
case
"eth_coinbase"
:
case
"eth_coinbase"
:
...
@@ -595,44 +628,9 @@ func (p *EthereumApi) GetRequestReply(req *RpcRequest, reply *interface{}) error
...
@@ -595,44 +628,9 @@ func (p *EthereumApi) GetRequestReply(req *RpcRequest, reply *interface{}) error
}
}
return
p
.
WhisperMessages
(
args
,
reply
)
return
p
.
WhisperMessages
(
args
,
reply
)
default
:
default
:
return
NewError
Response
(
fmt
.
Sprintf
(
"%v %s"
,
ErrorNotImplemented
,
req
.
Method
)
)
return
NewError
WithMessage
(
errNotImplemented
,
req
.
Method
)
}
}
rpclogger
.
DebugDetailf
(
"Reply: %T %s"
,
reply
,
reply
)
rpclogger
.
DebugDetailf
(
"Reply: %T %s"
,
reply
,
reply
)
return
nil
return
nil
}
}
var
filterTickerTime
=
15
*
time
.
Second
func
(
self
*
EthereumApi
)
start
()
{
timer
:=
time
.
NewTicker
(
filterTickerTime
)
done
:
for
{
select
{
case
<-
timer
.
C
:
self
.
logMut
.
Lock
()
self
.
messagesMut
.
Lock
()
for
id
,
filter
:=
range
self
.
logs
{
if
time
.
Since
(
filter
.
timeout
)
>
20
*
time
.
Second
{
self
.
filterManager
.
UninstallFilter
(
id
)
delete
(
self
.
logs
,
id
)
}
}
for
id
,
filter
:=
range
self
.
messages
{
if
time
.
Since
(
filter
.
timeout
)
>
20
*
time
.
Second
{
self
.
xeth
.
Whisper
()
.
Unwatch
(
id
)
delete
(
self
.
messages
,
id
)
}
}
self
.
logMut
.
Unlock
()
self
.
messagesMut
.
Unlock
()
case
<-
self
.
quit
:
break
done
}
}
}
func
(
self
*
EthereumApi
)
stop
()
{
close
(
self
.
quit
)
}
rpc/
packages
_test.go
→
rpc/
api
_test.go
View file @
52ccaa60
File moved
rpc/args.go
View file @
52ccaa60
...
@@ -19,7 +19,7 @@ func (obj *GetBlockArgs) UnmarshalJSON(b []byte) (err error) {
...
@@ -19,7 +19,7 @@ func (obj *GetBlockArgs) UnmarshalJSON(b []byte) (err error) {
obj
.
Hash
=
argstr
obj
.
Hash
=
argstr
return
return
}
}
return
NewErrorResponse
(
ErrorDecodeArgs
)
return
errDecodeArgs
}
}
type
NewTxArgs
struct
{
type
NewTxArgs
struct
{
...
@@ -57,7 +57,7 @@ func (obj *NewTxArgs) UnmarshalJSON(b []byte) (err error) {
...
@@ -57,7 +57,7 @@ func (obj *NewTxArgs) UnmarshalJSON(b []byte) (err error) {
return
return
}
}
return
NewErrorResponse
(
ErrorDecodeArgs
)
return
errDecodeArgs
}
}
type
PushTxArgs
struct
{
type
PushTxArgs
struct
{
...
@@ -70,12 +70,12 @@ func (obj *PushTxArgs) UnmarshalJSON(b []byte) (err error) {
...
@@ -70,12 +70,12 @@ func (obj *PushTxArgs) UnmarshalJSON(b []byte) (err error) {
obj
.
Tx
=
arg0
obj
.
Tx
=
arg0
return
return
}
}
return
NewErrorResponse
(
ErrorDecodeArgs
)
return
errDecodeArgs
}
}
func
(
a
*
PushTxArgs
)
requirementsPushTx
()
error
{
func
(
a
*
PushTxArgs
)
requirementsPushTx
()
error
{
if
a
.
Tx
==
""
{
if
a
.
Tx
==
""
{
return
NewError
Response
(
"PushTx requires a 'tx' as argument"
)
return
NewError
WithMessage
(
errArguments
,
"PushTx requires a 'tx' as argument"
)
}
}
return
nil
return
nil
}
}
...
@@ -86,14 +86,14 @@ type GetStorageArgs struct {
...
@@ -86,14 +86,14 @@ type GetStorageArgs struct {
func
(
obj
*
GetStorageArgs
)
UnmarshalJSON
(
b
[]
byte
)
(
err
error
)
{
func
(
obj
*
GetStorageArgs
)
UnmarshalJSON
(
b
[]
byte
)
(
err
error
)
{
if
err
=
json
.
Unmarshal
(
b
,
&
obj
.
Address
);
err
!=
nil
{
if
err
=
json
.
Unmarshal
(
b
,
&
obj
.
Address
);
err
!=
nil
{
return
NewErrorResponse
(
ErrorDecodeArgs
)
return
errDecodeArgs
}
}
return
return
}
}
func
(
a
*
GetStorageArgs
)
requirements
()
error
{
func
(
a
*
GetStorageArgs
)
requirements
()
error
{
if
len
(
a
.
Address
)
==
0
{
if
len
(
a
.
Address
)
==
0
{
return
NewError
Response
(
"GetStorageAt requires an 'address' value as argument"
)
return
NewError
WithMessage
(
errArguments
,
"GetStorageAt requires an 'address' value as argument"
)
}
}
return
nil
return
nil
}
}
...
@@ -109,64 +109,39 @@ func (obj *GetStateArgs) UnmarshalJSON(b []byte) (err error) {
...
@@ -109,64 +109,39 @@ func (obj *GetStateArgs) UnmarshalJSON(b []byte) (err error) {
obj
.
Address
=
arg0
obj
.
Address
=
arg0
return
return
}
}
return
NewErrorResponse
(
ErrorDecodeArgs
)
return
errDecodeArgs
}
}
func
(
a
*
GetStateArgs
)
requirements
()
error
{
func
(
a
*
GetStateArgs
)
requirements
()
error
{
if
a
.
Address
==
""
{
if
a
.
Address
==
""
{
return
NewError
Response
(
"GetStorageAt requires an 'address' value as argument"
)
return
NewError
WithMessage
(
errArguments
,
"GetStorageAt requires an 'address' value as argument"
)
}
}
if
a
.
Key
==
""
{
if
a
.
Key
==
""
{
return
NewError
Response
(
"GetStorageAt requires an 'key' value as argument"
)
return
NewError
WithMessage
(
errArguments
,
"GetStorageAt requires an 'key' value as argument"
)
}
}
return
nil
return
nil
}
}
type
GetStorageAtRes
struct
{
Key
string
`json:"key"`
Value
string
`json:"value"`
}
type
GetTxCountArgs
struct
{
type
GetTxCountArgs
struct
{
Address
string
`json:"address"`
Address
string
`json:"address"`
}
}
// type GetTxCountRes struct {
// Nonce int `json:"nonce"`
// }
func
(
obj
*
GetTxCountArgs
)
UnmarshalJSON
(
b
[]
byte
)
(
err
error
)
{
func
(
obj
*
GetTxCountArgs
)
UnmarshalJSON
(
b
[]
byte
)
(
err
error
)
{
arg0
:=
""
arg0
:=
""
if
err
=
json
.
Unmarshal
(
b
,
&
arg0
);
err
==
nil
{
if
err
=
json
.
Unmarshal
(
b
,
&
arg0
);
err
==
nil
{
obj
.
Address
=
arg0
obj
.
Address
=
arg0
return
return
}
}
return
NewErrorResponse
(
"Could not determine JSON parameters"
)
return
errDecodeArgs
}
}
func
(
a
*
GetTxCountArgs
)
requirements
()
error
{
func
(
a
*
GetTxCountArgs
)
requirements
()
error
{
if
a
.
Address
==
""
{
if
a
.
Address
==
""
{
return
NewError
Response
(
"GetTxCountAt requires an 'address' value as argument"
)
return
NewError
WithMessage
(
errArguments
,
"GetTxCountAt requires an 'address' value as argument"
)
}
}
return
nil
return
nil
}
}
// type GetPeerCountRes struct {
// PeerCount int `json:"peerCount"`
// }
// type GetListeningRes struct {
// IsListening bool `json:"isListening"`
// }
// type GetCoinbaseRes struct {
// Coinbase string `json:"coinbase"`
// }
// type GetMiningRes struct {
// IsMining bool `json:"isMining"`
// }
type
GetBalanceArgs
struct
{
type
GetBalanceArgs
struct
{
Address
string
Address
string
}
}
...
@@ -177,21 +152,16 @@ func (obj *GetBalanceArgs) UnmarshalJSON(b []byte) (err error) {
...
@@ -177,21 +152,16 @@ func (obj *GetBalanceArgs) UnmarshalJSON(b []byte) (err error) {
obj
.
Address
=
arg0
obj
.
Address
=
arg0
return
return
}
}
return
NewErrorResponse
(
"Could not determine JSON parameters"
)
return
errDecodeArgs
}
}
func
(
a
*
GetBalanceArgs
)
requirements
()
error
{
func
(
a
*
GetBalanceArgs
)
requirements
()
error
{
if
a
.
Address
==
""
{
if
a
.
Address
==
""
{
return
NewError
Response
(
"GetBalanceAt requires an 'address' value as argument"
)
return
NewError
WithMessage
(
errArguments
,
"GetBalanceAt requires an 'address' value as argument"
)
}
}
return
nil
return
nil
}
}
type
BalanceRes
struct
{
Balance
string
`json:"balance"`
Address
string
`json:"address"`
}
type
GetCodeAtArgs
struct
{
type
GetCodeAtArgs
struct
{
Address
string
Address
string
}
}
...
@@ -202,12 +172,12 @@ func (obj *GetCodeAtArgs) UnmarshalJSON(b []byte) (err error) {
...
@@ -202,12 +172,12 @@ func (obj *GetCodeAtArgs) UnmarshalJSON(b []byte) (err error) {
obj
.
Address
=
arg0
obj
.
Address
=
arg0
return
return
}
}
return
NewErrorResponse
(
ErrorDecodeArgs
)
return
errDecodeArgs
}
}
func
(
a
*
GetCodeAtArgs
)
requirements
()
error
{
func
(
a
*
GetCodeAtArgs
)
requirements
()
error
{
if
a
.
Address
==
""
{
if
a
.
Address
==
""
{
return
NewError
Response
(
"GetCodeAt requires an 'address' value as argument"
)
return
NewError
WithMessage
(
errArguments
,
"GetCodeAt requires an 'address' value as argument"
)
}
}
return
nil
return
nil
}
}
...
@@ -218,7 +188,7 @@ type Sha3Args struct {
...
@@ -218,7 +188,7 @@ type Sha3Args struct {
func
(
obj
*
Sha3Args
)
UnmarshalJSON
(
b
[]
byte
)
(
err
error
)
{
func
(
obj
*
Sha3Args
)
UnmarshalJSON
(
b
[]
byte
)
(
err
error
)
{
if
err
=
json
.
Unmarshal
(
b
,
&
obj
.
Data
);
err
!=
nil
{
if
err
=
json
.
Unmarshal
(
b
,
&
obj
.
Data
);
err
!=
nil
{
return
NewErrorResponse
(
ErrorDecodeArgs
)
return
errDecodeArgs
}
}
return
return
}
}
...
@@ -270,10 +240,10 @@ type DbArgs struct {
...
@@ -270,10 +240,10 @@ type DbArgs struct {
func
(
a
*
DbArgs
)
requirements
()
error
{
func
(
a
*
DbArgs
)
requirements
()
error
{
if
len
(
a
.
Database
)
==
0
{
if
len
(
a
.
Database
)
==
0
{
return
NewError
Response
(
"DbPutArgs requires an 'Database' value as argument"
)
return
NewError
WithMessage
(
errArguments
,
"DbPutArgs requires an 'Database' value as argument"
)
}
}
if
len
(
a
.
Key
)
==
0
{
if
len
(
a
.
Key
)
==
0
{
return
NewError
Response
(
"DbPutArgs requires an 'Key' value as argument"
)
return
NewError
WithMessage
(
errArguments
,
"DbPutArgs requires an 'Key' value as argument"
)
}
}
return
nil
return
nil
}
}
...
...
rpc/http/server.go
View file @
52ccaa60
...
@@ -92,7 +92,7 @@ func (s *RpcHttpServer) apiHandler(api *rpc.EthereumApi) http.Handler {
...
@@ -92,7 +92,7 @@ func (s *RpcHttpServer) apiHandler(api *rpc.EthereumApi) http.Handler {
reqParsed
,
reqerr
:=
JSON
.
ParseRequestBody
(
req
)
reqParsed
,
reqerr
:=
JSON
.
ParseRequestBody
(
req
)
if
reqerr
!=
nil
{
if
reqerr
!=
nil
{
jsonerr
:=
&
rpc
.
RpcErrorObject
{
-
32700
,
rpc
.
ErrorParseRequest
}
jsonerr
:=
&
rpc
.
RpcErrorObject
{
-
32700
,
"Error: Could not parse request"
}
JSON
.
Send
(
w
,
&
rpc
.
RpcErrorResponse
{
JsonRpc
:
jsonrpcver
,
ID
:
nil
,
Error
:
jsonerr
})
JSON
.
Send
(
w
,
&
rpc
.
RpcErrorResponse
{
JsonRpc
:
jsonrpcver
,
ID
:
nil
,
Error
:
jsonerr
})
return
return
}
}
...
...
rpc/message.go
→
rpc/message
s
.go
View file @
52ccaa60
...
@@ -25,12 +25,11 @@ import (
...
@@ -25,12 +25,11 @@ import (
"github.com/ethereum/go-ethereum/xeth"
"github.com/ethereum/go-ethereum/xeth"
)
)
const
(
var
(
ErrorArguments
=
"Error: Insufficient arguments"
errArguments
=
errors
.
New
(
"Error: Insufficient arguments"
)
ErrorNotImplemented
=
"Error: Method not implemented"
errNotImplemented
=
errors
.
New
(
"Error: Method not implemented"
)
ErrorUnknown
=
"Error: Unknown error"
errUnknown
=
errors
.
New
(
"Error: Unknown error"
)
ErrorParseRequest
=
"Error: Could not parse request"
errDecodeArgs
=
errors
.
New
(
"Error: Could not decode arguments"
)
ErrorDecodeArgs
=
"Error: Could not decode arguments"
)
)
type
RpcRequest
struct
{
type
RpcRequest
struct
{
...
@@ -58,76 +57,72 @@ type RpcErrorObject struct {
...
@@ -58,76 +57,72 @@ type RpcErrorObject struct {
// Data interface{} `json:"data"`
// Data interface{} `json:"data"`
}
}
func
NewErrorResponse
(
msg
string
)
error
{
func
NewErrorWithMessage
(
err
error
,
msg
string
)
error
{
return
errors
.
New
(
msg
)
return
fmt
.
Errorf
(
"%s: %s"
,
err
.
Error
(),
msg
)
}
func
NewErrorResponseWithError
(
msg
string
,
err
error
)
error
{
return
fmt
.
Errorf
(
"%s: %v"
,
msg
,
err
)
}
}
func
(
req
*
RpcRequest
)
ToSha3Args
()
(
*
Sha3Args
,
error
)
{
func
(
req
*
RpcRequest
)
ToSha3Args
()
(
*
Sha3Args
,
error
)
{
if
len
(
req
.
Params
)
<
1
{
if
len
(
req
.
Params
)
<
1
{
return
nil
,
NewErrorResponse
(
ErrorArguments
)
return
nil
,
errArguments
}
}
args
:=
new
(
Sha3Args
)
args
:=
new
(
Sha3Args
)
r
:=
bytes
.
NewReader
(
req
.
Params
[
0
])
r
:=
bytes
.
NewReader
(
req
.
Params
[
0
])
if
err
:=
json
.
NewDecoder
(
r
)
.
Decode
(
args
);
err
!=
nil
{
if
err
:=
json
.
NewDecoder
(
r
)
.
Decode
(
args
);
err
!=
nil
{
return
nil
,
NewErrorResponse
(
ErrorDecodeArgs
)
return
nil
,
errDecodeArgs
}
}
rpclogger
.
DebugDetailf
(
"%T %v"
,
args
,
args
)
return
args
,
nil
return
args
,
nil
}
}
func
(
req
*
RpcRequest
)
ToGetBlockArgs
()
(
*
GetBlockArgs
,
error
)
{
func
(
req
*
RpcRequest
)
ToGetBlockArgs
()
(
*
GetBlockArgs
,
error
)
{
if
len
(
req
.
Params
)
<
1
{
if
len
(
req
.
Params
)
<
1
{
return
nil
,
NewErrorResponse
(
ErrorArguments
)
return
nil
,
errArguments
}
}
args
:=
new
(
GetBlockArgs
)
args
:=
new
(
GetBlockArgs
)
r
:=
bytes
.
NewReader
(
req
.
Params
[
0
])
r
:=
bytes
.
NewReader
(
req
.
Params
[
0
])
err
:=
json
.
NewDecoder
(
r
)
.
Decode
(
args
)
err
:=
json
.
NewDecoder
(
r
)
.
Decode
(
args
)
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
NewErrorResponse
(
ErrorDecodeArgs
)
return
nil
,
errDecodeArgs
}
}
rpclogger
.
DebugDetailf
(
"%T %v"
,
args
,
args
)
return
args
,
nil
return
args
,
nil
}
}
func
(
req
*
RpcRequest
)
ToNewTxArgs
()
(
*
NewTxArgs
,
error
)
{
func
(
req
*
RpcRequest
)
ToNewTxArgs
()
(
*
NewTxArgs
,
error
)
{
if
len
(
req
.
Params
)
<
1
{
if
len
(
req
.
Params
)
<
1
{
return
nil
,
NewErrorResponse
(
ErrorArguments
)
return
nil
,
errArguments
}
}
args
:=
new
(
NewTxArgs
)
args
:=
new
(
NewTxArgs
)
r
:=
bytes
.
NewReader
(
req
.
Params
[
0
])
r
:=
bytes
.
NewReader
(
req
.
Params
[
0
])
err
:=
json
.
NewDecoder
(
r
)
.
Decode
(
args
)
err
:=
json
.
NewDecoder
(
r
)
.
Decode
(
args
)
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
NewError
ResponseWithError
(
ErrorDecodeArgs
,
err
)
return
nil
,
NewError
WithMessage
(
errDecodeArgs
,
err
.
Error
()
)
}
}
rpclogger
.
DebugDetailf
(
"%T %v"
,
args
,
args
)
return
args
,
nil
return
args
,
nil
}
}
func
(
req
*
RpcRequest
)
ToPushTxArgs
()
(
*
PushTxArgs
,
error
)
{
func
(
req
*
RpcRequest
)
ToPushTxArgs
()
(
*
PushTxArgs
,
error
)
{
if
len
(
req
.
Params
)
<
1
{
if
len
(
req
.
Params
)
<
1
{
return
nil
,
NewErrorResponse
(
ErrorArguments
)
return
nil
,
errArguments
}
}
args
:=
new
(
PushTxArgs
)
args
:=
new
(
PushTxArgs
)
r
:=
bytes
.
NewReader
(
req
.
Params
[
0
])
r
:=
bytes
.
NewReader
(
req
.
Params
[
0
])
err
:=
json
.
NewDecoder
(
r
)
.
Decode
(
args
)
err
:=
json
.
NewDecoder
(
r
)
.
Decode
(
args
)
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
NewErrorResponse
(
ErrorDecodeArgs
)
return
nil
,
errDecodeArgs
}
}
rpclogger
.
DebugDetailf
(
"%T %v"
,
args
,
args
)
return
args
,
nil
return
args
,
nil
}
}
func
(
req
*
RpcRequest
)
ToGetStateArgs
()
(
*
GetStateArgs
,
error
)
{
func
(
req
*
RpcRequest
)
ToGetStateArgs
()
(
*
GetStateArgs
,
error
)
{
if
len
(
req
.
Params
)
<
1
{
if
len
(
req
.
Params
)
<
1
{
return
nil
,
NewErrorResponse
(
ErrorArguments
)
return
nil
,
errArguments
}
}
args
:=
new
(
GetStateArgs
)
args
:=
new
(
GetStateArgs
)
...
@@ -135,234 +130,228 @@ func (req *RpcRequest) ToGetStateArgs() (*GetStateArgs, error) {
...
@@ -135,234 +130,228 @@ func (req *RpcRequest) ToGetStateArgs() (*GetStateArgs, error) {
r
:=
bytes
.
NewReader
(
req
.
Params
[
0
])
r
:=
bytes
.
NewReader
(
req
.
Params
[
0
])
err
:=
json
.
NewDecoder
(
r
)
.
Decode
(
args
)
err
:=
json
.
NewDecoder
(
r
)
.
Decode
(
args
)
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
NewErrorResponse
(
ErrorDecodeArgs
)
return
nil
,
errDecodeArgs
}
}
rpclogger
.
DebugDetailf
(
"%T %v"
,
args
,
args
)
return
args
,
nil
return
args
,
nil
}
}
func
(
req
*
RpcRequest
)
ToStorageAtArgs
()
(
*
GetStorageArgs
,
error
)
{
func
(
req
*
RpcRequest
)
ToStorageAtArgs
()
(
*
GetStorageArgs
,
error
)
{
if
len
(
req
.
Params
)
<
1
{
if
len
(
req
.
Params
)
<
1
{
return
nil
,
NewErrorResponse
(
ErrorArguments
)
return
nil
,
errArguments
}
}
args
:=
new
(
GetStorageArgs
)
args
:=
new
(
GetStorageArgs
)
r
:=
bytes
.
NewReader
(
req
.
Params
[
0
])
r
:=
bytes
.
NewReader
(
req
.
Params
[
0
])
err
:=
json
.
NewDecoder
(
r
)
.
Decode
(
args
)
err
:=
json
.
NewDecoder
(
r
)
.
Decode
(
args
)
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
NewErrorResponse
(
ErrorDecodeArgs
)
return
nil
,
errDecodeArgs
}
}
rpclogger
.
DebugDetailf
(
"%T %v"
,
args
,
args
)
return
args
,
nil
return
args
,
nil
}
}
func
(
req
*
RpcRequest
)
ToGetTxCountArgs
()
(
*
GetTxCountArgs
,
error
)
{
func
(
req
*
RpcRequest
)
ToGetTxCountArgs
()
(
*
GetTxCountArgs
,
error
)
{
if
len
(
req
.
Params
)
<
1
{
if
len
(
req
.
Params
)
<
1
{
return
nil
,
NewErrorResponse
(
ErrorArguments
)
return
nil
,
errArguments
}
}
args
:=
new
(
GetTxCountArgs
)
args
:=
new
(
GetTxCountArgs
)
r
:=
bytes
.
NewReader
(
req
.
Params
[
0
])
r
:=
bytes
.
NewReader
(
req
.
Params
[
0
])
err
:=
json
.
NewDecoder
(
r
)
.
Decode
(
args
)
err
:=
json
.
NewDecoder
(
r
)
.
Decode
(
args
)
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
NewErrorResponse
(
ErrorDecodeArgs
)
return
nil
,
errDecodeArgs
}
}
rpclogger
.
DebugDetailf
(
"%T %v"
,
args
,
args
)
return
args
,
nil
return
args
,
nil
}
}
func
(
req
*
RpcRequest
)
ToGetBalanceArgs
()
(
*
GetBalanceArgs
,
error
)
{
func
(
req
*
RpcRequest
)
ToGetBalanceArgs
()
(
*
GetBalanceArgs
,
error
)
{
if
len
(
req
.
Params
)
<
1
{
if
len
(
req
.
Params
)
<
1
{
return
nil
,
NewErrorResponse
(
ErrorArguments
)
return
nil
,
errArguments
}
}
args
:=
new
(
GetBalanceArgs
)
args
:=
new
(
GetBalanceArgs
)
r
:=
bytes
.
NewReader
(
req
.
Params
[
0
])
r
:=
bytes
.
NewReader
(
req
.
Params
[
0
])
err
:=
json
.
NewDecoder
(
r
)
.
Decode
(
args
)
err
:=
json
.
NewDecoder
(
r
)
.
Decode
(
args
)
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
NewErrorResponse
(
ErrorDecodeArgs
)
return
nil
,
errDecodeArgs
}
}
rpclogger
.
DebugDetailf
(
"%T %v"
,
args
,
args
)
return
args
,
nil
return
args
,
nil
}
}
func
(
req
*
RpcRequest
)
ToGetCodeAtArgs
()
(
*
GetCodeAtArgs
,
error
)
{
func
(
req
*
RpcRequest
)
ToGetCodeAtArgs
()
(
*
GetCodeAtArgs
,
error
)
{
if
len
(
req
.
Params
)
<
1
{
if
len
(
req
.
Params
)
<
1
{
return
nil
,
NewErrorResponse
(
ErrorArguments
)
return
nil
,
errArguments
}
}
args
:=
new
(
GetCodeAtArgs
)
args
:=
new
(
GetCodeAtArgs
)
r
:=
bytes
.
NewReader
(
req
.
Params
[
0
])
r
:=
bytes
.
NewReader
(
req
.
Params
[
0
])
err
:=
json
.
NewDecoder
(
r
)
.
Decode
(
args
)
err
:=
json
.
NewDecoder
(
r
)
.
Decode
(
args
)
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
NewErrorResponse
(
ErrorDecodeArgs
)
return
nil
,
errDecodeArgs
}
}
rpclogger
.
DebugDetailf
(
"%T %v"
,
args
,
args
)
return
args
,
nil
return
args
,
nil
}
}
func
(
req
*
RpcRequest
)
ToBoolArgs
()
(
bool
,
error
)
{
func
(
req
*
RpcRequest
)
ToBoolArgs
()
(
bool
,
error
)
{
if
len
(
req
.
Params
)
<
1
{
if
len
(
req
.
Params
)
<
1
{
return
false
,
NewErrorResponse
(
ErrorArguments
)
return
false
,
errArguments
}
}
var
args
bool
var
args
bool
err
:=
json
.
Unmarshal
(
req
.
Params
[
0
],
&
args
)
err
:=
json
.
Unmarshal
(
req
.
Params
[
0
],
&
args
)
if
err
!=
nil
{
if
err
!=
nil
{
return
false
,
NewErrorResponse
(
ErrorDecodeArgs
)
return
false
,
errDecodeArgs
}
}
rpclogger
.
DebugDetailf
(
"%T %v"
,
args
,
args
)
return
args
,
nil
return
args
,
nil
}
}
func
(
req
*
RpcRequest
)
ToCompileArgs
()
(
string
,
error
)
{
func
(
req
*
RpcRequest
)
ToCompileArgs
()
(
string
,
error
)
{
if
len
(
req
.
Params
)
<
1
{
if
len
(
req
.
Params
)
<
1
{
return
""
,
NewErrorResponse
(
ErrorArguments
)
return
""
,
errArguments
}
}
var
args
string
var
args
string
err
:=
json
.
Unmarshal
(
req
.
Params
[
0
],
&
args
)
err
:=
json
.
Unmarshal
(
req
.
Params
[
0
],
&
args
)
if
err
!=
nil
{
if
err
!=
nil
{
return
""
,
NewErrorResponse
(
ErrorDecodeArgs
)
return
""
,
errDecodeArgs
}
}
rpclogger
.
DebugDetailf
(
"%T %v"
,
args
,
args
)
return
args
,
nil
return
args
,
nil
}
}
func
(
req
*
RpcRequest
)
ToFilterArgs
()
(
*
FilterOptions
,
error
)
{
func
(
req
*
RpcRequest
)
ToFilterArgs
()
(
*
FilterOptions
,
error
)
{
if
len
(
req
.
Params
)
<
1
{
if
len
(
req
.
Params
)
<
1
{
return
nil
,
NewErrorResponse
(
ErrorArguments
)
return
nil
,
errArguments
}
}
args
:=
new
(
FilterOptions
)
args
:=
new
(
FilterOptions
)
r
:=
bytes
.
NewReader
(
req
.
Params
[
0
])
r
:=
bytes
.
NewReader
(
req
.
Params
[
0
])
err
:=
json
.
NewDecoder
(
r
)
.
Decode
(
args
)
err
:=
json
.
NewDecoder
(
r
)
.
Decode
(
args
)
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
NewErrorResponse
(
ErrorDecodeArgs
)
return
nil
,
errDecodeArgs
}
}
rpclogger
.
DebugDetailf
(
"%T %v"
,
args
,
args
)
return
args
,
nil
return
args
,
nil
}
}
func
(
req
*
RpcRequest
)
ToFilterStringArgs
()
(
string
,
error
)
{
func
(
req
*
RpcRequest
)
ToFilterStringArgs
()
(
string
,
error
)
{
if
len
(
req
.
Params
)
<
1
{
if
len
(
req
.
Params
)
<
1
{
return
""
,
NewErrorResponse
(
ErrorArguments
)
return
""
,
errArguments
}
}
var
args
string
var
args
string
err
:=
json
.
Unmarshal
(
req
.
Params
[
0
],
&
args
)
err
:=
json
.
Unmarshal
(
req
.
Params
[
0
],
&
args
)
if
err
!=
nil
{
if
err
!=
nil
{
return
""
,
NewErrorResponse
(
ErrorDecodeArgs
)
return
""
,
errDecodeArgs
}
}
rpclogger
.
DebugDetailf
(
"%T %v"
,
args
,
args
)
return
args
,
nil
return
args
,
nil
}
}
func
(
req
*
RpcRequest
)
ToUninstallFilterArgs
()
(
int
,
error
)
{
func
(
req
*
RpcRequest
)
ToUninstallFilterArgs
()
(
int
,
error
)
{
if
len
(
req
.
Params
)
<
1
{
if
len
(
req
.
Params
)
<
1
{
return
0
,
NewErrorResponse
(
ErrorArguments
)
return
0
,
errArguments
}
}
var
args
int
var
args
int
err
:=
json
.
Unmarshal
(
req
.
Params
[
0
],
&
args
)
err
:=
json
.
Unmarshal
(
req
.
Params
[
0
],
&
args
)
if
err
!=
nil
{
if
err
!=
nil
{
return
0
,
NewErrorResponse
(
ErrorDecodeArgs
)
return
0
,
errDecodeArgs
}
}
rpclogger
.
DebugDetailf
(
"%T %v"
,
args
,
args
)
return
args
,
nil
return
args
,
nil
}
}
func
(
req
*
RpcRequest
)
ToFilterChangedArgs
()
(
int
,
error
)
{
func
(
req
*
RpcRequest
)
ToFilterChangedArgs
()
(
int
,
error
)
{
if
len
(
req
.
Params
)
<
1
{
if
len
(
req
.
Params
)
<
1
{
return
0
,
NewErrorResponse
(
ErrorArguments
)
return
0
,
errArguments
}
}
var
id
int
var
id
int
r
:=
bytes
.
NewReader
(
req
.
Params
[
0
])
r
:=
bytes
.
NewReader
(
req
.
Params
[
0
])
err
:=
json
.
NewDecoder
(
r
)
.
Decode
(
&
id
)
err
:=
json
.
NewDecoder
(
r
)
.
Decode
(
&
id
)
if
err
!=
nil
{
if
err
!=
nil
{
return
0
,
NewErrorResponse
(
ErrorDecodeArgs
)
return
0
,
errDecodeArgs
}
}
rpclogger
.
DebugDetailf
(
"%T %v"
,
id
,
id
)
return
id
,
nil
return
id
,
nil
}
}
func
(
req
*
RpcRequest
)
ToDbPutArgs
()
(
*
DbArgs
,
error
)
{
func
(
req
*
RpcRequest
)
ToDbPutArgs
()
(
*
DbArgs
,
error
)
{
if
len
(
req
.
Params
)
<
3
{
if
len
(
req
.
Params
)
<
3
{
return
nil
,
NewErrorResponse
(
ErrorArguments
)
return
nil
,
errArguments
}
}
var
args
DbArgs
var
args
DbArgs
err
:=
json
.
Unmarshal
(
req
.
Params
[
0
],
&
args
.
Database
)
err
:=
json
.
Unmarshal
(
req
.
Params
[
0
],
&
args
.
Database
)
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
NewError
ResponseWithError
(
ErrorDecodeArgs
,
err
)
return
nil
,
NewError
WithMessage
(
errDecodeArgs
,
err
.
Error
()
)
}
}
err
=
json
.
Unmarshal
(
req
.
Params
[
1
],
&
args
.
Key
)
err
=
json
.
Unmarshal
(
req
.
Params
[
1
],
&
args
.
Key
)
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
NewError
ResponseWithError
(
ErrorDecodeArgs
,
err
)
return
nil
,
NewError
WithMessage
(
errDecodeArgs
,
err
.
Error
()
)
}
}
err
=
json
.
Unmarshal
(
req
.
Params
[
2
],
&
args
.
Value
)
err
=
json
.
Unmarshal
(
req
.
Params
[
2
],
&
args
.
Value
)
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
NewError
ResponseWithError
(
ErrorDecodeArgs
,
err
)
return
nil
,
NewError
WithMessage
(
errDecodeArgs
,
err
.
Error
()
)
}
}
rpclogger
.
DebugDetailf
(
"%T %v"
,
args
,
args
)
return
&
args
,
nil
return
&
args
,
nil
}
}
func
(
req
*
RpcRequest
)
ToDbGetArgs
()
(
*
DbArgs
,
error
)
{
func
(
req
*
RpcRequest
)
ToDbGetArgs
()
(
*
DbArgs
,
error
)
{
if
len
(
req
.
Params
)
<
2
{
if
len
(
req
.
Params
)
<
2
{
return
nil
,
NewErrorResponse
(
ErrorArguments
)
return
nil
,
errArguments
}
}
var
args
DbArgs
var
args
DbArgs
err
:=
json
.
Unmarshal
(
req
.
Params
[
0
],
&
args
.
Database
)
err
:=
json
.
Unmarshal
(
req
.
Params
[
0
],
&
args
.
Database
)
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
NewError
ResponseWithError
(
ErrorDecodeArgs
,
err
)
return
nil
,
NewError
WithMessage
(
errDecodeArgs
,
err
.
Error
()
)
}
}
err
=
json
.
Unmarshal
(
req
.
Params
[
1
],
&
args
.
Key
)
err
=
json
.
Unmarshal
(
req
.
Params
[
1
],
&
args
.
Key
)
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
NewError
ResponseWithError
(
ErrorDecodeArgs
,
err
)
return
nil
,
NewError
WithMessage
(
errDecodeArgs
,
err
.
Error
()
)
}
}
rpclogger
.
DebugDetailf
(
"%T %v"
,
args
,
args
)
return
&
args
,
nil
return
&
args
,
nil
}
}
func
(
req
*
RpcRequest
)
ToWhisperFilterArgs
()
(
*
xeth
.
Options
,
error
)
{
func
(
req
*
RpcRequest
)
ToWhisperFilterArgs
()
(
*
xeth
.
Options
,
error
)
{
if
len
(
req
.
Params
)
<
1
{
if
len
(
req
.
Params
)
<
1
{
return
nil
,
NewErrorResponse
(
ErrorArguments
)
return
nil
,
errArguments
}
}
var
args
xeth
.
Options
var
args
xeth
.
Options
err
:=
json
.
Unmarshal
(
req
.
Params
[
0
],
&
args
)
err
:=
json
.
Unmarshal
(
req
.
Params
[
0
],
&
args
)
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
NewError
ResponseWithError
(
ErrorDecodeArgs
,
err
)
return
nil
,
NewError
WithMessage
(
errDecodeArgs
,
err
.
Error
()
)
}
}
rpclogger
.
DebugDetailf
(
"%T %v"
,
args
,
args
)
return
&
args
,
nil
return
&
args
,
nil
}
}
func
(
req
*
RpcRequest
)
ToIdArgs
()
(
int
,
error
)
{
func
(
req
*
RpcRequest
)
ToIdArgs
()
(
int
,
error
)
{
if
len
(
req
.
Params
)
<
1
{
if
len
(
req
.
Params
)
<
1
{
return
0
,
NewErrorResponse
(
ErrorArguments
)
return
0
,
errArguments
}
}
var
id
int
var
id
int
err
:=
json
.
Unmarshal
(
req
.
Params
[
0
],
&
id
)
err
:=
json
.
Unmarshal
(
req
.
Params
[
0
],
&
id
)
if
err
!=
nil
{
if
err
!=
nil
{
return
0
,
NewErrorResponse
(
ErrorDecodeArgs
)
return
0
,
errDecodeArgs
}
}
rpclogger
.
DebugDetailf
(
"%T %v"
,
id
,
id
)
return
id
,
nil
return
id
,
nil
}
}
func
(
req
*
RpcRequest
)
ToWhisperPostArgs
()
(
*
WhisperMessageArgs
,
error
)
{
func
(
req
*
RpcRequest
)
ToWhisperPostArgs
()
(
*
WhisperMessageArgs
,
error
)
{
if
len
(
req
.
Params
)
<
1
{
if
len
(
req
.
Params
)
<
1
{
return
nil
,
NewErrorResponse
(
ErrorArguments
)
return
nil
,
errArguments
}
}
var
args
WhisperMessageArgs
var
args
WhisperMessageArgs
...
@@ -370,13 +359,13 @@ func (req *RpcRequest) ToWhisperPostArgs() (*WhisperMessageArgs, error) {
...
@@ -370,13 +359,13 @@ func (req *RpcRequest) ToWhisperPostArgs() (*WhisperMessageArgs, error) {
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
err
return
nil
,
err
}
}
rpclogger
.
DebugDetailf
(
"%T %v"
,
args
,
args
)
return
&
args
,
nil
return
&
args
,
nil
}
}
func
(
req
*
RpcRequest
)
ToWhisperHasIdentityArgs
()
(
string
,
error
)
{
func
(
req
*
RpcRequest
)
ToWhisperHasIdentityArgs
()
(
string
,
error
)
{
if
len
(
req
.
Params
)
<
1
{
if
len
(
req
.
Params
)
<
1
{
return
""
,
NewErrorResponse
(
ErrorArguments
)
return
""
,
errArguments
}
}
var
args
string
var
args
string
...
@@ -384,13 +373,13 @@ func (req *RpcRequest) ToWhisperHasIdentityArgs() (string, error) {
...
@@ -384,13 +373,13 @@ func (req *RpcRequest) ToWhisperHasIdentityArgs() (string, error) {
if
err
!=
nil
{
if
err
!=
nil
{
return
""
,
err
return
""
,
err
}
}
rpclogger
.
DebugDetailf
(
"%T %v"
,
args
,
args
)
return
args
,
nil
return
args
,
nil
}
}
func
(
req
*
RpcRequest
)
ToRegisterArgs
()
(
string
,
error
)
{
func
(
req
*
RpcRequest
)
ToRegisterArgs
()
(
string
,
error
)
{
if
len
(
req
.
Params
)
<
1
{
if
len
(
req
.
Params
)
<
1
{
return
""
,
NewErrorResponse
(
ErrorArguments
)
return
""
,
errArguments
}
}
var
args
string
var
args
string
...
@@ -398,13 +387,13 @@ func (req *RpcRequest) ToRegisterArgs() (string, error) {
...
@@ -398,13 +387,13 @@ func (req *RpcRequest) ToRegisterArgs() (string, error) {
if
err
!=
nil
{
if
err
!=
nil
{
return
""
,
err
return
""
,
err
}
}
rpclogger
.
DebugDetailf
(
"%T %v"
,
args
,
args
)
return
args
,
nil
return
args
,
nil
}
}
func
(
req
*
RpcRequest
)
ToWatchTxArgs
()
(
string
,
error
)
{
func
(
req
*
RpcRequest
)
ToWatchTxArgs
()
(
string
,
error
)
{
if
len
(
req
.
Params
)
<
1
{
if
len
(
req
.
Params
)
<
1
{
return
""
,
NewErrorResponse
(
ErrorArguments
)
return
""
,
errArguments
}
}
var
args
string
var
args
string
...
@@ -412,6 +401,6 @@ func (req *RpcRequest) ToWatchTxArgs() (string, error) {
...
@@ -412,6 +401,6 @@ func (req *RpcRequest) ToWatchTxArgs() (string, error) {
if
err
!=
nil
{
if
err
!=
nil
{
return
""
,
err
return
""
,
err
}
}
rpclogger
.
DebugDetailf
(
"%T %v"
,
args
,
args
)
return
args
,
nil
return
args
,
nil
}
}
rpc/ws/server.go
View file @
52ccaa60
...
@@ -99,7 +99,7 @@ func sockHandler(api *rpc.EthereumApi) websocket.Handler {
...
@@ -99,7 +99,7 @@ func sockHandler(api *rpc.EthereumApi) websocket.Handler {
// reqParsed, reqerr := JSON.ParseRequestBody(conn.Request())
// reqParsed, reqerr := JSON.ParseRequestBody(conn.Request())
if
err
:=
websocket
.
JSON
.
Receive
(
conn
,
&
reqParsed
);
err
!=
nil
{
if
err
:=
websocket
.
JSON
.
Receive
(
conn
,
&
reqParsed
);
err
!=
nil
{
jsonerr
:=
&
rpc
.
RpcErrorObject
{
-
32700
,
rpc
.
ErrorParseRequest
}
jsonerr
:=
&
rpc
.
RpcErrorObject
{
-
32700
,
"Error: Could not parse request"
}
JSON
.
Send
(
conn
,
&
rpc
.
RpcErrorResponse
{
JsonRpc
:
jsonrpcver
,
ID
:
nil
,
Error
:
jsonerr
})
JSON
.
Send
(
conn
,
&
rpc
.
RpcErrorResponse
{
JsonRpc
:
jsonrpcver
,
ID
:
nil
,
Error
:
jsonerr
})
continue
continue
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment