diff --git a/client/config/config.go b/client/config/config.go index b91e640..a98b84f 100644 --- a/client/config/config.go +++ b/client/config/config.go @@ -4,6 +4,7 @@ import "github.com/multiversx/mx-chain-sovereign-bridge-go/cert" // ClientConfig holds all grpc client's config type ClientConfig struct { + Enabled bool GRPCHost string GRPCPort string CertificateCfg cert.FileCfg diff --git a/client/disabled/client.go b/client/disabled/client.go new file mode 100644 index 0000000..1e76251 --- /dev/null +++ b/client/disabled/client.go @@ -0,0 +1,29 @@ +package disabled + +import ( + "context" + + "github.com/multiversx/mx-chain-core-go/data/sovereign" +) + +type client struct{} + +// NewDisabledClient creates a new instance of disabled client +func NewDisabledClient() *client { + return &client{} +} + +// Send does nothing and returns empty bridge operations response +func (c *client) Send(_ context.Context, _ *sovereign.BridgeOperations) (*sovereign.BridgeOperationsResponse, error) { + return &sovereign.BridgeOperationsResponse{}, nil +} + +// Close returns no error +func (c *client) Close() error { + return nil +} + +// IsInterfaceNil checks if the underlying pointer is nil +func (c *client) IsInterfaceNil() bool { + return c == nil +} diff --git a/client/factory.go b/client/factory.go index 0423b1c..b789837 100644 --- a/client/factory.go +++ b/client/factory.go @@ -6,10 +6,12 @@ import ( "github.com/multiversx/mx-chain-core-go/data/sovereign" logger "github.com/multiversx/mx-chain-logger-go" - "github.com/multiversx/mx-chain-sovereign-bridge-go/cert" - "github.com/multiversx/mx-chain-sovereign-bridge-go/client/config" "google.golang.org/grpc" "google.golang.org/grpc/credentials" + + "github.com/multiversx/mx-chain-sovereign-bridge-go/cert" + "github.com/multiversx/mx-chain-sovereign-bridge-go/client/config" + "github.com/multiversx/mx-chain-sovereign-bridge-go/client/disabled" ) const ( @@ -20,6 +22,10 @@ var log = logger.GetOrCreate("client") // CreateClient creates a grpc client with retries func CreateClient(cfg *config.ClientConfig) (ClientHandler, error) { + if !cfg.Enabled { + return disabled.NewDisabledClient(), nil + } + dialTarget := fmt.Sprintf("%s:%s", cfg.GRPCHost, cfg.GRPCPort) conn, err := connectWithRetries(dialTarget, cfg.CertificateCfg) if err != nil {