diff --git a/services/cctp-relayer/relayer/options.go b/services/cctp-relayer/relayer/options.go new file mode 100644 index 0000000000..624b051624 --- /dev/null +++ b/services/cctp-relayer/relayer/options.go @@ -0,0 +1,26 @@ +package relayer + +import "github.com/synapsecns/sanguine/ethergo/submitter" + +// relayerOptions is a struct that holds the options for the relayer. +type relayerOptions struct { + submitter submitter.TransactionSubmitter +} + +// OptionsArgsOption is an option passed into the relayer. +type OptionsArgsOption func(options *relayerOptions) + +// WithSubmitter sets the submitter for the relayer. +func WithSubmitter(txSubmitter submitter.TransactionSubmitter) OptionsArgsOption { + return func(options *relayerOptions) { + options.submitter = txSubmitter + } +} + +func makeOptions(opts []OptionsArgsOption) *relayerOptions { + args := &relayerOptions{} + for _, opt := range opts { + opt(args) + } + return args +} diff --git a/services/cctp-relayer/relayer/relayer.go b/services/cctp-relayer/relayer/relayer.go index 4347b3cb4d..e151b4319e 100644 --- a/services/cctp-relayer/relayer/relayer.go +++ b/services/cctp-relayer/relayer/relayer.go @@ -74,7 +74,9 @@ type CCTPRelayer struct { } // NewCCTPRelayer creates a new CCTPRelayer. -func NewCCTPRelayer(ctx context.Context, cfg config.Config, store db2.CCTPRelayerDB, scribeClient client.ScribeClient, omniRPCClient omniClient.RPCClient, handler metrics.Handler, attestationAPI attestation.CCTPAPI) (*CCTPRelayer, error) { +func NewCCTPRelayer(ctx context.Context, cfg config.Config, store db2.CCTPRelayerDB, scribeClient client.ScribeClient, omniRPCClient omniClient.RPCClient, handler metrics.Handler, attestationAPI attestation.CCTPAPI, rawOpts ...OptionsArgsOption) (*CCTPRelayer, error) { + opts := makeOptions(rawOpts) + conn, err := grpc.DialContext(ctx, fmt.Sprintf("%s:%d", scribeClient.URL, scribeClient.Port), grpc.WithTransportCredentials(insecure.NewCredentials()), grpc.WithUnaryInterceptor(otelgrpc.UnaryClientInterceptor(otelgrpc.WithTracerProvider(handler.GetTracerProvider()))), @@ -111,7 +113,10 @@ func NewCCTPRelayer(ctx context.Context, cfg config.Config, store db2.CCTPRelaye return nil, fmt.Errorf("could not make cctp signer: %w", err) } - txSubmitter := submitter.NewTransactionSubmitter(handler, signer, omniRPCClient, store.SubmitterDB(), &cfg.SubmitterConfig) + txSubmitter := opts.submitter + if txSubmitter == nil { + txSubmitter = submitter.NewTransactionSubmitter(handler, signer, omniRPCClient, store.SubmitterDB(), &cfg.SubmitterConfig) + } relayerRequestChan := make(chan *api.RelayRequest, 1000) relayerAPI := api.NewRelayerAPIServer(cfg.Port, cfg.Host, store, relayerRequestChan) diff --git a/services/rfq/relayer/service/relayer.go b/services/rfq/relayer/service/relayer.go index 118ccaa100..fb6b25652c 100644 --- a/services/rfq/relayer/service/relayer.go +++ b/services/rfq/relayer/service/relayer.go @@ -274,7 +274,7 @@ func (r *Relayer) startCCTPRelayer(ctx context.Context) (err error) { scribeClient := client.NewRemoteScribe(uint16(cctpCfg.ScribePort), cctpCfg.ScribeURL, r.metrics).ScribeClient omnirpcClient := omniClient.NewOmnirpcClient(cctpCfg.BaseOmnirpcURL, r.metrics, omniClient.WithCaptureReqRes()) attAPI := attestation.NewCircleAPI(cctpCfg.CircleAPIURl) - cctpRelayer, err := relayer.NewCCTPRelayer(ctx, *cctpCfg, store, scribeClient, omnirpcClient, r.metrics, attAPI) + cctpRelayer, err := relayer.NewCCTPRelayer(ctx, *cctpCfg, store, scribeClient, omnirpcClient, r.metrics, attAPI, relayer.WithSubmitter(r.submitter)) if err != nil { return fmt.Errorf("could not create cctp relayer: %w", err) }