Help us shape the future of Go! Take the 2026 Go Developer Survey

rpc

package
v0.28.13 Latest Latest
Warning

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

Go to latest
Published: Nov 15, 2022 License: AGPL-3.0 Imports: 31 Imported by: 4

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func NewHTTPServer

func NewHTTPServer(
	grpcServer *grpc.Server,
	address string,
) *http.Server

NewHTTPServer creates and intializes a new HTTP GRPC proxy server

Types

type Config

type Config struct {
	UnsecureGRPCListenAddr    string                           // the non-secure GRPC server address as ip:port
	SecureGRPCListenAddr      string                           // the secure GRPC server address as ip:port
	TransportCredentials      credentials.TransportCredentials // the secure GRPC credentials
	HTTPListenAddr            string                           // the HTTP web proxy address as ip:port
	RESTListenAddr            string                           // the REST server address as ip:port (if empty the REST server will not be started)
	CollectionAddr            string                           // the address of the upstream collection node
	HistoricalAccessAddrs     string                           // the list of all access nodes from previous spork
	MaxMsgSize                int                              // GRPC max message size
	ExecutionClientTimeout    time.Duration                    // execution API GRPC client timeout
	CollectionClientTimeout   time.Duration                    // collection API GRPC client timeout
	ConnectionPoolSize        uint                             // size of the cache for storing collection and execution connections
	MaxHeightRange            uint                             // max size of height range requests
	PreferredExecutionNodeIDs []string                         // preferred list of upstream execution node IDs
	FixedExecutionNodeIDs     []string                         // fixed list of execution node IDs to choose from if no node node ID can be chosen from the PreferredExecutionNodeIDs
}

Config defines the configurable options for the access node server A secure GRPC server here implies a server that presents a self-signed TLS certificate and a client that authenticates the server via a pre-shared public key

type Engine

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

Engine exposes the server with a simplified version of the Access API. An unsecured GRPC server (default port 9000), a secure GRPC server (default port 9001) and an HTTP Web proxy (default port 8000) are brought up.

func (*Engine) Done

func (e *Engine) Done() <-chan struct{}

Done returns a done channel that is closed once the engine has fully stopped. It sends a signal to stop the gRPC server, then closes the channel.

func (*Engine) Ready

func (e *Engine) Ready() <-chan struct{}

Ready returns a ready channel that is closed once the engine has fully started. The RPC engine is ready when the gRPC server has successfully started.

func (*Engine) RestApiAddress added in v0.23.2

func (e *Engine) RestApiAddress() net.Addr

func (*Engine) SecureGRPCAddress added in v0.20.0

func (e *Engine) SecureGRPCAddress() net.Addr

func (*Engine) SubmitLocal

func (e *Engine) SubmitLocal(event interface{})

SubmitLocal submits an event originating on the local node.

func (*Engine) UnsecureGRPCAddress added in v0.20.0

func (e *Engine) UnsecureGRPCAddress() net.Addr

type HTTPHeader

type HTTPHeader struct {
	Key   string
	Value string
}

type RPCEngineBuilder added in v0.27.0

type RPCEngineBuilder struct {
	*Engine
	// contains filtered or unexported fields
}

func NewBuilder added in v0.27.0

func NewBuilder(log zerolog.Logger,
	state protocol.State,
	config Config,
	collectionRPC accessproto.AccessAPIClient,
	historicalAccessNodes []accessproto.AccessAPIClient,
	blocks storage.Blocks,
	headers storage.Headers,
	collections storage.Collections,
	transactions storage.Transactions,
	executionReceipts storage.ExecutionReceipts,
	executionResults storage.ExecutionResults,
	chainID flow.ChainID,
	transactionMetrics module.TransactionMetrics,
	accessMetrics module.AccessMetrics,
	collectionGRPCPort uint,
	executionGRPCPort uint,
	retryEnabled bool,
	rpcMetricsEnabled bool,
	apiRatelimits map[string]int,
	apiBurstLimits map[string]int,
) (*RPCEngineBuilder, error)

NewBuilder returns a new RPC engine builder.

func NewRPCEngineBuilder added in v0.27.0

func NewRPCEngineBuilder(engine *Engine) *RPCEngineBuilder

NewRPCEngineBuilder helps to build a new RPC engine.

func (*RPCEngineBuilder) Build added in v0.27.0

func (builder *RPCEngineBuilder) Build() (*Engine, error)

func (*RPCEngineBuilder) Handler added in v0.28.0

func (builder *RPCEngineBuilder) Handler() accessproto.AccessAPIServer

func (*RPCEngineBuilder) WithBlockSignerDecoder added in v0.27.0

func (builder *RPCEngineBuilder) WithBlockSignerDecoder(signerIndicesDecoder hotstuff.BlockSignerDecoder) *RPCEngineBuilder

WithBlockSignerDecoder specifies that signer indices in block headers should be translated to full node IDs with the given decoder. Caution: you can inject either a `BlockSignerDecoder` (via method `WithBlockSignerDecoder`) or an `AccessAPIServer` (via method `WithNewHandler`); but not both. If both are specified, the builder will error during the build step.

Returns self-reference for chaining.

func (*RPCEngineBuilder) WithLegacy added in v0.27.0

func (builder *RPCEngineBuilder) WithLegacy() *RPCEngineBuilder

WithLegacy specifies that a legacy access API should be instantiated Returns self-reference for chaining.

func (*RPCEngineBuilder) WithMetrics added in v0.27.0

func (builder *RPCEngineBuilder) WithMetrics() *RPCEngineBuilder

WithMetrics specifies the metrics should be collected. Returns self-reference for chaining.

func (*RPCEngineBuilder) WithNewHandler added in v0.27.0

func (builder *RPCEngineBuilder) WithNewHandler(handler accessproto.AccessAPIServer) *RPCEngineBuilder

WithNewHandler specifies that the given `AccessAPIServer` should be used for serving API queries. Caution: you can inject either a `BlockSignerDecoder` (via method `WithBlockSignerDecoder`) or an `AccessAPIServer` (via method `WithNewHandler`); but not both. If both are specified, the builder will error during the build step.

Returns self-reference for chaining.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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