proxy

package
v100.0.0 Latest Latest
Warning

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

Go to latest
Published: Sep 3, 2024 License: Apache-2.0 Imports: 16 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// MetricsSubsystem is a subsystem shared by all metrics exposed by this
	// package.
	MetricsSubsystem = "abci_connection"
)

Variables

View Source
var InfoRequest = &abci.InfoRequest{
	Version:      version.CMTSemVer,
	BlockVersion: version.BlockProtocol,
	P2PVersion:   version.P2PProtocol,
	AbciVersion:  version.ABCIVersion,
}

InfoRequest contains all the information for sending the abci.InfoRequest message during handshake with the app. It contains only compile-time version information.

Functions

This section is empty.

Types

type AppConnMempool

type AppConnMempool interface {
	SetResponseCallback(cb abcicli.Callback)
	Error() error

	CheckTx(ctx context.Context, req *abcitypes.CheckTxRequest) (*abcitypes.CheckTxResponse, error)
	CheckTxAsync(ctx context.Context, req *abcitypes.CheckTxRequest) (*abcicli.ReqRes, error)
	Flush(ctx context.Context) error
}

func NewAppConnMempool

func NewAppConnMempool(appConn abcicli.Client, metrics *Metrics) AppConnMempool

type AppConnQuery

type AppConnQuery interface {
	Error() error

	Echo(ctx context.Context, echo string) (*abcitypes.EchoResponse, error)
	Info(ctx context.Context, req *abcitypes.InfoRequest) (*abcitypes.InfoResponse, error)
	Query(ctx context.Context, req *abcitypes.QueryRequest) (*abcitypes.QueryResponse, error)
}

func NewAppConnQuery

func NewAppConnQuery(appConn abcicli.Client, metrics *Metrics) AppConnQuery

type AppConns

type AppConns interface {
	service.Service

	// Mempool connection
	Mempool() AppConnMempool
	// Consensus connection
	Consensus() AppConnConsensus
	// Query connection
	Query() AppConnQuery
	// Snapshot connection
	Snapshot() AppConnSnapshot
}

AppConns is the CometBFT's interface to the application that consists of multiple connections.

func NewAppConns

func NewAppConns(clientCreator ClientCreator, metrics *Metrics) AppConns

NewAppConns calls NewMultiAppConn.

func NewMultiAppConn

func NewMultiAppConn(clientCreator ClientCreator, metrics *Metrics) AppConns

NewMultiAppConn makes all necessary abci connections to the application.

type ClientCreator

type ClientCreator interface {
	// NewABCIConsensusClient creates an ABCI client for handling
	// consensus-related queries.
	NewABCIConsensusClient() (abcicli.Client, error)
	// NewABCIMempoolClient creates an ABCI client for handling mempool-related
	// queries.
	NewABCIMempoolClient() (abcicli.Client, error)
	// NewABCIQueryClient creates an ABCI client for handling
	// query/info-related queries.
	NewABCIQueryClient() (abcicli.Client, error)
	// NewABCISnapshotClient creates an ABCI client for handling
	// snapshot-related queries.
	NewABCISnapshotClient() (abcicli.Client, error)
}

ClientCreator creates new ABCI clients based on the intended use of the client.

func DefaultClientCreator

func DefaultClientCreator(addr, transport, dbDir string) ClientCreator

DefaultClientCreator returns a default ClientCreator, which will create a local client if addr is one of "kvstore", "persistent_kvstore", "e2e", "noop".

Otherwise a remote client will be created.

Each of "kvstore", "persistent_kvstore" and "e2e" also currently have an "_connsync" variant (i.e. "kvstore_connsync", etc.), which attempts to replicate the same concurrency model as the remote client.

func NewConnSyncLocalClientCreator

func NewConnSyncLocalClientCreator(app types.Application) ClientCreator

NewConnSyncLocalClientCreator returns a local ClientCreator for the given app.

Unlike NewLocalClientCreator, this is a "connection-synchronized" local client creator, meaning each call to NewABCIClient returns an ABCI client that maintains its own mutex over the application (i.e. it is per-"connection" synchronized).

func NewConsensusSyncLocalClientCreator

func NewConsensusSyncLocalClientCreator(app types.Application) ClientCreator

NewConsensusSyncLocalClientCreator returns a ClientCreator with a more advanced concurrency model than that provided by NewLocalClientCreator or NewConnSyncLocalClientCreator.

In this model (a "consensus-synchronized" model), only the consensus client has a mutex over it to serialize consensus interactions. With all other clients (mempool, query, snapshot), enforcing synchronization is left up to the app.

func NewLocalClientCreator

func NewLocalClientCreator(app types.Application) ClientCreator

NewLocalClientCreator returns a ClientCreator for the given app, which will be running locally.

Maintains a single mutex over all new clients created with NewABCIClient.

func NewRemoteClientCreator

func NewRemoteClientCreator(addr, transport string, mustConnect bool) ClientCreator

NewRemoteClientCreator returns a ClientCreator for the given address (e.g. "192.168.0.1") and transport (e.g. "tcp"). Set mustConnect to true if you want the client to connect before reporting success.

func NewUnsyncLocalClientCreator

func NewUnsyncLocalClientCreator(app types.Application) ClientCreator

NewUnsyncLocalClientCreator returns a ClientCreator that is fully unsynchronized, meaning that all synchronization must be handled by the application. This is an advanced type of client creator, and requires special care on the application side to ensure that consensus concurrency is not violated.

type Metrics

type Metrics struct {
	// Timing for each ABCI method.
	MethodTimingSeconds metrics.Histogram `metrics_bucketsizes:".0001,.0004,.002,.009,.02,.1,.65,2,6,25" metrics_labels:"method, type"`
}

Metrics contains the prometheus metrics exposed by the proxy package.

func NopMetrics

func NopMetrics() *Metrics

func PrometheusMetrics

func PrometheusMetrics(namespace string, labelsAndValues ...string) *Metrics

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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