forked from TrueCloudLab/frostfs-node
cc7a723d77
Signed-off-by: Elizaveta Chichindaeva <elizaveta@nspcc.ru>
44 lines
1 KiB
Go
44 lines
1 KiB
Go
package subnetevents
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
subnetid "github.com/nspcc-dev/neofs-sdk-go/subnet/id"
|
|
)
|
|
|
|
// Delete represents a notification about NeoFS subnet removal.
|
|
// Generated by a contract when intending to delete a subnet.
|
|
type Delete interface {
|
|
// Contains the ID of the subnet to be removed.
|
|
eventWithID
|
|
}
|
|
|
|
// DeleteValidator asserts intent to remove a subnet.
|
|
type DeleteValidator struct{}
|
|
|
|
// Assert processes the attempt to remove a subnet. It approves the removal through nil return.
|
|
//
|
|
// All read errors of Delete are forwarded.
|
|
//
|
|
// It returns an error on:
|
|
// * zero subnet creation;
|
|
// * empty ID or different from the one wired into info;
|
|
// * empty owner ID or different from the one wired into info.
|
|
func (x DeleteValidator) Assert(event Delete) error {
|
|
var err error
|
|
|
|
// read ID
|
|
var id subnetid.ID
|
|
if err = event.ReadID(&id); err != nil {
|
|
return fmt.Errorf("read ID: %w", err)
|
|
}
|
|
|
|
// prevent zero subnet removal
|
|
if subnetid.IsZero(id) {
|
|
return zeroSubnetOp{
|
|
op: "removal",
|
|
}
|
|
}
|
|
|
|
return nil
|
|
}
|