loop

package
v0.4.0 Latest Latest
Warning

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

Go to latest
Published: Dec 14, 2024 License: MIT Imports: 60 Imported by: 58

README ΒΆ

LOOP Plugins Go Reference

Local out of process (LOOP) plugins using github.com/hashicorp/go-plugin.

Packages

flowchart
    subgraph chainlink-common/pkg
        loop
        internal[loop/internal]
        pb[loop/internal/pb]
        test[loop/internal/test]

        internal --> pb
        test --> internal
        loop --> internal
        loop --> test
    end
    
    grpc[google.golang.org/grpc]
    hashicorp[hashicorp/go-plugin]

    loop ---> hashicorp
    loop ---> grpc
    test ---> grpc
    internal ---> grpc
    pb ---> grpc
    hashicorp --> grpc

package loop

Public API and hashicorp/go-plugin integration.

package test

Testing utilities.

package internal

GRPC client & server implementations.

package pb

Protocol buffer definitions & generated code.

Communication

GRPC client/server pairs are used to communicated between the host and each plugin. Plugins cannot communicate directly with one another, but the host can proxy a connection between them.

Here are the main components for the case of Median:

sequenceDiagram
    autonumber
    participant relayer as Relayer (plugin)
    participant core as Chainlink (host)
    participant median as Median (plugin)

    Note over core: KeystoreServer
    core->>+relayer: NewRelayer(Config, Keystore)
    Note over relayer: KeystoreClient
    Note over relayer: RelayerServer
    relayer->>-core: Relayer ID 
    Note over core: RelayerClient

    core->>+relayer: NewMedianProvider(RelayArgs, PluginArgs)
    Note over relayer: MedianProviderServer
    relayer->>-core: MedianProvider ID
    Note over core: MedianProvider (Proxy)

    Note over core:  DataSourceServer
    Note over core:  ErrorLogServer

    core->>+median: NewMedianFactory(MedianProvider, DataSource, ErrorLog)
    Note over median: MedianProviderClient
    Note over median: DataSourceClient
    Note over median: ErrorLogClient
    Note over median: MedianFactoryServer
    median->>-core: MedianFactory ID
    Note over core: MedianFactoryClient

    core->>+median: NewReportingPlugin(ReportingPluginConfig)
    Note over median: ReportingPluginServer
    median->>-core: ReportingPlugin ID
    Note over core: ReportingPluginClient

Note: MedianProvider includes multiple component services on the same connection.

sequenceDiagram
    autonumber
    participant relayer as Relayer (plugin)
    participant core as Chainlink (host)
    participant median as Median (plugin)

    core->>+relayer: NewMedianProvider(RelayArgs, PluginArgs)
    Note over relayer: OffchainConfigDigesterServer
    Note over relayer: ContractConfigTrackerServer
    Note over relayer: ContractTransmitterServer
    Note over relayer: ReportCodecServer
    Note over relayer: MedianContractServer
    Note over relayer: OnchainConfigCodecServer
    
    relayer->>-core: MedianProvider ID
    Note over core: MedianProvider (Proxy)
    
    Note over core: OffchainConfigDigesterClient
    Note over core: ContractConfigTrackerClient
    Note over core: ContractTransmitterClient
    
    core->>+median: NewMedianFactory(MedianProvider, DataSource, ErrorLog)
    Note over median: ReportCodecClient
    Note over median: MedianContractClient
    Note over median: OnchainConfigCodecClient

Auto-Recovery

The pluginService type contains reusable automatic recovery code.

type pluginService[P grpcPlugin, S services.Service] struct

Each plugin implements their own interface (Relayer, Median, etc.) with a new type that also embeds a pluginService. This new service type implements the original interface, but internally manages re-starting and re-connecting to the plugin as an implementation detail. So there is one long-lived instance of each plugin service and client, and whenever the plugin process (along with its server) crashes, the service restarts the plugin process and re-establishes the client's connection to the new server.

