Documentation

Index

Constants

View Source
const DEFAULT_MAX_REQUEST_SIZE = 100 << 20 // 100 MiB

    Limit request size. Ideally this limit should be specific for each field in the JSON request but as a simple defensive measure we just limit the entire HTTP body. Configured by WithMaxRequestSize.

    Variables

    This section is empty.

    Functions

    func WithNoReconnect

    func WithNoReconnect() func(c *Config)

    func WithParamEncoder

    func WithParamEncoder(t interface{}, encoder ParamEncoder) func(c *Config)

    func WithPingInterval

    func WithPingInterval(d time.Duration) func(c *Config)

      Must be < Timeout/2

      func WithReconnectBackoff

      func WithReconnectBackoff(minDelay, maxDelay time.Duration) func(c *Config)

      func WithTimeout

      func WithTimeout(d time.Duration) func(c *Config)

      Types

      type ClientCloser

      type ClientCloser func()

        ClientCloser is used to close Client from further use

        func NewClient

        func NewClient(ctx context.Context, addr string, namespace string, handler interface{}, requestHeader http.Header) (ClientCloser, error)

          NewClient creates new jsonrpc 2.0 client

          handler must be pointer to a struct with function fields Returned value closes the client connection TODO: Example

          func NewMergeClient

          func NewMergeClient(ctx context.Context, addr string, namespace string, outs []interface{}, requestHeader http.Header, opts ...Option) (ClientCloser, error)

            NewMergeClient is like NewClient, but allows to specify multiple structs to be filled in the same namespace, using one connection

            type Config

            type Config struct {
            	// contains filtered or unexported fields
            }

            type ErrClient

            type ErrClient struct {
            	// contains filtered or unexported fields
            }

              ErrClient is an error which occurred on the client side the library

              func (*ErrClient) Error

              func (e *ErrClient) Error() string

              func (*ErrClient) Unwrap

              func (e *ErrClient) Unwrap(err error) error

                Unwrap unwraps the actual error

                type Option

                type Option func(c *Config)

                type ParamDecoder

                type ParamDecoder func(ctx context.Context, json []byte) (reflect.Value, error)

                type ParamEncoder

                type ParamEncoder func(reflect.Value) (reflect.Value, error)

                type RPCServer

                type RPCServer struct {
                	// contains filtered or unexported fields
                }

                  RPCServer provides a jsonrpc 2.0 http server handler

                  func NewServer

                  func NewServer(opts ...ServerOption) *RPCServer

                    NewServer creates new RPCServer instance

                    func (*RPCServer) AliasMethod

                    func (s *RPCServer) AliasMethod(alias, original string)

                    func (*RPCServer) Register

                    func (s *RPCServer) Register(namespace string, handler interface{})

                      Register registers new RPC handler

                      Handler is any value with methods defined

                      func (*RPCServer) ServeHTTP

                      func (s *RPCServer) ServeHTTP(w http.ResponseWriter, r *http.Request)

                        TODO: return errors to clients per spec

                        type ServerConfig

                        type ServerConfig struct {
                        	// contains filtered or unexported fields
                        }

                        type ServerOption

                        type ServerOption func(c *ServerConfig)

                        func WithMaxRequestSize

                        func WithMaxRequestSize(max int64) ServerOption

                        func WithParamDecoder

                        func WithParamDecoder(t interface{}, decoder ParamDecoder) ServerOption

                        Directories

                        Path Synopsis