From 4415f8dc5b626e30cfe521b167e1eb21cc88427f Mon Sep 17 00:00:00 2001 From: Leonard Lyubich Date: Thu, 28 Jan 2021 14:10:16 +0300 Subject: [PATCH] [#328] container/load: Implement simple Iterator and Writer providers Implement functions to wrap Writer or Iterator. The resulting wrapper provides WriterProvider or IteratorProvider interface respectively. Such a wrapper can be used as a single storage instance provider regardless of context. Signed-off-by: Leonard Lyubich --- .../announcement/load/controller/util.go | 31 ++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/pkg/services/container/announcement/load/controller/util.go b/pkg/services/container/announcement/load/controller/util.go index df1ca703..4b13c8f0 100644 --- a/pkg/services/container/announcement/load/controller/util.go +++ b/pkg/services/container/announcement/load/controller/util.go @@ -1,9 +1,38 @@ package loadcontroller -import "github.com/nspcc-dev/neofs-api-go/pkg/container" +import ( + "context" + + "github.com/nspcc-dev/neofs-api-go/pkg/container" +) func usedSpaceFilterEpochEQ(epoch uint64) UsedSpaceFilter { return func(a container.UsedSpaceAnnouncement) bool { return a.Epoch() == epoch } } + +type storageWrapper struct { + w Writer + i Iterator +} + +func (s storageWrapper) InitIterator(context.Context) (Iterator, error) { + return s.i, nil +} + +func (s storageWrapper) InitWriter(context.Context) (Writer, error) { + return s.w, nil +} + +func SimpleIteratorProvider(i Iterator) IteratorProvider { + return &storageWrapper{ + i: i, + } +} + +func SimpleWriterProvider(w Writer) WriterProvider { + return &storageWrapper{ + w: w, + } +}