diff --git a/cmd/frostfs-node/object.go b/cmd/frostfs-node/object.go index 37dcc7b3..02336bcb 100644 --- a/cmd/frostfs-node/object.go +++ b/cmd/frostfs-node/object.go @@ -334,16 +334,14 @@ func createSearchSvc(c *cfg, keyStorage *util.KeyStorage, traverseGen *util.Trav ls := c.cfgObject.cfgLocalStorage.localStorage return searchsvc.New( - searchsvc.WithLogger(c.log), - searchsvc.WithLocalStorageEngine(ls), - searchsvc.WithClientConstructor(coreConstructor), - searchsvc.WithTraverserGenerator( - traverseGen.WithTraverseOptions( - placement.WithoutSuccessTracking(), - ), + ls, + coreConstructor, + traverseGen.WithTraverseOptions( + placement.WithoutSuccessTracking(), ), - searchsvc.WithNetMapSource(c.netMapSource), - searchsvc.WithKeyStorage(keyStorage), + c.netMapSource, + keyStorage, + searchsvc.WithLogger(c.log), ) } diff --git a/pkg/services/object/search/service.go b/pkg/services/object/search/service.go index 708979d7..16b82a62 100644 --- a/pkg/services/object/search/service.go +++ b/pkg/services/object/search/service.go @@ -55,17 +55,28 @@ type cfg struct { keyStore *util.KeyStorage } -func defaultCfg() *cfg { - return &cfg{ - log: &logger.Logger{Logger: zap.L()}, - clientConstructor: new(clientConstructorWrapper), - } -} - // New creates, initializes and returns utility serving // Object.Get service requests. -func New(opts ...Option) *Service { - c := defaultCfg() +func New(e *engine.StorageEngine, + cc ClientConstructor, + tg *util.TraverserGenerator, + ns netmap.Source, + ks *util.KeyStorage, + opts ...Option) *Service { + c := &cfg{ + log: &logger.Logger{Logger: zap.L()}, + clientConstructor: &clientConstructorWrapper{ + constructor: cc, + }, + localStorage: &storageEngineWrapper{ + storage: e, + }, + traverserGenerator: (*traverseGeneratorWrapper)(tg), + currentEpochReceiver: &nmSrcWrapper{ + nmSrc: ns, + }, + keyStore: ks, + } for i := range opts { opts[i](c) @@ -82,46 +93,3 @@ func WithLogger(l *logger.Logger) Option { c.log = &logger.Logger{Logger: l.With(zap.String("component", "Object.Search service"))} } } - -// WithLocalStorageEngine returns option to set local storage -// instance. -func WithLocalStorageEngine(e *engine.StorageEngine) Option { - return func(c *cfg) { - c.localStorage = &storageEngineWrapper{ - storage: e, - } - } -} - -// WithClientConstructor returns option to set constructor of remote node clients. -func WithClientConstructor(v ClientConstructor) Option { - return func(c *cfg) { - c.clientConstructor.(*clientConstructorWrapper).constructor = v - } -} - -// WithTraverserGenerator returns option to set generator of -// placement traverser to get the objects from containers. -func WithTraverserGenerator(t *util.TraverserGenerator) Option { - return func(c *cfg) { - c.traverserGenerator = (*traverseGeneratorWrapper)(t) - } -} - -// WithNetMapSource returns option to set network -// map storage to receive current network state. -func WithNetMapSource(nmSrc netmap.Source) Option { - return func(c *cfg) { - c.currentEpochReceiver = &nmSrcWrapper{ - nmSrc: nmSrc, - } - } -} - -// WithKeyStorage returns option to set private -// key storage for session tokens and node key. -func WithKeyStorage(store *util.KeyStorage) Option { - return func(c *cfg) { - c.keyStore = store - } -}