diff --git a/pkg/innerring/processors/netmap/nodevalidation/maddress/validator.go b/pkg/innerring/processors/netmap/nodevalidation/maddress/validator.go index 91bb8da26a..8f0c0f7863 100644 --- a/pkg/innerring/processors/netmap/nodevalidation/maddress/validator.go +++ b/pkg/innerring/processors/netmap/nodevalidation/maddress/validator.go @@ -6,7 +6,7 @@ package maddress // For correct operation, Validator must be created // using the constructor (New). After successful creation, // the Validator is immediately ready to work through API. -type Validator struct {} +type Validator struct{} // New creates a new instance of the Validator. // diff --git a/pkg/innerring/processors/netmap/nodevalidation/validator.go b/pkg/innerring/processors/netmap/nodevalidation/validator.go new file mode 100644 index 0000000000..23fa64515e --- /dev/null +++ b/pkg/innerring/processors/netmap/nodevalidation/validator.go @@ -0,0 +1,37 @@ +package nodevalidation + +import ( + apinetmap "github.com/nspcc-dev/neofs-api-go/pkg/netmap" + "github.com/nspcc-dev/neofs-node/pkg/innerring/processors/netmap" +) + +// CompositeValidator wraps `netmap.NodeValidator`s. +// +// For correct operation, CompositeValidator must be created +// using the constructor (New). After successful creation, +// the CompositeValidator is immediately ready to work through +// API. +type CompositeValidator struct { + validators []netmap.NodeValidator +} + +// New creates a new instance of the CompositeValidator. +// +// The created CompositeValidator does not require additional +// initialization and is completely ready for work. +func New(validators ...netmap.NodeValidator) *CompositeValidator { + return &CompositeValidator{validators} +} + +// VerifyAndUpdate passes apinetmap.NodeInfo to wrapped validators. +// +// If error appears, returns it immediately. +func (c *CompositeValidator) VerifyAndUpdate(ni *apinetmap.NodeInfo) error { + for _, v := range c.validators { + if err := v.VerifyAndUpdate(ni); err != nil { + return err + } + } + + return nil +}