sequenceDiagram
    participant core as Chainlink (host)
    participant relayer as Process 1 (plugin)
    participant relayer2 as Process 2 (plugin)
    
    Note over core: RelayerService
    
    core->>+relayer: exec.Cmd
    core->>relayer: NewRelayerServer
    Note over relayer: RelayerServer
    relayer->>core: RelayerID
    Note over core: RelayerClient.init()
    
    loop
        core->>relayer: Alive?
        relayer->>core: Yes
    end
    core->>relayer: Alive?
    relayer->>-core: No

    core->>+relayer2: exec.Cmd
    core->>relayer2: NewRelayerServer
    Note over relayer2: RelayerServer
    relayer2->>core: RelayerID
    Note over core: RelayerClient.update()

    loop
        core->>relayer2: Alive?
        relayer2->>-core: Yes
    end

Documentation ΒΆ

Index ΒΆ

Constants ΒΆ

View Source
const CCIPCommitLOOPName = "ccip_commit"

CCIPCommitLOOPName is the name for types.CCIPCommitFactoryGenerator/[NewCommitLOOP].

View Source
const CCIPExecutionLOOPName = "ccip_execution"

CCIPExecutionLOOPName is the name for types.CCIPExecutionFactoryGenerator/[NewExecutionLOOP].

View Source
const PluginKeystoreName = "keystore"

PluginKeystoreName is the name for keystore.Keystore

View Source
const PluginMedianName = "median"

PluginMedianName is the name for types.PluginMedian/[NewGRPCPluginMedian].

View Source
const PluginMercuryName = "mercury"

PluginMercurynName is the name for types.PluginMercury/[NewGRPCPluginMercury].

View Source
const PluginRelayerName = "relayer"

PluginRelayerName is the name for types.PluginRelayer/[NewGRPCPluginRelayer].

View Source
const PluginStandardCapabilitiesName = "standardcapabilities"

Variables ΒΆ

View Source
var ErrPluginUnavailable = goplugin.ErrPluginUnavailable

Functions ΒΆ

func HCLogLogger ΒΆ

func HCLogLogger(l logger.Logger) hclog.Logger

HCLogLogger returns an hclog.Logger backed by the given logger.Logger.

func ManagedGRPCClientConfig ΒΆ

func ManagedGRPCClientConfig(clientConfig *plugin.ClientConfig, c BrokerConfig) *plugin.ClientConfig

ManagedGRPCClientConfig return a Managed plugin and set grpc config values from the BrokerConfig. Note: managed plugins shutdown when the parent process exits. We may want to change this behavior in the future to enable host process restarts without restarting the plugin. To do that we would also need supply the appropriate ReattachConfig to the plugin.ClientConfig.

func NewLogger ΒΆ

func NewLogger() (logger.Logger, error)

NewLogger returns a new logger.Logger configured to encode hclog compatible JSON.

func PluginCCIPCommitHandshakeConfig ΒΆ

func PluginCCIPCommitHandshakeConfig() plugin.HandshakeConfig

func PluginCCIPExecutionHandshakeConfig ΒΆ

func PluginCCIPExecutionHandshakeConfig() plugin.HandshakeConfig

func PluginKeystoreHandshakeConfig ΒΆ added in v0.4.0

func PluginKeystoreHandshakeConfig() plugin.HandshakeConfig

func PluginMedianHandshakeConfig ΒΆ

func PluginMedianHandshakeConfig() plugin.HandshakeConfig

func PluginMercuryHandshakeConfig ΒΆ

func PluginMercuryHandshakeConfig() plugin.HandshakeConfig

func PluginRelayerHandshakeConfig ΒΆ

func PluginRelayerHandshakeConfig() plugin.HandshakeConfig

func SetupTracing ΒΆ

func SetupTracing(config TracingConfig) error

SetupTracing initializes open telemetry with the provided config. It sets the global trace provider and opens a connection to the configured collector.

func StandardCapabilitiesHandshakeConfig ΒΆ

func StandardCapabilitiesHandshakeConfig() plugin.HandshakeConfig

Types ΒΆ

type BrokerConfig ΒΆ

type BrokerConfig = net.BrokerConfig

type CommitFactoryService ΒΆ

type CommitFactoryService struct {
	goplugin.PluginService[*CommitLoop, types.ReportingPluginFactory]
}

CommitFactoryService is a types.Service that maintains an internal types.CCIPCommitFactoryGenerator.

func NewCommitService ΒΆ

func NewCommitService(lggr logger.Logger, grpcOpts GRPCOpts, cmd func() *exec.Cmd, provider types.CCIPCommitProvider) *CommitFactoryService

