Documentation
¶
Overview ¶
Package rpcconsumer is a generated GoMock package.
Package rpcsmartrouter provides a centralized RPC routing solution for the Lava protocol.
Architecture Overview ¶
The smart router is designed for centralized deployments where providers are statically configured rather than dynamically discovered through blockchain pairing. This is useful for:
- Enterprise deployments with known provider infrastructure
- Testing and development environments
- Use cases requiring predictable provider routing
Key Differences from rpcconsumer ¶
rpcsmartrouter (centralized):
- Uses pre-configured static providers from configuration files
- No blockchain state tracking required
- Provider selection based on configured weights (static providers get 10x multiplier)
- No epoch management or on-chain pairing updates
rpcconsumer (decentralized):
- Discovers providers dynamically through blockchain pairing
- Tracks blockchain state, epochs, and provider stake
- Provider selection weighted by actual on-chain stake
- Includes conflict detection and finalization consensus
Provider Selection ¶
Static providers are configured in YAML files and automatically receive a 10x weight multiplier compared to blockchain providers. This ensures static providers are preferred in routing decisions. See StaticProviderDummyCoin for implementation details.
Index ¶
- Constants
- Variables
- func CreateRPCSmartRouterCobraCommand() *cobra.Command
- func CreateTestRPCSmartRouterCobraCommand() *cobra.Command
- func ParseEndpoints(viper_endpoints *viper.Viper, geolocation uint64) (endpoints []*lavasession.RPCEndpoint, err error)
- type AnalyticsServerAddresses
- type CancelableContextHolder
- type MinimalStateTrackerInf
- type MockMinimalStateTrackerInf
- type MockMinimalStateTrackerInfMockRecorder
- type MockRelayerClient
- func (m *MockRelayerClient) EXPECT() *MockRelayerClientMockRecorder
- func (m *MockRelayerClient) Probe(ctx context.Context, in *types.ProbeRequest, opts ...grpc.CallOption) (*types.ProbeReply, error)
- func (m *MockRelayerClient) Relay(ctx context.Context, in *types.RelayRequest, opts ...grpc.CallOption) (*types.RelayReply, error)
- func (m *MockRelayerClient) RelaySubscribe(ctx context.Context, in *types.RelayRequest, opts ...grpc.CallOption) (types.Relayer_RelaySubscribeClient, error)
- type MockRelayerClientMockRecorder
- type MockRelayerServer
- func (m *MockRelayerServer) EXPECT() *MockRelayerServerMockRecorder
- func (m *MockRelayerServer) Probe(arg0 context.Context, arg1 *types.ProbeRequest) (*types.ProbeReply, error)
- func (m *MockRelayerServer) Relay(arg0 context.Context, arg1 *types.RelayRequest) (*types.RelayReply, error)
- func (m *MockRelayerServer) RelaySubscribe(arg0 *types.RelayRequest, arg1 types.Relayer_RelaySubscribeServer) error
- type MockRelayerServerMockRecorder
- type MockRelayer_RelaySubscribeClient
- func (m *MockRelayer_RelaySubscribeClient) CloseSend() error
- func (m *MockRelayer_RelaySubscribeClient) Context() context.Context
- func (m *MockRelayer_RelaySubscribeClient) EXPECT() *MockRelayer_RelaySubscribeClientMockRecorder
- func (m *MockRelayer_RelaySubscribeClient) Header() (metadata.MD, error)
- func (m *MockRelayer_RelaySubscribeClient) Recv() (*types.RelayReply, error)
- func (m_2 *MockRelayer_RelaySubscribeClient) RecvMsg(m any) error
- func (m_2 *MockRelayer_RelaySubscribeClient) SendMsg(m any) error
- func (m *MockRelayer_RelaySubscribeClient) Trailer() metadata.MD
- type MockRelayer_RelaySubscribeClientMockRecorder
- func (mr *MockRelayer_RelaySubscribeClientMockRecorder) CloseSend() *gomock.Call
- func (mr *MockRelayer_RelaySubscribeClientMockRecorder) Context() *gomock.Call
- func (mr *MockRelayer_RelaySubscribeClientMockRecorder) Header() *gomock.Call
- func (mr *MockRelayer_RelaySubscribeClientMockRecorder) Recv() *gomock.Call
- func (mr *MockRelayer_RelaySubscribeClientMockRecorder) RecvMsg(m any) *gomock.Call
- func (mr *MockRelayer_RelaySubscribeClientMockRecorder) SendMsg(m any) *gomock.Call
- func (mr *MockRelayer_RelaySubscribeClientMockRecorder) Trailer() *gomock.Call
- type MockRelayer_RelaySubscribeServer
- func (m *MockRelayer_RelaySubscribeServer) Context() context.Context
- func (m *MockRelayer_RelaySubscribeServer) EXPECT() *MockRelayer_RelaySubscribeServerMockRecorder
- func (m_2 *MockRelayer_RelaySubscribeServer) RecvMsg(m any) error
- func (m *MockRelayer_RelaySubscribeServer) Send(arg0 *types.RelayReply) error
- func (m *MockRelayer_RelaySubscribeServer) SendHeader(arg0 metadata.MD) error
- func (m_2 *MockRelayer_RelaySubscribeServer) SendMsg(m any) error
- func (m *MockRelayer_RelaySubscribeServer) SetHeader(arg0 metadata.MD) error
- func (m *MockRelayer_RelaySubscribeServer) SetTrailer(arg0 metadata.MD)
- type MockRelayer_RelaySubscribeServerMockRecorder
- func (mr *MockRelayer_RelaySubscribeServerMockRecorder) Context() *gomock.Call
- func (mr *MockRelayer_RelaySubscribeServerMockRecorder) RecvMsg(m any) *gomock.Call
- func (mr *MockRelayer_RelaySubscribeServerMockRecorder) Send(arg0 any) *gomock.Call
- func (mr *MockRelayer_RelaySubscribeServerMockRecorder) SendHeader(arg0 any) *gomock.Call
- func (mr *MockRelayer_RelaySubscribeServerMockRecorder) SendMsg(m any) *gomock.Call
- func (mr *MockRelayer_RelaySubscribeServerMockRecorder) SetHeader(arg0 any) *gomock.Call
- func (mr *MockRelayer_RelaySubscribeServerMockRecorder) SetTrailer(arg0 any) *gomock.Call
- type RPCSmartRouter
- type RPCSmartRouterServer
- func (rpcss *RPCSmartRouterServer) CancelSubscriptionContext(subscriptionKey string)
- func (rpcss *RPCSmartRouterServer) CreateDappKey(userData common.UserData) string
- func (rpcss *RPCSmartRouterServer) GetChainIdAndApiInterface() (string, string)
- func (rpcss *RPCSmartRouterServer) GetListeningAddress() string
- func (rpcss *RPCSmartRouterServer) HandleDirectiveHeadersForMessage(chainMessage chainlib.ChainMessage, directiveHeaders map[string]string)
- func (rpcss *RPCSmartRouterServer) IsHealthy() bool
- func (rpcss *RPCSmartRouterServer) IsInitialized() bool
- func (rpcss *RPCSmartRouterServer) LavaDirectiveHeaders(metadata []pairingtypes.Metadata) ([]pairingtypes.Metadata, map[string]string)
- func (rpcss *RPCSmartRouterServer) ParseRelay(ctx context.Context, url string, req string, connectionType string, ...) (protocolMessage chainlib.ProtocolMessage, err error)
- func (rpcss *RPCSmartRouterServer) ProcessRelaySend(ctx context.Context, protocolMessage chainlib.ProtocolMessage, ...) (*relaycore.RelayProcessor, error)
- func (rpcss *RPCSmartRouterServer) RoundTrip(req *http.Request) (*http.Response, error)
- func (rpcss *RPCSmartRouterServer) SendParsedRelay(ctx context.Context, analytics *metrics.RelayMetrics, ...) (relayResult *common.RelayResult, errRet error)
- func (rpcss *RPCSmartRouterServer) SendRelay(ctx context.Context, url string, req string, connectionType string, ...) (relayResult *common.RelayResult, errRet error)
- func (rpcss *RPCSmartRouterServer) ServeRPCRequests(ctx context.Context, listenEndpoint *lavasession.RPCEndpoint, ...) (err error)
- func (rpcss *RPCSmartRouterServer) SetConsistencySeenBlock(blockSeen int64, key string)
- type RelayProcessorForHeaders
- type RelayStateMachine
- type RelayStateSendInstructions
- type ResultsCheckerInf
- type SmartRouterRelaySender
- type SmartRouterRelayStateMachine
- func (srsm *SmartRouterRelayStateMachine) GetDebugState() bool
- func (srsm *SmartRouterRelayStateMachine) GetProtocolMessage() chainlib.ProtocolMessage
- func (srsm *SmartRouterRelayStateMachine) GetRelayTaskChannel() (chan RelayStateSendInstructions, error)
- func (srsm *SmartRouterRelayStateMachine) GetSelection() relaycore.Selection
- func (srsm *SmartRouterRelayStateMachine) GetUsedProviders() *lavasession.UsedProviders
- func (srsm *SmartRouterRelayStateMachine) Initialized() bool
- func (srsm *SmartRouterRelayStateMachine) SetRelayRetriesManager(relayRetriesManager *lavaprotocol.RelayRetriesManager)
- func (srsm *SmartRouterRelayStateMachine) SetResultsChecker(resultsChecker ResultsCheckerInf)
- func (srsm *SmartRouterRelayStateMachine) UpdateBatch(err error)
Constants ¶
const ( DefaultRPCSmartRouterFileName = "rpcsmartrouter.yml" DebugRelaysFlagName = "debug-relays" DebugProbesFlagName = "debug-probes" )
const ( // maximum number of retries to send due to the ticker, if we didn't get a response after 10 different attempts then just wait. MaximumNumberOfTickerRelayRetries = 10 MaxRelayRetries = 6 SendRelayAttempts = 3 // Subscription and pairing management constants MaxSubscriptionMapSizeWarningThreshold = 5000 SubscriptionCleanupInterval = 1 * time.Minute PairingInitializationTimeout = 30 * time.Second PairingCheckInterval = 1 * time.Second BlockGapWarningThreshold = 1000 RelayRetryBackoffDuration = 2 * time.Millisecond )
Variables ¶
var ( Yaml_config_properties = []string{"network-address", "chain-id", "api-interface"} RelaysHealthEnableFlagDefault = true RelayHealthIntervalFlagDefault = 5 * time.Minute // StaticProviderDummyCoin is used for type compatibility in provider sessions. // Static providers don't use blockchain stake for selection; they automatically // receive a 10x weight multiplier in CalcWeightsByStake (see lavasession package). // The coin value is ignored but the object must exist to avoid nil pointer errors. StaticProviderDummyCoin = sdk.NewCoin("ulava", sdk.NewInt(1)) )
var NoResponseTimeout = protocolerrors.NoResponseTimeout
NoResponseTimeout is imported from protocolerrors to avoid duplicate error code registration
Functions ¶
func ParseEndpoints ¶
func ParseEndpoints(viper_endpoints *viper.Viper, geolocation uint64) (endpoints []*lavasession.RPCEndpoint, err error)
Types ¶
type AnalyticsServerAddresses ¶
type AnalyticsServerAddresses struct {
AddApiMethodCallsMetrics bool
MetricsListenAddress string
RelayServerAddress string
RelayKafkaAddress string
RelayKafkaTopic string
RelayKafkaUsername string
RelayKafkaPassword string
RelayKafkaMechanism string
RelayKafkaTLSEnabled bool
RelayKafkaTLSInsecure bool
ReportsAddressFlag string
OptimizerQoSAddress string
OptimizerQoSListen bool
}
type CancelableContextHolder ¶
type CancelableContextHolder struct {
Ctx context.Context
CancelFunc context.CancelFunc
}
type MinimalStateTrackerInf ¶
type MinimalStateTrackerInf interface {
GetLatestVirtualEpoch() uint64
}
MinimalStateTrackerInf is a minimal interface for smart router state tracking
type MockMinimalStateTrackerInf ¶
type MockMinimalStateTrackerInf struct {
// contains filtered or unexported fields
}
MockMinimalStateTrackerInf is a mock of MinimalStateTrackerInf interface.
func NewMockMinimalStateTrackerInf ¶
func NewMockMinimalStateTrackerInf(ctrl *gomock.Controller) *MockMinimalStateTrackerInf
NewMockMinimalStateTrackerInf creates a new mock instance.
func (*MockMinimalStateTrackerInf) EXPECT ¶
func (m *MockMinimalStateTrackerInf) EXPECT() *MockMinimalStateTrackerInfMockRecorder
EXPECT returns an object that allows the caller to indicate expected use.
func (*MockMinimalStateTrackerInf) GetLatestVirtualEpoch ¶
func (m *MockMinimalStateTrackerInf) GetLatestVirtualEpoch() uint64
GetLatestVirtualEpoch mocks base method.
type MockMinimalStateTrackerInfMockRecorder ¶
type MockMinimalStateTrackerInfMockRecorder struct {
// contains filtered or unexported fields
}
MockMinimalStateTrackerInfMockRecorder is the mock recorder for MockMinimalStateTrackerInf.
func (*MockMinimalStateTrackerInfMockRecorder) GetLatestVirtualEpoch ¶
func (mr *MockMinimalStateTrackerInfMockRecorder) GetLatestVirtualEpoch() *gomock.Call
GetLatestVirtualEpoch indicates an expected call of GetLatestVirtualEpoch.
type MockRelayerClient ¶
type MockRelayerClient struct {
// contains filtered or unexported fields
}
MockRelayerClient is a mock of RelayerClient interface.
func NewMockRelayerClient ¶
func NewMockRelayerClient(ctrl *gomock.Controller) *MockRelayerClient
NewMockRelayerClient creates a new mock instance.
func (*MockRelayerClient) EXPECT ¶
func (m *MockRelayerClient) EXPECT() *MockRelayerClientMockRecorder
EXPECT returns an object that allows the caller to indicate expected use.
func (*MockRelayerClient) Probe ¶
func (m *MockRelayerClient) Probe(ctx context.Context, in *types.ProbeRequest, opts ...grpc.CallOption) (*types.ProbeReply, error)
Probe mocks base method.
func (*MockRelayerClient) Relay ¶
func (m *MockRelayerClient) Relay(ctx context.Context, in *types.RelayRequest, opts ...grpc.CallOption) (*types.RelayReply, error)
Relay mocks base method.
func (*MockRelayerClient) RelaySubscribe ¶
func (m *MockRelayerClient) RelaySubscribe(ctx context.Context, in *types.RelayRequest, opts ...grpc.CallOption) (types.Relayer_RelaySubscribeClient, error)
RelaySubscribe mocks base method.
type MockRelayerClientMockRecorder ¶
type MockRelayerClientMockRecorder struct {
// contains filtered or unexported fields
}
MockRelayerClientMockRecorder is the mock recorder for MockRelayerClient.
func (*MockRelayerClientMockRecorder) Probe ¶
func (mr *MockRelayerClientMockRecorder) Probe(ctx, in any, opts ...any) *gomock.Call
Probe indicates an expected call of Probe.
func (*MockRelayerClientMockRecorder) Relay ¶
func (mr *MockRelayerClientMockRecorder) Relay(ctx, in any, opts ...any) *gomock.Call
Relay indicates an expected call of Relay.
func (*MockRelayerClientMockRecorder) RelaySubscribe ¶
func (mr *MockRelayerClientMockRecorder) RelaySubscribe(ctx, in any, opts ...any) *gomock.Call
RelaySubscribe indicates an expected call of RelaySubscribe.
type MockRelayerServer ¶
type MockRelayerServer struct {
// contains filtered or unexported fields
}
MockRelayerServer is a mock of RelayerServer interface.
func NewMockRelayerServer ¶
func NewMockRelayerServer(ctrl *gomock.Controller) *MockRelayerServer
NewMockRelayerServer creates a new mock instance.
func (*MockRelayerServer) EXPECT ¶
func (m *MockRelayerServer) EXPECT() *MockRelayerServerMockRecorder
EXPECT returns an object that allows the caller to indicate expected use.
func (*MockRelayerServer) Probe ¶
func (m *MockRelayerServer) Probe(arg0 context.Context, arg1 *types.ProbeRequest) (*types.ProbeReply, error)
Probe mocks base method.
func (*MockRelayerServer) Relay ¶
func (m *MockRelayerServer) Relay(arg0 context.Context, arg1 *types.RelayRequest) (*types.RelayReply, error)
Relay mocks base method.
func (*MockRelayerServer) RelaySubscribe ¶
func (m *MockRelayerServer) RelaySubscribe(arg0 *types.RelayRequest, arg1 types.Relayer_RelaySubscribeServer) error
RelaySubscribe mocks base method.
type MockRelayerServerMockRecorder ¶
type MockRelayerServerMockRecorder struct {
// contains filtered or unexported fields
}
MockRelayerServerMockRecorder is the mock recorder for MockRelayerServer.
func (*MockRelayerServerMockRecorder) Probe ¶
func (mr *MockRelayerServerMockRecorder) Probe(arg0, arg1 any) *gomock.Call
Probe indicates an expected call of Probe.
func (*MockRelayerServerMockRecorder) Relay ¶
func (mr *MockRelayerServerMockRecorder) Relay(arg0, arg1 any) *gomock.Call
Relay indicates an expected call of Relay.
func (*MockRelayerServerMockRecorder) RelaySubscribe ¶
func (mr *MockRelayerServerMockRecorder) RelaySubscribe(arg0, arg1 any) *gomock.Call
RelaySubscribe indicates an expected call of RelaySubscribe.
type MockRelayer_RelaySubscribeClient ¶
type MockRelayer_RelaySubscribeClient struct {
// contains filtered or unexported fields
}
MockRelayer_RelaySubscribeClient is a mock of Relayer_RelaySubscribeClient interface.
func NewMockRelayer_RelaySubscribeClient ¶
func NewMockRelayer_RelaySubscribeClient(ctrl *gomock.Controller) *MockRelayer_RelaySubscribeClient
NewMockRelayer_RelaySubscribeClient creates a new mock instance.
func (*MockRelayer_RelaySubscribeClient) CloseSend ¶
func (m *MockRelayer_RelaySubscribeClient) CloseSend() error
CloseSend mocks base method.
func (*MockRelayer_RelaySubscribeClient) Context ¶
func (m *MockRelayer_RelaySubscribeClient) Context() context.Context
Context mocks base method.
func (*MockRelayer_RelaySubscribeClient) EXPECT ¶
func (m *MockRelayer_RelaySubscribeClient) EXPECT() *MockRelayer_RelaySubscribeClientMockRecorder
EXPECT returns an object that allows the caller to indicate expected use.
func (*MockRelayer_RelaySubscribeClient) Header ¶
func (m *MockRelayer_RelaySubscribeClient) Header() (metadata.MD, error)
Header mocks base method.
func (*MockRelayer_RelaySubscribeClient) Recv ¶
func (m *MockRelayer_RelaySubscribeClient) Recv() (*types.RelayReply, error)
Recv mocks base method.
func (*MockRelayer_RelaySubscribeClient) RecvMsg ¶
func (m_2 *MockRelayer_RelaySubscribeClient) RecvMsg(m any) error
RecvMsg mocks base method.
func (*MockRelayer_RelaySubscribeClient) SendMsg ¶
func (m_2 *MockRelayer_RelaySubscribeClient) SendMsg(m any) error
SendMsg mocks base method.
func (*MockRelayer_RelaySubscribeClient) Trailer ¶
func (m *MockRelayer_RelaySubscribeClient) Trailer() metadata.MD
Trailer mocks base method.
type MockRelayer_RelaySubscribeClientMockRecorder ¶
type MockRelayer_RelaySubscribeClientMockRecorder struct {
// contains filtered or unexported fields
}
MockRelayer_RelaySubscribeClientMockRecorder is the mock recorder for MockRelayer_RelaySubscribeClient.
func (*MockRelayer_RelaySubscribeClientMockRecorder) CloseSend ¶
func (mr *MockRelayer_RelaySubscribeClientMockRecorder) CloseSend() *gomock.Call
CloseSend indicates an expected call of CloseSend.
func (*MockRelayer_RelaySubscribeClientMockRecorder) Context ¶
func (mr *MockRelayer_RelaySubscribeClientMockRecorder) Context() *gomock.Call
Context indicates an expected call of Context.
func (*MockRelayer_RelaySubscribeClientMockRecorder) Header ¶
func (mr *MockRelayer_RelaySubscribeClientMockRecorder) Header() *gomock.Call
Header indicates an expected call of Header.
func (*MockRelayer_RelaySubscribeClientMockRecorder) Recv ¶
func (mr *MockRelayer_RelaySubscribeClientMockRecorder) Recv() *gomock.Call
Recv indicates an expected call of Recv.
func (*MockRelayer_RelaySubscribeClientMockRecorder) RecvMsg ¶
func (mr *MockRelayer_RelaySubscribeClientMockRecorder) RecvMsg(m any) *gomock.Call
RecvMsg indicates an expected call of RecvMsg.
func (*MockRelayer_RelaySubscribeClientMockRecorder) SendMsg ¶
func (mr *MockRelayer_RelaySubscribeClientMockRecorder) SendMsg(m any) *gomock.Call
SendMsg indicates an expected call of SendMsg.
func (*MockRelayer_RelaySubscribeClientMockRecorder) Trailer ¶
func (mr *MockRelayer_RelaySubscribeClientMockRecorder) Trailer() *gomock.Call
Trailer indicates an expected call of Trailer.
type MockRelayer_RelaySubscribeServer ¶
type MockRelayer_RelaySubscribeServer struct {
// contains filtered or unexported fields
}
MockRelayer_RelaySubscribeServer is a mock of Relayer_RelaySubscribeServer interface.
func NewMockRelayer_RelaySubscribeServer ¶
func NewMockRelayer_RelaySubscribeServer(ctrl *gomock.Controller) *MockRelayer_RelaySubscribeServer
NewMockRelayer_RelaySubscribeServer creates a new mock instance.
func (*MockRelayer_RelaySubscribeServer) Context ¶
func (m *MockRelayer_RelaySubscribeServer) Context() context.Context
Context mocks base method.
func (*MockRelayer_RelaySubscribeServer) EXPECT ¶
func (m *MockRelayer_RelaySubscribeServer) EXPECT() *MockRelayer_RelaySubscribeServerMockRecorder
EXPECT returns an object that allows the caller to indicate expected use.
func (*MockRelayer_RelaySubscribeServer) RecvMsg ¶
func (m_2 *MockRelayer_RelaySubscribeServer) RecvMsg(m any) error
RecvMsg mocks base method.
func (*MockRelayer_RelaySubscribeServer) Send ¶
func (m *MockRelayer_RelaySubscribeServer) Send(arg0 *types.RelayReply) error
Send mocks base method.
func (*MockRelayer_RelaySubscribeServer) SendHeader ¶
func (m *MockRelayer_RelaySubscribeServer) SendHeader(arg0 metadata.MD) error
SendHeader mocks base method.
func (*MockRelayer_RelaySubscribeServer) SendMsg ¶
func (m_2 *MockRelayer_RelaySubscribeServer) SendMsg(m any) error
SendMsg mocks base method.
func (*MockRelayer_RelaySubscribeServer) SetHeader ¶
func (m *MockRelayer_RelaySubscribeServer) SetHeader(arg0 metadata.MD) error
SetHeader mocks base method.
func (*MockRelayer_RelaySubscribeServer) SetTrailer ¶
func (m *MockRelayer_RelaySubscribeServer) SetTrailer(arg0 metadata.MD)
SetTrailer mocks base method.
type MockRelayer_RelaySubscribeServerMockRecorder ¶
type MockRelayer_RelaySubscribeServerMockRecorder struct {
// contains filtered or unexported fields
}
MockRelayer_RelaySubscribeServerMockRecorder is the mock recorder for MockRelayer_RelaySubscribeServer.
func (*MockRelayer_RelaySubscribeServerMockRecorder) Context ¶
func (mr *MockRelayer_RelaySubscribeServerMockRecorder) Context() *gomock.Call
Context indicates an expected call of Context.
func (*MockRelayer_RelaySubscribeServerMockRecorder) RecvMsg ¶
func (mr *MockRelayer_RelaySubscribeServerMockRecorder) RecvMsg(m any) *gomock.Call
RecvMsg indicates an expected call of RecvMsg.
func (*MockRelayer_RelaySubscribeServerMockRecorder) Send ¶
func (mr *MockRelayer_RelaySubscribeServerMockRecorder) Send(arg0 any) *gomock.Call
Send indicates an expected call of Send.
func (*MockRelayer_RelaySubscribeServerMockRecorder) SendHeader ¶
func (mr *MockRelayer_RelaySubscribeServerMockRecorder) SendHeader(arg0 any) *gomock.Call
SendHeader indicates an expected call of SendHeader.
func (*MockRelayer_RelaySubscribeServerMockRecorder) SendMsg ¶
func (mr *MockRelayer_RelaySubscribeServerMockRecorder) SendMsg(m any) *gomock.Call
SendMsg indicates an expected call of SendMsg.
func (*MockRelayer_RelaySubscribeServerMockRecorder) SetHeader ¶
func (mr *MockRelayer_RelaySubscribeServerMockRecorder) SetHeader(arg0 any) *gomock.Call
SetHeader indicates an expected call of SetHeader.
func (*MockRelayer_RelaySubscribeServerMockRecorder) SetTrailer ¶
func (mr *MockRelayer_RelaySubscribeServerMockRecorder) SetTrailer(arg0 any) *gomock.Call
SetTrailer indicates an expected call of SetTrailer.
type RPCSmartRouter ¶
type RPCSmartRouter struct {
// contains filtered or unexported fields
}
func (*RPCSmartRouter) CreateSmartRouterEndpoint ¶
func (rpsr *RPCSmartRouter) CreateSmartRouterEndpoint( ctx context.Context, rpcEndpoint *lavasession.RPCEndpoint, errCh chan error, optimizers *common.SafeSyncMap[string, *provideroptimizer.ProviderOptimizer], smartRouterConsistencies *common.SafeSyncMap[string, relaycore.Consistency], chainMutexes map[string]*sync.Mutex, options *rpcSmartRouterStartOptions, smartRouterIdentifier string, rpcSmartRouterMetrics *metrics.RPCConsumerLogs, smartRouterReportsManager *metrics.ConsumerReportsClient, smartRouterOptimizerQoSClient *metrics.ConsumerOptimizerQoSClient, smartRouterMetricsManager *metrics.ConsumerMetricsManager, relaysMonitorAggregator *metrics.RelaysMonitorAggregator, ) error
type RPCSmartRouterServer ¶
type RPCSmartRouterServer struct {
SmartRouterAddress sdk.AccAddress
// contains filtered or unexported fields
}
implements Relay Sender interfaced and uses an ChainListener to get it called
func (*RPCSmartRouterServer) CancelSubscriptionContext ¶
func (rpcss *RPCSmartRouterServer) CancelSubscriptionContext(subscriptionKey string)
func (*RPCSmartRouterServer) CreateDappKey ¶
func (rpcss *RPCSmartRouterServer) CreateDappKey(userData common.UserData) string
func (*RPCSmartRouterServer) GetChainIdAndApiInterface ¶
func (rpcss *RPCSmartRouterServer) GetChainIdAndApiInterface() (string, string)
func (*RPCSmartRouterServer) GetListeningAddress ¶
func (rpcss *RPCSmartRouterServer) GetListeningAddress() string
func (*RPCSmartRouterServer) HandleDirectiveHeadersForMessage ¶
func (rpcss *RPCSmartRouterServer) HandleDirectiveHeadersForMessage(chainMessage chainlib.ChainMessage, directiveHeaders map[string]string)
func (*RPCSmartRouterServer) IsHealthy ¶
func (rpcss *RPCSmartRouterServer) IsHealthy() bool
func (*RPCSmartRouterServer) IsInitialized ¶
func (rpcss *RPCSmartRouterServer) IsInitialized() bool
func (*RPCSmartRouterServer) LavaDirectiveHeaders ¶
func (rpcss *RPCSmartRouterServer) LavaDirectiveHeaders(metadata []pairingtypes.Metadata) ([]pairingtypes.Metadata, map[string]string)
func (*RPCSmartRouterServer) ParseRelay ¶
func (rpcss *RPCSmartRouterServer) ParseRelay( ctx context.Context, url string, req string, connectionType string, dappID string, consumerIp string, metadata []pairingtypes.Metadata, ) (protocolMessage chainlib.ProtocolMessage, err error)
func (*RPCSmartRouterServer) ProcessRelaySend ¶
func (rpcss *RPCSmartRouterServer) ProcessRelaySend(ctx context.Context, protocolMessage chainlib.ProtocolMessage, analytics *metrics.RelayMetrics) (*relaycore.RelayProcessor, error)
func (*RPCSmartRouterServer) SendParsedRelay ¶
func (rpcss *RPCSmartRouterServer) SendParsedRelay( ctx context.Context, analytics *metrics.RelayMetrics, protocolMessage chainlib.ProtocolMessage, ) (relayResult *common.RelayResult, errRet error)
func (*RPCSmartRouterServer) SendRelay ¶
func (rpcss *RPCSmartRouterServer) SendRelay( ctx context.Context, url string, req string, connectionType string, dappID string, consumerIp string, analytics *metrics.RelayMetrics, metadata []pairingtypes.Metadata, ) (relayResult *common.RelayResult, errRet error)
func (*RPCSmartRouterServer) ServeRPCRequests ¶
func (rpcss *RPCSmartRouterServer) ServeRPCRequests( ctx context.Context, listenEndpoint *lavasession.RPCEndpoint, chainParser chainlib.ChainParser, sessionManager *lavasession.ConsumerSessionManager, requiredResponses int, privKey *btcec.PrivateKey, lavaChainID string, cache *performance.Cache, rpcSmartRouterLogs *metrics.RPCConsumerLogs, smartRouterAddress sdk.AccAddress, smartRouterConsistency relaycore.Consistency, relaysMonitor *metrics.RelaysMonitor, cmdFlags common.ConsumerCmdFlags, sharedState bool, refererData *chainlib.RefererData, reporter metrics.Reporter, wsSubscriptionManager *chainlib.ConsumerWSSubscriptionManager, ) (err error)
func (*RPCSmartRouterServer) SetConsistencySeenBlock ¶
func (rpcss *RPCSmartRouterServer) SetConsistencySeenBlock(blockSeen int64, key string)
type RelayProcessorForHeaders ¶
type RelayProcessorForHeaders interface {
GetQuorumParams() common.QuorumParams
GetResultsData() ([]common.RelayResult, []common.RelayResult, []relaycore.RelayError)
GetStatefulRelayTargets() []string
GetUsedProviders() *lavasession.UsedProviders
NodeErrors() (ret []common.RelayResult)
}
RelayProcessorForHeaders interface for methods used by appendHeadersToRelayResult
type RelayStateMachine ¶
type RelayStateMachine = relaycore.RelayStateMachine
Using interfaces from relaycore
func NewSmartRouterRelayStateMachine ¶
func NewSmartRouterRelayStateMachine( ctx context.Context, usedProviders *lavasession.UsedProviders, relaySender SmartRouterRelaySender, protocolMessage chainlib.ProtocolMessage, analytics *metrics.RelayMetrics, debugRelays bool, tickerMetricSetter tickerMetricSetterInf, ) RelayStateMachine
type RelayStateSendInstructions ¶
type RelayStateSendInstructions = relaycore.RelayStateSendInstructions
Using RelayStateSendInstructions from relaycore
type ResultsCheckerInf ¶
type ResultsCheckerInf = relaycore.ResultsCheckerInf
Using interfaces from relaycore
type SmartRouterRelaySender ¶
type SmartRouterRelaySender interface {
GetChainIdAndApiInterface() (string, string)
ParseRelay(
ctx context.Context,
url string,
req string,
connectionType string,
dappID string,
consumerIp string,
metadata []pairingtypes.Metadata,
) (protocolMessage chainlib.ProtocolMessage, err error)
// contains filtered or unexported methods
}
type SmartRouterRelayStateMachine ¶
type SmartRouterRelayStateMachine struct {
// contains filtered or unexported fields
}
func (*SmartRouterRelayStateMachine) GetDebugState ¶
func (srsm *SmartRouterRelayStateMachine) GetDebugState() bool
func (*SmartRouterRelayStateMachine) GetProtocolMessage ¶
func (srsm *SmartRouterRelayStateMachine) GetProtocolMessage() chainlib.ProtocolMessage
func (*SmartRouterRelayStateMachine) GetRelayTaskChannel ¶
func (srsm *SmartRouterRelayStateMachine) GetRelayTaskChannel() (chan RelayStateSendInstructions, error)
func (*SmartRouterRelayStateMachine) GetSelection ¶
func (srsm *SmartRouterRelayStateMachine) GetSelection() relaycore.Selection
func (*SmartRouterRelayStateMachine) GetUsedProviders ¶
func (srsm *SmartRouterRelayStateMachine) GetUsedProviders() *lavasession.UsedProviders
func (*SmartRouterRelayStateMachine) Initialized ¶
func (srsm *SmartRouterRelayStateMachine) Initialized() bool
func (*SmartRouterRelayStateMachine) SetRelayRetriesManager ¶
func (srsm *SmartRouterRelayStateMachine) SetRelayRetriesManager(relayRetriesManager *lavaprotocol.RelayRetriesManager)
func (*SmartRouterRelayStateMachine) SetResultsChecker ¶
func (srsm *SmartRouterRelayStateMachine) SetResultsChecker(resultsChecker ResultsCheckerInf)
func (*SmartRouterRelayStateMachine) UpdateBatch ¶
func (srsm *SmartRouterRelayStateMachine) UpdateBatch(err error)