Documentation ¶
Index ¶
- func NewHTTPServer(grpcServer *grpc.Server, address string) *http.Server
- type Config
- type Engine
- type HTTPHeader
- type RPCEngineBuilder
- func (builder *RPCEngineBuilder) Build() (*Engine, error)
- func (builder *RPCEngineBuilder) Handler() accessproto.AccessAPIServer
- func (builder *RPCEngineBuilder) WithBlockSignerDecoder(signerIndicesDecoder hotstuff.BlockSignerDecoder) *RPCEngineBuilder
- func (builder *RPCEngineBuilder) WithLegacy() *RPCEngineBuilder
- func (builder *RPCEngineBuilder) WithMetrics() *RPCEngineBuilder
- func (builder *RPCEngineBuilder) WithNewHandler(handler accessproto.AccessAPIServer) *RPCEngineBuilder
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
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 StateStreamListenAddr string // the state stream 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 MaxExecutionDataMsgSize int // GRPC max message size for block execution data 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 ¶
func (*Engine) SecureGRPCAddress ¶
func (*Engine) SubmitLocal ¶
func (e *Engine) SubmitLocal(event interface{})
SubmitLocal submits an event originating on the local node.
func (*Engine) UnsecureGRPCAddress ¶
type HTTPHeader ¶
type RPCEngineBuilder ¶
type RPCEngineBuilder struct { *Engine // contains filtered or unexported fields }
func NewBuilder ¶
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 ¶
func NewRPCEngineBuilder(engine *Engine) *RPCEngineBuilder
NewRPCEngineBuilder helps to build a new RPC engine.
func (*RPCEngineBuilder) Build ¶
func (builder *RPCEngineBuilder) Build() (*Engine, error)
func (*RPCEngineBuilder) Handler ¶
func (builder *RPCEngineBuilder) Handler() accessproto.AccessAPIServer
func (*RPCEngineBuilder) WithBlockSignerDecoder ¶
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 ¶
func (builder *RPCEngineBuilder) WithLegacy() *RPCEngineBuilder
WithLegacy specifies that a legacy access API should be instantiated Returns self-reference for chaining.
func (*RPCEngineBuilder) WithMetrics ¶
func (builder *RPCEngineBuilder) WithMetrics() *RPCEngineBuilder
WithMetrics specifies the metrics should be collected. Returns self-reference for chaining.
func (*RPCEngineBuilder) WithNewHandler ¶
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.