NewCommitService returns a new *CommitFactoryService. cmd must return a new exec.Cmd each time it is called.

type CommitLoop ΒΆ

type CommitLoop struct {
	plugin.NetRPCUnsupportedPlugin

	BrokerConfig

	PluginServer types.CCIPCommitFactoryGenerator
	// contains filtered or unexported fields
}

func (*CommitLoop) ClientConfig ΒΆ

func (p *CommitLoop) ClientConfig() *plugin.ClientConfig

func (*CommitLoop) GRPCClient ΒΆ

func (p *CommitLoop) GRPCClient(_ context.Context, broker *plugin.GRPCBroker, conn *grpc.ClientConn) (interface{}, error)

GRPCClient implements plugin.GRPCPlugin and returns the pluginClient types.CCIPCommitFactoryGenerator, updated with the new broker and conn.

func (*CommitLoop) GRPCServer ΒΆ

func (p *CommitLoop) GRPCServer(broker *plugin.GRPCBroker, server *grpc.Server) error

type ContextValues ΒΆ

type ContextValues struct {
	JobID   any
	JobName any

	ContractID    any
	FeedID        any
	TransmitterID any
}

ContextValues is a helper for passing values via a context.Context.

func (*ContextValues) Args ΒΆ

func (v *ContextValues) Args() (a []any)

Args returns a slice of args to pass to logger.Logger.With.

func (*ContextValues) ContextWithValues ΒΆ

func (v *ContextValues) ContextWithValues(ctx context.Context) context.Context

ContextWithValues returns a context.Context with values set from v.

func (*ContextValues) SetValues ΒΆ

func (v *ContextValues) SetValues(ctx context.Context)

SetValues sets v to values from the ctx.

type EnvConfig ΒΆ

type EnvConfig struct {
	DatabaseURL *url.URL

	PrometheusPort int

	TracingEnabled         bool
	TracingCollectorTarget string
	TracingSamplingRatio   float64
	TracingTLSCertPath     string
	TracingAttributes      map[string]string

	TelemetryEnabled               bool
	TelemetryEndpoint              string
	TelemetryInsecureConnection    bool
	TelemetryCACertFile            string
	TelemetryAttributes            OtelAttributes
	TelemetryTraceSampleRatio      float64
	TelemetryAuthHeaders           map[string]string
	TelemetryAuthPubKeyHex         string
	TelemetryEmitterBatchProcessor bool
	TelemetryEmitterExportTimeout  time.Duration
}

EnvConfig is the configuration between the application and the LOOP executable. The values are fully resolved and static and passed via the environment.

func (*EnvConfig) AsCmdEnv ΒΆ

func (e *EnvConfig) AsCmdEnv() (env []string)

AsCmdEnv returns a slice of environment variable key/value pairs for an exec.Cmd.

type ErrorLog ΒΆ

type ErrorLog = core.ErrorLog

Deprecated

type ExecutionFactoryService ΒΆ

type ExecutionFactoryService struct {
	goplugin.PluginService[*ExecutionLoop, types.ReportingPluginFactory]
}

ExecutionFactoryService is a types.Service that maintains an internal types.CCIPExecutionFactoryGenerator.

func NewExecutionService ΒΆ

func NewExecutionService(lggr logger.Logger, grpcOpts GRPCOpts, cmd func() *exec.Cmd, srcProvider types.CCIPExecProvider, dstProvider types.CCIPExecProvider, srcChain uint32, dstChain uint32, sourceTokenAddress string) *ExecutionFactoryService

NewExecutionService returns a new *ExecutionFactoryService. cmd must return a new exec.Cmd each time it is called.

type ExecutionLoop ΒΆ

type ExecutionLoop struct {
	plugin.NetRPCUnsupportedPlugin

	BrokerConfig

	PluginServer types.CCIPExecutionFactoryGenerator
	// contains filtered or unexported fields
}

func (*ExecutionLoop) ClientConfig ΒΆ

func (p *ExecutionLoop) ClientConfig() *plugin.ClientConfig

func (*ExecutionLoop) GRPCClient ΒΆ

func (p *ExecutionLoop) GRPCClient(_ context.Context, broker *plugin.GRPCBroker, conn *grpc.ClientConn) (interface{}, error)

