refactored initialization

This commit is contained in:
Stephan D
2025-12-24 01:31:43 +01:00
parent e6626600cc
commit c941319c4e
19 changed files with 130 additions and 71 deletions

View File

@@ -11,6 +11,7 @@ import (
"github.com/tech/sendico/gateway/chain/internal/keymanager"
vaultmanager "github.com/tech/sendico/gateway/chain/internal/keymanager/vault"
gatewayservice "github.com/tech/sendico/gateway/chain/internal/service/gateway"
"github.com/tech/sendico/gateway/chain/internal/service/gateway/rpcclient"
gatewayshared "github.com/tech/sendico/gateway/chain/internal/service/gateway/shared"
"github.com/tech/sendico/gateway/chain/storage"
gatewaymongo "github.com/tech/sendico/gateway/chain/storage/mongo"
@@ -31,6 +32,8 @@ type Imp struct {
config *config
app *grpcapp.App[storage.Repository]
rpcClients *rpcclient.Clients
}
type config struct {
@@ -85,6 +88,9 @@ func (i *Imp) Shutdown() {
defer cancel()
i.app.Shutdown(ctx)
if i.rpcClients != nil {
i.rpcClients.Close()
}
}
func (i *Imp) Start() error {
@@ -104,6 +110,12 @@ func (i *Imp) Start() error {
i.logger.Error("invalid chain network configuration", zap.Error(err))
return err
}
rpcClients, err := rpcclient.Prepare(context.Background(), i.logger.Named("rpc"), networkConfigs)
if err != nil {
i.logger.Error("failed to prepare rpc clients", zap.Error(err))
return err
}
i.rpcClients = rpcClients
walletConfig := resolveServiceWallet(cl.Named("wallet"), cfg.ServiceWallet)
keyManager, err := resolveKeyManager(i.logger.Named("key_manager"), cfg.KeyManagement)
if err != nil {
@@ -111,12 +123,13 @@ func (i *Imp) Start() error {
}
serviceFactory := func(logger mlogger.Logger, repo storage.Repository, producer msg.Producer) (grpcapp.Service, error) {
executor := gatewayservice.NewOnChainExecutor(logger, keyManager)
executor := gatewayservice.NewOnChainExecutor(logger, keyManager, rpcClients)
opts := []gatewayservice.Option{
gatewayservice.WithNetworks(networkConfigs),
gatewayservice.WithServiceWallet(walletConfig),
gatewayservice.WithKeyManager(keyManager),
gatewayservice.WithTransferExecutor(executor),
gatewayservice.WithRPCClients(rpcClients),
gatewayservice.WithSettings(cfg.Settings),
}
return gatewayservice.NewService(logger, repo, producer, opts...), nil