Documentation
¶
Index ¶
- Variables
- type API
- type BatchElem
- type ChannelTimeouts
- type Conn
- type ConnRemoteAddr
- type Connection
- func ClientFromContext(ctx context.Context) (*Connection, bool)
- func DialChannelWithClient(endpoint string, config *tls.Config, groupID int) (*Connection, error)
- func DialContextChannel(rawurl string, caRoot, certContext, keyContext []byte, groupID int) (*Connection, error)
- func DialContextHTTP(rawurl string) (*Connection, error)
- func DialHTTP(endpoint string) (*Connection, error)
- func DialHTTPWithClient(endpoint string, client *http.Client) (*Connection, error)
- func (c *Connection) AsyncSendTransaction(ctx context.Context, handler func(*types.Receipt, error), method string, ...) error
- func (c *Connection) BroadcastAMOPMsg(topic string, data []byte) error
- func (c *Connection) BroadcastAMOPPrivateMsg(topic string, data []byte) error
- func (c *Connection) Call(result interface{}, method string, args ...interface{}) error
- func (c *Connection) CallContext(ctx context.Context, result interface{}, method string, args ...interface{}) error
- func (c *Connection) Close()
- func (c *Connection) GetBlockNumber() int64
- func (c *Connection) IsHTTP() bool
- func (c *Connection) PublishPrivateTopic(topic string, publicKey []*ecdsa.PublicKey) error
- func (c *Connection) ReConn()
- func (c *Connection) SendAMOPMsg(topic string, data []byte) ([]byte, error)
- func (c *Connection) SendAMOPPrivateMsg(topic string, data []byte) ([]byte, error)
- func (c *Connection) SubscribeBlockNumberNotify(groupID uint64, handler func(int64)) error
- func (c *Connection) SubscribeEventLogs(eventLogParams types.EventLogParams, handler func(int, []types.Log)) (string, error)
- func (c *Connection) SubscribePrivateTopic(topic string, privateKey *ecdsa.PrivateKey, handler func([]byte, *[]byte)) error
- func (c *Connection) SubscribeTopic(topic string, handler func([]byte, *[]byte)) error
- func (c *Connection) UnSubscribeEventLogs(filterID string) error
- func (c *Connection) UnsubscribeBlockNumberNotify(groupID uint64) error
- func (c *Connection) UnsubscribePrivateTopic(topic string) error
- func (c *Connection) UnsubscribeTopic(topic string) error
- type Error
- type EventLog
- type HTTPTimeouts
- type ServerCodec
Constants ¶
This section is empty.
Variables ¶
var ( ErrClientQuit = errors.New("client is closed") ErrNoResult = errors.New("no result in JSON-RPC response") ErrSubscriptionQueueOverflow = errors.New("subscription queue overflow") )
var DefaultChannelTimeouts = ChannelTimeouts{ ReadTimeout: 30 * time.Second, WriteTimeout: 30 * time.Second, IdleTimeout: 120 * time.Second, }
DefaultChannelTimeouts represents the default timeout values used if further configuration is not provided.
var DefaultHTTPTimeouts = HTTPTimeouts{ ReadTimeout: 30 * time.Second, WriteTimeout: 30 * time.Second, IdleTimeout: 120 * time.Second, }
DefaultHTTPTimeouts represents the default timeout values used if further configuration is not provided.
Functions ¶
This section is empty.
Types ¶
type API ¶
type API struct {
Namespace string // namespace under which the rpc methods of Service are exposed
Version string // api version for DApp's
Service interface{} // receiver instance which holds the methods
Public bool // indication if the methods must be considered safe for public use
}
API describes the set of methods offered over the RPC interface
type BatchElem ¶
type BatchElem struct {
Method string
Args []interface{}
// The result is unmarshaled into this field. Result must be set to a
// non-nil pointer value of the desired type, otherwise the response will be
// discarded.
Result interface{}
// Error is set if the server returns an error for this request, or if
// unmarshaling into Result fails. It is not set for I/O errors.
Error error
}
BatchElem is an element in a batch request.
type ChannelTimeouts ¶
type ChannelTimeouts struct {
// ReadTimeout is the maximum duration for reading the entire
// request, including the body.
//
// Because ReadTimeout does not let Handlers make per-request
// decisions on each request body's acceptable deadline or
// upload rate, most users will prefer to use
// ReadHeaderTimeout. It is valid to use them both.
ReadTimeout time.Duration
// WriteTimeout is the maximum duration before timing out
// writes of the response. It is reset whenever a new
// request's header is read. Like ReadTimeout, it does not
// let Handlers make decisions on a per-request basis.
WriteTimeout time.Duration
// IdleTimeout is the maximum amount of time to wait for the
// next request when keep-alives are enabled. If IdleTimeout
// is zero, the value of ReadTimeout is used. If both are
// zero, ReadHeaderTimeout is used.
IdleTimeout time.Duration
}
ChannelTimeouts represents the configuration params for the Channel RPC server.
type Conn ¶
type Conn interface {
io.ReadWriteCloser
SetWriteDeadline(time.Time) error
}
Conn is a subset of the methods of net.Conn which are sufficient for ServerCodec.
type ConnRemoteAddr ¶
type ConnRemoteAddr interface {
RemoteAddr() string
}
ConnRemoteAddr wraps the RemoteAddr operation, which returns a description of the peer address of a connection. If a Conn also implements ConnRemoteAddr, this description is used in log messages.
type Connection ¶
type Connection struct {
// contains filtered or unexported fields
}
Connection represents a connection to an RPC server.
func ClientFromContext ¶
func ClientFromContext(ctx context.Context) (*Connection, bool)
ClientFromContext Connection retrieves the client from the context, if any. This can be used to perform 'reverse calls' in a handler method.
func DialChannelWithClient ¶
DialChannelWithClient creates a new RPC client that connects to an RPC server over Channel using the provided Channel Client.
func DialContextChannel ¶
func DialContextChannel(rawurl string, caRoot, certContext, keyContext []byte, groupID int) (*Connection, error)
DialContextChannel creates a new Channel client, just like Dial.
func DialContextHTTP ¶
func DialContextHTTP(rawurl string) (*Connection, error)
DialContextHTTP creates a new RPC client, just like Dial.
The context is used to cancel or time out the initial connection establishment. It does not affect subsequent interactions with the client.
func DialHTTP ¶
func DialHTTP(endpoint string) (*Connection, error)
DialHTTP creates a new RPC client that connects to an RPC server over HTTP.
func DialHTTPWithClient ¶
func DialHTTPWithClient(endpoint string, client *http.Client) (*Connection, error)
DialHTTPWithClient creates a new RPC client that connects to an RPC server over HTTP using the provided HTTP Client.
func (*Connection) AsyncSendTransaction ¶ added in v0.10.0
func (*Connection) BroadcastAMOPMsg ¶ added in v0.10.0
func (c *Connection) BroadcastAMOPMsg(topic string, data []byte) error
func (*Connection) BroadcastAMOPPrivateMsg ¶ added in v0.10.0
func (c *Connection) BroadcastAMOPPrivateMsg(topic string, data []byte) error
func (*Connection) Call ¶
func (c *Connection) Call(result interface{}, method string, args ...interface{}) error
Call performs a JSON-RPC call with the given arguments and unmarshals into result if no error occurred.
The result must be a pointer so that package json can unmarshal into it. You can also pass nil, in which case the result is ignored.
func (*Connection) CallContext ¶
func (c *Connection) CallContext(ctx context.Context, result interface{}, method string, args ...interface{}) error
CallContext performs a JSON-RPC call with the given arguments. If the context is canceled before the call has successfully returned, CallContext returns immediately.
The result must be a pointer so that package json can unmarshal into it. You can also pass nil, in which case the result is ignored.
func (*Connection) Close ¶
func (c *Connection) Close()
Close closes the client, aborting any in-flight requests.
func (*Connection) GetBlockNumber ¶ added in v0.10.0
func (c *Connection) GetBlockNumber() int64
GetBlockNumber returns BlockLimit
func (*Connection) IsHTTP ¶ added in v0.10.0
func (c *Connection) IsHTTP() bool
IsHTTP returns whether is HTTP
func (*Connection) PublishPrivateTopic ¶ added in v0.10.0
func (c *Connection) PublishPrivateTopic(topic string, publicKey []*ecdsa.PublicKey) error
func (*Connection) ReConn ¶ added in v1.1.0
func (c *Connection) ReConn()
Close closes the client, aborting any in-flight requests.
func (*Connection) SendAMOPMsg ¶ added in v0.10.0
func (c *Connection) SendAMOPMsg(topic string, data []byte) ([]byte, error)
func (*Connection) SendAMOPPrivateMsg ¶ added in v0.10.0
func (c *Connection) SendAMOPPrivateMsg(topic string, data []byte) ([]byte, error)
func (*Connection) SubscribeBlockNumberNotify ¶ added in v0.10.0
func (c *Connection) SubscribeBlockNumberNotify(groupID uint64, handler func(int64)) error
func (*Connection) SubscribeEventLogs ¶ added in v1.0.0
func (c *Connection) SubscribeEventLogs(eventLogParams types.EventLogParams, handler func(int, []types.Log)) (string, error)
func (*Connection) SubscribePrivateTopic ¶ added in v0.10.0
func (c *Connection) SubscribePrivateTopic(topic string, privateKey *ecdsa.PrivateKey, handler func([]byte, *[]byte)) error
func (*Connection) SubscribeTopic ¶ added in v0.10.0
func (c *Connection) SubscribeTopic(topic string, handler func([]byte, *[]byte)) error
func (*Connection) UnSubscribeEventLogs ¶ added in v1.1.0
func (c *Connection) UnSubscribeEventLogs(filterID string) error
func (*Connection) UnsubscribeBlockNumberNotify ¶ added in v0.10.0
func (c *Connection) UnsubscribeBlockNumberNotify(groupID uint64) error
func (*Connection) UnsubscribePrivateTopic ¶ added in v0.10.0
func (c *Connection) UnsubscribePrivateTopic(topic string) error
func (*Connection) UnsubscribeTopic ¶ added in v0.10.0
func (c *Connection) UnsubscribeTopic(topic string) error
type EventLog ¶ added in v1.0.0
type EventLog struct {
LogIndex string `json:"logIndex"`
TransactionIndex string `json:"transactionIndex"`
TransactionHash string `json:"transactionHash"`
BlockHash string `json:"blockHash"`
BlockNumber string `json:"blockNumber"`
Address string `json:"address"`
Data string `json:"data"`
Topics []string `json:"topics"`
}
type HTTPTimeouts ¶
type HTTPTimeouts struct {
// ReadTimeout is the maximum duration for reading the entire
// request, including the body.
//
// Because ReadTimeout does not let Handlers make per-request
// decisions on each request body's acceptable deadline or
// upload rate, most users will prefer to use
// ReadHeaderTimeout. It is valid to use them both.
ReadTimeout time.Duration
// WriteTimeout is the maximum duration before timing out
// writes of the response. It is reset whenever a new
// request's header is read. Like ReadTimeout, it does not
// let Handlers make decisions on a per-request basis.
WriteTimeout time.Duration
// IdleTimeout is the maximum amount of time to wait for the
// next request when keep-alives are enabled. If IdleTimeout
// is zero, the value of ReadTimeout is used. If both are
// zero, ReadHeaderTimeout is used.
IdleTimeout time.Duration
}
HTTPTimeouts represents the configuration params for the HTTP RPC server.
type ServerCodec ¶
type ServerCodec interface {
Read() (msgs []*jsonrpcMessage, isBatch bool, err error)
Close()
// contains filtered or unexported methods
}
ServerCodec implements reading, parsing and writing RPC messages for the server side of a RPC session. Implementations must be go-routine safe since the codec can be called in multiple go-routines concurrently.
func NewCodec ¶
func NewCodec(conn Conn, encode, decode func(v interface{}) error) ServerCodec
NewCodec creates a new RPC server codec with support for JSON-RPC 2.0 based on explicitly given encoding and decoding methods.
func NewJSONCodec ¶
func NewJSONCodec(conn Conn) ServerCodec
NewJSONCodec creates a new RPC server codec with support for JSON-RPC 2.0.