package wrapper import ( "fmt" "github.com/nspcc-dev/neofs-node/pkg/morph/client" contract "github.com/nspcc-dev/neofs-node/pkg/morph/client/netmap" "github.com/nspcc-dev/neofs-sdk-go/netmap" ) // UpdatePeerPrm groups parameters of UpdatePeerState operation. type UpdatePeerPrm struct { key []byte state netmap.NodeState client.InvokePrmOptional } // SetKey sets public key. func (u *UpdatePeerPrm) SetKey(key []byte) { u.key = key } // SetState sets node state. func (u *UpdatePeerPrm) SetState(state netmap.NodeState) { u.state = state } // UpdatePeerState changes peer status through Netmap contract // call. func (w *Wrapper) UpdatePeerState(prm UpdatePeerPrm) error { args := contract.UpdateStateArgs{} args.SetPublicKey(prm.key) args.SetState(int64(prm.state.ToV2())) args.InvokePrmOptional = prm.InvokePrmOptional // invoke smart contract call if err := w.client.UpdateState(args); err != nil { return fmt.Errorf("could not invoke smart contract: %w", err) } return nil }