GRPCClient implements plugin.GRPCPlugin and returns the pluginClient types.CCIPExecutionFactoryGenerator, updated with the new broker and conn.

func (*ExecutionLoop) GRPCServer ΒΆ

func (p *ExecutionLoop) GRPCServer(broker *plugin.GRPCBroker, server *grpc.Server) error

type GRPCOpts ΒΆ

type GRPCOpts = loopnet.GRPCOpts

func NewGRPCOpts ΒΆ

func NewGRPCOpts(registerer prometheus.Registerer) GRPCOpts

NewGRPCOpts initializes open telemetry and returns GRPCOpts with telemetry interceptors. It is called from the host and each plugin - intended as there is bidirectional communication

type GRPCPluginKeystore ΒΆ added in v0.4.0

type GRPCPluginKeystore struct {
	plugin.NetRPCUnsupportedPlugin

	BrokerConfig

	PluginServer keystorepb.GRPCService
	// contains filtered or unexported fields
}

func (*GRPCPluginKeystore) ClientConfig ΒΆ added in v0.4.0

func (p *GRPCPluginKeystore) ClientConfig() *plugin.ClientConfig

func (*GRPCPluginKeystore) GRPCClient ΒΆ added in v0.4.0

func (p *GRPCPluginKeystore) GRPCClient(_ context.Context, broker *plugin.GRPCBroker, conn *grpc.ClientConn) (interface{}, error)

func (*GRPCPluginKeystore) GRPCServer ΒΆ added in v0.4.0

func (p *GRPCPluginKeystore) GRPCServer(broker *plugin.GRPCBroker, server *grpc.Server) error

type GRPCPluginMedian ΒΆ

type GRPCPluginMedian struct {
	plugin.NetRPCUnsupportedPlugin

	BrokerConfig

	PluginServer core.PluginMedian
	// contains filtered or unexported fields
}

func (*GRPCPluginMedian) ClientConfig ΒΆ

func (p *GRPCPluginMedian) ClientConfig() *plugin.ClientConfig

func (*GRPCPluginMedian) GRPCClient ΒΆ

func (p *GRPCPluginMedian) GRPCClient(_ context.Context, broker *plugin.GRPCBroker, conn *grpc.ClientConn) (interface{}, error)

GRPCClient implements plugin.GRPCPlugin and returns the pluginClient types.PluginMedian, updated with the new broker and conn.

func (*GRPCPluginMedian) GRPCServer ΒΆ

func (p *GRPCPluginMedian) GRPCServer(broker *plugin.GRPCBroker, server *grpc.Server) error

type GRPCPluginMercury ΒΆ

type GRPCPluginMercury struct {
	plugin.NetRPCUnsupportedPlugin

	BrokerConfig

	PluginServer types.PluginMercury
	// contains filtered or unexported fields
}

func (*GRPCPluginMercury) ClientConfig ΒΆ

func (p *GRPCPluginMercury) ClientConfig() *plugin.ClientConfig

func (*GRPCPluginMercury) GRPCClient ΒΆ

func (p *GRPCPluginMercury) GRPCClient(_ context.Context, broker *plugin.GRPCBroker, conn *grpc.ClientConn) (interface{}, error)

GRPCClient implements plugin.GRPCPlugin and returns the pluginClient types.PluginMercury, updated with the new broker and conn.

func (*GRPCPluginMercury) GRPCServer ΒΆ

func (p *GRPCPluginMercury) GRPCServer(broker *plugin.GRPCBroker, server *grpc.Server) error

type GRPCPluginRelayer ΒΆ

type GRPCPluginRelayer struct {
	plugin.NetRPCUnsupportedPlugin

	BrokerConfig

	PluginServer PluginRelayer
	// contains filtered or unexported fields
}

GRPCPluginRelayer implements plugin.GRPCPlugin for types.PluginRelayer.

func (*GRPCPluginRelayer) ClientConfig ΒΆ

func (p *GRPCPluginRelayer) ClientConfig() *plugin.ClientConfig

func (*GRPCPluginRelayer) GRPCClient ΒΆ

func (p *GRPCPluginRelayer) GRPCClient(_ context.Context, broker *plugin.GRPCBroker, conn *grpc.ClientConn) (interface{}, error)

func (*GRPCPluginRelayer) GRPCServer ΒΆ

