messages.go 2.4 KB
Newer Older
T
Taylor Gerring 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
/*
  This file is part of go-ethereum

  go-ethereum is free software: you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
  the Free Software Foundation, either version 3 of the License, or
  (at your option) any later version.

  go-ethereum is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  GNU General Public License for more details.

  You should have received a copy of the GNU General Public License
  along with go-ethereum.  If not, see <http://www.gnu.org/licenses/>.
*/
O
obscuren 已提交
17 18
package rpc

19 20
import (
	"encoding/json"
O
obscuren 已提交
21
	"fmt"
22 23
)

T
Taylor Gerring 已提交
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
type InsufficientParamsError struct {
	have int
	want int
}

func (e *InsufficientParamsError) Error() string {
	return fmt.Sprintf("insufficient params, want %d have %d", e.want, e.have)
}

func NewInsufficientParamsError(have int, want int) *InsufficientParamsError {
	return &InsufficientParamsError{
		have: have,
		want: want,
	}
}

type NotImplementedError struct {
	Method string
}

func (e *NotImplementedError) Error() string {
	return fmt.Sprintf("%s method not implemented", e.Method)
}

func NewNotImplementedError(method string) *NotImplementedError {
	return &NotImplementedError{
		Method: method,
	}
}

type DecodeParamError struct {
	err string
}

func (e *DecodeParamError) Error() string {
	return fmt.Sprintf("could not decode, %s", e.err)

}

func NewDecodeParamError(errstr string) error {
	return &DecodeParamError{
		err: errstr,
	}
}

type ValidationError struct {
	ParamName string
	msg       string
}

func (e *ValidationError) Error() string {
	return fmt.Sprintf("%s not valid, %s", e.ParamName, e.msg)
}

func NewValidationError(param string, msg string) error {
	return &ValidationError{
		ParamName: param,
		msg:       msg,
	}
}
84

T
Taylor Gerring 已提交
85
type RpcRequest struct {
T
Taylor Gerring 已提交
86 87 88 89
	ID      interface{}     `json:"id"`
	JsonRpc string          `json:"jsonrpc"`
	Method  string          `json:"method"`
	Params  json.RawMessage `json:"params"`
90 91 92
}

type RpcSuccessResponse struct {
T
Taylor Gerring 已提交
93
	ID      interface{} `json:"id"`
94 95
	JsonRpc string      `json:"jsonrpc"`
	Result  interface{} `json:"result"`
O
obscuren 已提交
96 97
}

98
type RpcErrorResponse struct {
T
Taylor Gerring 已提交
99
	ID      interface{}     `json:"id"`
T
Taylor Gerring 已提交
100 101
	JsonRpc string          `json:"jsonrpc"`
	Error   *RpcErrorObject `json:"error"`
102 103
}

T
Taylor Gerring 已提交
104 105 106 107
type RpcErrorObject struct {
	Code    int    `json:"code"`
	Message string `json:"message"`
	// Data    interface{} `json:"data"`
108
}