Documentation ¶
Overview ¶
Package jsonrpc implements json rpc protocol.
Index ¶
Constants ¶
const ( MAX_JSONRPC_ID = 0x7FFFFFFF // max jsonrpc request/response id VERSION = "2.0" // jsonrpc version )
const ( CodeParseError = -32700 CodeInvalidRequest = -32600 CodeMethodNotFound = -32601 CodeInvalidParams = -32602 CodeInternalError = -32603 )
Errors defined in the JSON-RPC spec. See http://www.jsonrpc.org/specification#error_object.
const ( // DefaultMaxSleepTime max sleep interval in accept DefaultMaxSleepTime = 1 * time.Second // DefaultHTTPRspBufferSize ... DefaultHTTPRspBufferSize = 1024 // PathPrefix ... PathPrefix = byte('/') )
const ( // JSONRPC // module name JSONRPC = "jsonrpc" )
Variables ¶
var (
// Version is json RPC's version
Version = "2.0"
)
Functions ¶
Types ¶
type Error ¶
type Error struct { Code int `json:"code"` Message string `json:"message"` Data interface{} `json:"data,omitempty"` }
Error response Error
type HTTPClient ¶
type HTTPClient struct { ID int64 // contains filtered or unexported fields }
HTTPClient is a HTTP client ,include ID and options.
func NewHTTPClient ¶
func NewHTTPClient(opt *HTTPOptions) *HTTPClient
NewHTTPClient creates a new HTTP client with HTTPOptions.
func (*HTTPClient) Call ¶
func (c *HTTPClient) Call(ctx context.Context, service *common.URL, req *Request, rsp interface{}) error
Call makes a HTTP call with @ctx , @service ,@req and @rsp
func (*HTTPClient) Do ¶
Do is the high level of complexity and the likelihood that the fasthttp client has not been extensively used in production means that you would need to expect a very large benefit to justify the adoption of fasthttp today.
func (*HTTPClient) NewRequest ¶
func (c *HTTPClient) NewRequest(service *common.URL, method string, args interface{}) *Request
NewRequest creates a new HTTP request with @service ,@method and @arguments.
type HTTPOptions ¶
HTTPOptions is a HTTP option include HandshakeTimeout and HTTPTimeout.
type JsonrpcExporter ¶
type JsonrpcExporter struct {
protocol.BaseExporter
}
JsonrpcExporter is JSON RPC exporter and extends from base invoker.
func NewJsonrpcExporter ¶
func NewJsonrpcExporter(key string, invoker protocol.Invoker, exporterMap *sync.Map) *JsonrpcExporter
NewJsonrpcExporter creates JSON RPC exporter with @key, @invoker and @exporterMap
func (*JsonrpcExporter) Unexport ¶
func (je *JsonrpcExporter) Unexport()
Unexport exported JSON RPC service.
type JsonrpcInvoker ¶
type JsonrpcInvoker struct { protocol.BaseInvoker // contains filtered or unexported fields }
JsonrpcInvoker is JSON RPC invoker
func NewJsonrpcInvoker ¶
func NewJsonrpcInvoker(url *common.URL, client *HTTPClient) *JsonrpcInvoker
NewJsonrpcInvoker creates JSON RPC invoker with @url and @client
func (*JsonrpcInvoker) Invoke ¶
func (ji *JsonrpcInvoker) Invoke(ctx context.Context, invocation protocol.Invocation) protocol.Result
Invoke the JSON RPC invocation and return result.
type JsonrpcProtocol ¶
type JsonrpcProtocol struct { protocol.BaseProtocol // contains filtered or unexported fields }
JsonrpcProtocol is JSON RPC protocol.
func NewJsonrpcProtocol ¶
func NewJsonrpcProtocol() *JsonrpcProtocol
NewJsonrpcProtocol creates JSON RPC protocol
func (*JsonrpcProtocol) Destroy ¶
func (jp *JsonrpcProtocol) Destroy()
Destroy will destroy all invoker and exporter, so it only is called once.
type Request ¶
type Request struct { ID int64 // contains filtered or unexported fields }
Request is HTTP protocol request
type Server ¶
Server is JSON RPC server wrapper
type ServerCodec ¶
type ServerCodec struct {
// contains filtered or unexported fields
}
ServerCodec is codec data for request server.
func (*ServerCodec) ReadBody ¶
func (c *ServerCodec) ReadBody(x interface{}) error
ReadBody reads @x as request body.
func (*ServerCodec) ReadHeader ¶
func (c *ServerCodec) ReadHeader(header map[string]string, body []byte) error
ReadHeader reads header and unmarshal to server codec