func (p *GRPCPluginRelayer) GRPCServer(broker *plugin.GRPCBroker, server *grpc.Server) error

type Keystore ΒΆ

type Keystore = core.Keystore

Deprecated

type KeystoreService ΒΆ added in v0.4.0

type KeystoreService struct {
	goplugin.PluginService[*GRPCPluginKeystore, keystore.GRPCService]
}

KeystoreService is a types.Service that maintains an internal [keystore.Keystore].

func NewKeystoreService ΒΆ added in v0.4.0

func NewKeystoreService(lggr logger.Logger, grpcOpts GRPCOpts, cmd func() *exec.Cmd, config []byte) *KeystoreService

type LogMessageExtraArgs ΒΆ

type LogMessageExtraArgs struct {
	Key   string      `json:"key"`
	Value interface{} `json:"value"`
}

LogMessageExtraArgs is a key value pair within the Output payload

type MedianService ΒΆ

MedianService is a types.Service that maintains an internal types.PluginMedian.

func NewMedianService ΒΆ

func NewMedianService(lggr logger.Logger, grpcOpts GRPCOpts, cmd func() *exec.Cmd, provider types.MedianProvider, contractAddress string, dataSource, juelsPerFeeCoin, gasPriceSubunits median.DataSource, errorLog core.ErrorLog) *MedianService

NewMedianService returns a new *MedianService. cmd must return a new exec.Cmd each time it is called.

type MercuryV1Service ΒΆ

type MercuryV1Service struct {
	goplugin.PluginService[*GRPCPluginMercury, types.MercuryPluginFactory]
}

MercuryV1Service is a types.Service that maintains an internal types.PluginMedian.

func NewMercuryV1Service ΒΆ

func NewMercuryV1Service(lggr logger.Logger, grpcOpts GRPCOpts, cmd func() *exec.Cmd, provider types.MercuryProvider, dataSource mercury_v1_types.DataSource) *MercuryV1Service

NewMercuryV1Service returns a new *MercuryV1Service. cmd must return a new exec.Cmd each time it is called.

type MercuryV2Service ΒΆ

type MercuryV2Service struct {
	goplugin.PluginService[*GRPCPluginMercury, types.MercuryPluginFactory]
}

MercuryV2Service is a types.Service that maintains an internal types.PluginMedian.

func NewMercuryV2Service ΒΆ

func NewMercuryV2Service(lggr logger.Logger, grpcOpts GRPCOpts, cmd func() *exec.Cmd, provider types.MercuryProvider, dataSource mercury_v2_types.DataSource) *MercuryV2Service

NewMercuryV2Service returns a new *MercuryV2Service. cmd must return a new exec.Cmd each time it is called.

type MercuryV3Service ΒΆ

type MercuryV3Service struct {
	goplugin.PluginService[*GRPCPluginMercury, types.MercuryPluginFactory]
}

MercuryV3Service is a types.Service that maintains an internal types.PluginMedian.

func NewMercuryV3Service ΒΆ

func NewMercuryV3Service(lggr logger.Logger, grpcOpts GRPCOpts, cmd func() *exec.Cmd, provider types.MercuryProvider, dataSource mercury_v3_types.DataSource) *MercuryV3Service

NewMercuryV3Service returns a new *MercuryV3Service. cmd must return a new exec.Cmd each time it is called.

type MercuryV4Service ΒΆ added in v0.2.2

type MercuryV4Service struct {
	goplugin.PluginService[*GRPCPluginMercury, types.MercuryPluginFactory]
}

MercuryV4Service is a types.Service that maintains an internal types.PluginMedian.

func NewMercuryV4Service ΒΆ added in v0.2.2

func NewMercuryV4Service(lggr logger.Logger, grpcOpts GRPCOpts, cmd func() *exec.Cmd, provider types.MercuryProvider, dataSource mercury_v4_types.DataSource) *MercuryV4Service

NewMercuryV4Service returns a new *MercuryV4Service. cmd must return a new exec.Cmd each time it is called.

func (*MercuryV4Service) NewMercuryPlugin ΒΆ added in v0.2.2

type OtelAttributes ΒΆ added in v0.2.2

type OtelAttributes map[string]string

func (OtelAttributes) AsStringAttributes ΒΆ added in v0.2.2

