rpc

package
v0.3.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 28, 2024 License: AGPL-3.0 Imports: 34 Imported by: 3

Documentation

Index

Constants

View Source
const (
	MetricsScopeGRPCAPI = "grpc_api"

	DefaultMaxBodyBytes           int64 = 4194304 // 4MB
	DefaultBatchItemLimit         int   = 1000
	DefaultBatchResponseSizeLimit int   = int(DefaultMaxBodyBytes)
)

Variables

This section is empty.

Functions

func InstrumentMetricsUnaryServerInterceptor

func InstrumentMetricsUnaryServerInterceptor(mtr metric.Meter, log *slog.Logger) grpc.UnaryServerInterceptor

func NewGRPCServer

func NewGRPCServer(node partitionNode, obs Observability, opts ...Option) (*grpcServer, error)

func NewHTTPServer

func NewHTTPServer(conf *ServerConfiguration, obs Observability, registrars ...Registrar) (*http.Server, error)

func NewRESTServer deprecated

func NewRESTServer(addr string, maxBodySize int64, obs Observability, registrars ...Registrar) *http.Server

Deprecated: Moving away from REST API to JSON-RPC API, use NewHTTPServer instead.

func WriteCBORError

func WriteCBORError(w http.ResponseWriter, e error, code int, log *slog.Logger)

WriteCBORError replies to the request with the specified error message and HTTP code. It does not otherwise end the request; the caller should ensure no further writes are done to w.

func WriteCBORResponse

func WriteCBORResponse(w http.ResponseWriter, response any, statusCode int, log *slog.Logger)

WriteCBORResponse replies to the request with the given response and HTTP code.

Types

type API

type API struct {
	Namespace string
	Service   interface{}
}

type Observability

type Observability interface {
	Meter(name string, opts ...metric.MeterOption) metric.Meter
	PrometheusRegisterer() prometheus.Registerer
	Logger() *slog.Logger
}

type Option

type Option func(*Options)

func WithMaxGetBlocksBatchSize

func WithMaxGetBlocksBatchSize(maxGetBlocksBatchSize uint64) Option

type Options

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

type Registrar

type Registrar interface {
	Register(r *mux.Router)
}

Registrar registers new HTTP handlers for given router.

type RegistrarFunc

type RegistrarFunc func(r *mux.Router)

RegistrarFunc type is an adapter to allow the use of ordinary function as Registrar.

func InfoEndpoints

func InfoEndpoints(node partitionNode, name string, self *network.Peer, log *slog.Logger) RegistrarFunc

func MetricsEndpoints

func MetricsEndpoints(pr prometheus.Registerer) RegistrarFunc

func NodeEndpoints

func NodeEndpoints(node partitionNode, unitProofDB keyvaluedb.KeyValueDB, obs Observability) RegistrarFunc

func (RegistrarFunc) Register

func (f RegistrarFunc) Register(r *mux.Router)

type ServerConfiguration

type ServerConfiguration struct {
	// Address specifies the TCP address for the server to listen on, in the form "host:port".
	// REST server isn't initialised if Address is empty.
	Address string

	// ReadTimeout is the maximum duration for reading the entire request, including the body. A zero or negative
	// value means there will be no timeout.
	ReadTimeout time.Duration

	// ReadHeaderTimeout is the amount of time allowed to read request headers. If ReadHeaderTimeout is zero, the
	// value of ReadTimeout is used. If both are zero, there is no timeout.
	ReadHeaderTimeout time.Duration

	// WriteTimeout is the maximum duration before timing out writes of the response. A zero or negative value means
	// there will be no timeout.
	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, there is no timeout.
	IdleTimeout time.Duration

	// MaxHeaderBytes controls the maximum number of bytes the server will read parsing the request header's keys
	// and values, including the request line. It does not limit the size of the request body. If zero,
	// http.DefaultMaxHeaderBytes is used.
	MaxHeaderBytes int

	// MaxHeaderBytes controls the maximum number of bytes the server will read parsing the request body. If zero,
	// MaxBodyBytes is used.
	MaxBodyBytes int64

	// BatchItemLimit is the maximum number of requests in a batch.
	BatchItemLimit int

	// BatchResponseSizeLimit is the maximum number of response bytes across all requests in a batch.
	BatchResponseSizeLimit int

	Router Registrar

	// APIs contains is an array of enabled RPC services.
	APIs []API
}

ServerConfiguration is a common configuration for RPC servers.

func (*ServerConfiguration) IsAddressEmpty

func (c *ServerConfiguration) IsAddressEmpty() bool

type StateAPI

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

func NewStateAPI

func NewStateAPI(node *partition.Node) *StateAPI

func (*StateAPI) GetRoundNumber

func (s *StateAPI) GetRoundNumber(ctx context.Context) (uint64, error)

Returns the round number of the latest UC seen by node.

func (*StateAPI) GetTransactionProof

func (s *StateAPI) GetTransactionProof(txHash string) ([]byte, error)

func (*StateAPI) GetUnit

func (s *StateAPI) GetUnit(unitID string) (state.UnitData, error)

func (*StateAPI) GetUnitsByOwnerID

func (s *StateAPI) GetUnitsByOwnerID(ownerID string) ([]state.UnitData, error)

func (*StateAPI) SendTransaction

func (s *StateAPI) SendTransaction(tx []byte) error

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL