From 800a685e8477289f8c5ed6f7a58cbc97b823c895 Mon Sep 17 00:00:00 2001 From: Dmitrii Stepanov Date: Thu, 6 Jul 2023 12:21:03 +0300 Subject: [PATCH] [#294] putsvc: Refactor service constructor Pass required deps as args. Signed-off-by: Dmitrii Stepanov --- cmd/frostfs-node/object.go | 16 +++--- pkg/services/object/put/service.go | 84 ++++++++---------------------- 2 files changed, 30 insertions(+), 70 deletions(-) diff --git a/cmd/frostfs-node/object.go b/cmd/frostfs-node/object.go index 1f763dd9..43d68bdc 100644 --- a/cmd/frostfs-node/object.go +++ b/cmd/frostfs-node/object.go @@ -313,14 +313,14 @@ func createPutSvc(c *cfg, keyStorage *util.KeyStorage) *putsvc.Service { } return putsvc.NewService( - putsvc.WithKeyStorage(keyStorage), - putsvc.WithClientConstructor(c.putClientCache), - putsvc.WithMaxSizeSource(newCachedMaxObjectSizeSource(c)), - putsvc.WithObjectStorage(os), - putsvc.WithContainerSource(c.cfgObject.cnrSource), - putsvc.WithNetworkMapSource(c.netMapSource), - putsvc.WithNetmapKeys(c), - putsvc.WithNetworkState(c.cfgNetmap.state), + keyStorage, + c.putClientCache, + newCachedMaxObjectSizeSource(c), + os, + c.cfgObject.cnrSource, + c.netMapSource, + c, + c.cfgNetmap.state, putsvc.WithWorkerPools(c.cfgObject.pool.putRemote, c.cfgObject.pool.putLocal), putsvc.WithLogger(c.log), ) diff --git a/pkg/services/object/put/service.go b/pkg/services/object/put/service.go index 567a3fea..7f2600f9 100644 --- a/pkg/services/object/put/service.go +++ b/pkg/services/object/put/service.go @@ -46,8 +46,6 @@ type cfg struct { fmtValidator *object.FormatValidator - fmtValidatorOpts []object.FormatValidatorOption - networkState netmap.State clientConstructor ClientConstructor @@ -55,22 +53,34 @@ type cfg struct { log *logger.Logger } -func defaultCfg() *cfg { - return &cfg{ - remotePool: util.NewPseudoWorkerPool(), - localPool: util.NewPseudoWorkerPool(), - log: &logger.Logger{Logger: zap.L()}, +func NewService(ks *objutil.KeyStorage, + cc ClientConstructor, + ms MaxSizeSource, + os ObjectStorage, + cs container.Source, + ns netmap.Source, + nk netmap.AnnouncedKeys, + nst netmap.State, + opts ...Option) *Service { + c := &cfg{ + remotePool: util.NewPseudoWorkerPool(), + localPool: util.NewPseudoWorkerPool(), + log: &logger.Logger{Logger: zap.L()}, + keyStorage: ks, + clientConstructor: cc, + maxSizeSrc: ms, + localStore: os, + cnrSrc: cs, + netMapSrc: ns, + netmapKeys: nk, + networkState: nst, } -} - -func NewService(opts ...Option) *Service { - c := defaultCfg() for i := range opts { opts[i](c) } - c.fmtValidator = object.NewFormatValidator(c.fmtValidatorOpts...) + c.fmtValidator = object.NewFormatValidator(object.WithLockSource(os), object.WithNetState(nst)) return &Service{ cfg: c, @@ -83,62 +93,12 @@ func (p *Service) Put() (*Streamer, error) { }, nil } -func WithKeyStorage(v *objutil.KeyStorage) Option { - return func(c *cfg) { - c.keyStorage = v - } -} - -func WithMaxSizeSource(v MaxSizeSource) Option { - return func(c *cfg) { - c.maxSizeSrc = v - } -} - -func WithObjectStorage(v ObjectStorage) Option { - return func(c *cfg) { - c.localStore = v - c.fmtValidatorOpts = append(c.fmtValidatorOpts, object.WithLockSource(v)) - } -} - -func WithContainerSource(v container.Source) Option { - return func(c *cfg) { - c.cnrSrc = v - } -} - -func WithNetworkMapSource(v netmap.Source) Option { - return func(c *cfg) { - c.netMapSrc = v - } -} - func WithWorkerPools(remote, local util.WorkerPool) Option { return func(c *cfg) { c.remotePool, c.localPool = remote, local } } -func WithNetmapKeys(v netmap.AnnouncedKeys) Option { - return func(c *cfg) { - c.netmapKeys = v - } -} - -func WithNetworkState(v netmap.State) Option { - return func(c *cfg) { - c.networkState = v - c.fmtValidatorOpts = append(c.fmtValidatorOpts, object.WithNetState(v)) - } -} - -func WithClientConstructor(v ClientConstructor) Option { - return func(c *cfg) { - c.clientConstructor = v - } -} - func WithLogger(l *logger.Logger) Option { return func(c *cfg) { c.log = l