func (a OtelAttributes) AsStringAttributes() (attributes []attribute.KeyValue)

type Plugin ΒΆ

type Plugin struct {
	Logger logger.Logger
	// contains filtered or unexported fields
}

Plugin is a base layer for plugins to easily manage sub-[types.Service]s. Useful for implementing PluginRelayer and PluginMedian.

func (*Plugin) Close ΒΆ

func (p *Plugin) Close() (err error)

func (*Plugin) HealthReport ΒΆ

func (p *Plugin) HealthReport() map[string]error

func (*Plugin) Name ΒΆ

func (p *Plugin) Name() string

func (*Plugin) Ready ΒΆ

func (p *Plugin) Ready() error

func (*Plugin) Start ΒΆ

func (p *Plugin) Start(ctx context.Context) error

func (*Plugin) SubService ΒΆ

func (p *Plugin) SubService(s services.Service)

type PluginMedian ΒΆ

type PluginMedian = core.PluginMedian

Deprecated

type PluginRelayer ΒΆ

type PluginRelayer = looptypes.PluginRelayer

type PromServer ΒΆ

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

func NewPromServer ΒΆ

func NewPromServer(port int, lggr logger.Logger) *PromServer

func (*PromServer) Close ΒΆ

func (p *PromServer) Close() error

Close shuts down the underlying HTTP server. See http.Server.Close for details

func (*PromServer) Name ΒΆ

func (p *PromServer) Name() string

Name of the server

func (*PromServer) Start ΒΆ

func (p *PromServer) Start() error

Start starts HTTP server on specified port to handle metrics requests

type PromServerOpts ΒΆ

type PromServerOpts struct {
	Handler http.Handler
}

func (PromServerOpts) New ΒΆ

func (o PromServerOpts) New(port int, lggr logger.Logger) *PromServer

type ProviderServer ΒΆ

type ProviderServer interface {
	Start(context.Context) error
	Close() error
	GetConn() (grpc.ClientConnInterface, error)
}

type Relayer ΒΆ

type Relayer = looptypes.Relayer

type RelayerService ΒΆ

type RelayerService struct {
	goplugin.PluginService[*GRPCPluginRelayer, Relayer]
}

RelayerService is a types.Service that maintains an internal Relayer.

func NewRelayerService ΒΆ

func NewRelayerService(lggr logger.Logger, grpcOpts GRPCOpts, cmd func() *exec.Cmd, config string, keystore core.Keystore, capabilityRegistry core.CapabilitiesRegistry) *RelayerService

NewRelayerService returns a new *RelayerService. cmd must return a new exec.Cmd each time it is called.

func (*RelayerService) GetChainStatus ΒΆ

func (r *RelayerService) GetChainStatus(ctx context.Context) (types.ChainStatus, error)

func (*RelayerService) LatestHead ΒΆ added in v0.2.2

func (r *RelayerService) LatestHead(ctx context.Context) (types.Head, error)

func (*RelayerService) ListNodeStatuses ΒΆ

func (r *RelayerService) ListNodeStatuses(ctx context.Context, pageSize int32, pageToken string) (nodes []types.NodeStatus, nextPageToken string, total int, err error)

func (*RelayerService) NewConfigProvider ΒΆ

func (r *RelayerService) NewConfigProvider(ctx context.Context, args types.RelayArgs) (types.ConfigProvider, error)

func (*RelayerService) NewContractReader ΒΆ

func (r *RelayerService) NewContractReader(ctx context.Context, contractReaderConfig []byte) (types.ContractReader, error)

func (*RelayerService) NewContractWriter ΒΆ added in v0.4.0

func (r *RelayerService) NewContractWriter(ctx context.Context, contractWriterConfig []byte) (types.ContractWriter, error)

func (*RelayerService) NewLLOProvider ΒΆ

func (r *RelayerService) NewLLOProvider(ctx context.Context, rargs types.RelayArgs, pargs types.PluginArgs) (types.LLOProvider, error)

func (*RelayerService) NewPluginProvider ΒΆ

func (r *RelayerService) NewPluginProvider(ctx context.Context, rargs types.RelayArgs, pargs types.PluginArgs) (types.PluginProvider, error)

func (*RelayerService) Transact ΒΆ

func (r *RelayerService) Transact(ctx context.Context, from, to string, amount *big.Int, balanceCheck bool) error

type ReportingPluginFactory ΒΆ

type ReportingPluginFactory = types.ReportingPluginFactory

Deprecated

type Server ΒΆ

type Server struct {
	GRPCOpts GRPCOpts
	Logger   logger.SugaredLogger
	// contains filtered or unexported fields
}

Server holds common plugin server fields.

func MustNewStartedServer ΒΆ

func MustNewStartedServer(loggerName string) *Server

MustNewStartedServer returns a new started Server like NewStartedServer, but logs and exits in the event of error. The caller is responsible for calling Server.Stop().

func NewStartedServer ΒΆ

func NewStartedServer(loggerName string) (*Server, error)

NewStartedServer returns a started Server. The caller is responsible for calling Server.Stop().

func (*Server) MustRegister ΒΆ

func (s *Server) MustRegister(c services.HealthReporter)

MustRegister registers the HealthReporter with services.HealthChecker, or exits upon failure.

func (*Server) Register ΒΆ

func (s *Server) Register(c services.HealthReporter) error

func (*Server) Stop ΒΆ

func (s *Server) Stop()

Stop closes resources and flushes logs.

type StandardCapabilities ΒΆ

type StandardCapabilities interface {
	services.Service
	Initialise(
		ctx context.Context,
		config string,
		telemetryService core.TelemetryService,
		store core.KeyValueStore,
		capabilityRegistry core.CapabilitiesRegistry,
		errorLog core.ErrorLog,
		pipelineRunner core.PipelineRunnerService,
		relayerSet core.RelayerSet,
		oracleFactory core.OracleFactory,
	) error
	Infos(ctx context.Context) ([]capabilities.CapabilityInfo, error)
}

type StandardCapabilitiesLoop ΒΆ

type StandardCapabilitiesLoop struct {
	Logger logger.Logger
	plugin.NetRPCUnsupportedPlugin
	BrokerConfig
	PluginServer StandardCapabilities
	// contains filtered or unexported fields
}

func (*StandardCapabilitiesLoop) ClientConfig ΒΆ

func (p *StandardCapabilitiesLoop) ClientConfig() *plugin.ClientConfig

func (*StandardCapabilitiesLoop) GRPCClient ΒΆ

func (p *StandardCapabilitiesLoop) GRPCClient(_ context.Context, broker *plugin.GRPCBroker, conn *grpc.ClientConn) (interface{}, error)

func (*StandardCapabilitiesLoop) GRPCServer ΒΆ

func (p *StandardCapabilitiesLoop) GRPCServer(broker *plugin.GRPCBroker, server *grpc.Server) error

type StandardCapabilitiesService ΒΆ

type StandardCapabilitiesService struct {
	goplugin.PluginService[*StandardCapabilitiesLoop, StandardCapabilities]
}

func NewStandardCapabilitiesService ΒΆ

func NewStandardCapabilitiesService(lggr logger.Logger, grpcOpts GRPCOpts, cmd func() *exec.Cmd) *StandardCapabilitiesService

type TracingConfig ΒΆ

type TracingConfig struct {
	// NodeAttributes are the attributes to attach to traces.
	NodeAttributes OtelAttributes

	// Enables tracing; requires a collector to be provided
	Enabled bool

	// Collector is the address of the OTEL collector to send traces to.
	CollectorTarget string

	// SamplingRatio is the ratio of traces to sample. 1.0 means sample all traces.
	SamplingRatio float64

	// TLSCertPath is the path to the TLS certificate to use when connecting to the collector.
	TLSCertPath string

	// OnDialError is called when the dialer fails, providing an opportunity to log.
	OnDialError func(error)

	// Auth
	AuthHeaders map[string]string
}

func (TracingConfig) Attributes ΒΆ added in v0.2.2

func (config TracingConfig) Attributes() []attribute.KeyValue

func (TracingConfig) NewSpanExporter ΒΆ added in v0.2.2

func (config TracingConfig) NewSpanExporter() (sdktrace.SpanExporter, error)

Directories ΒΆ

Path Synopsis
adapters
internal
net
pb
pb/mercury/v2
NOTE: the relative paths in the proto_path are to ensure we find common utilities, like BigInt
NOTE: the relative paths in the proto_path are to ensure we find common utilities, like BigInt
test/cmd command