From fb19d4b1b8f0b9821b24981203ce099daeea686c Mon Sep 17 00:00:00 2001 From: "Alisher A. Khassanov" Date: Fri, 24 May 2024 10:20:24 +0500 Subject: [PATCH 1/2] Add `ClusterStatus` definition --- blockchain/pallets/primitives.go | 51 ++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/blockchain/pallets/primitives.go b/blockchain/pallets/primitives.go index ba17997..d65fc12 100644 --- a/blockchain/pallets/primitives.go +++ b/blockchain/pallets/primitives.go @@ -9,6 +9,7 @@ package pallets import ( "errors" + "reflect" "github.com/centrifuge/go-substrate-rpc-client/v4/scale" "github.com/centrifuge/go-substrate-rpc-client/v4/types" @@ -118,3 +119,53 @@ func (m StorageNodeMode) Encode(encoder scale.Encoder) error { return nil } + +type ClusterStatus struct { + IsUnbonded bool + IsBonded bool + IsActivated bool + IsUnbonding bool +} + +func (m *ClusterStatus) Decode(decoder scale.Decoder) error { + b, err := decoder.ReadOneByte() + if err != nil { + return err + } + + i := int(b) + + v := reflect.ValueOf(m) + if i > v.NumField() { + return ErrUnknownVariant + } + + v.Field(i).SetBool(true) + + return nil +} + +func (m ClusterStatus) Encode(encoder scale.Encoder) error { + var err1, err2 error + v := reflect.ValueOf(m) + + for i := 0; i < v.NumField(); i++ { + if v.Field(i).Bool() { + err1 = encoder.PushByte(byte(i)) + err2 = encoder.Encode(i + 1) // values are defined from 1 + break + } + if i == v.NumField()-1 { + return ErrUnknownVariant + } + } + + if err1 != nil { + return err1 + } + if err2 != nil { + return err2 + } + + return nil +} From 90f3ea95b4fc0dd7ecc9f5fe32350012c509891c Mon Sep 17 00:00:00 2001 From: "Alisher A. Khassanov" Date: Fri, 24 May 2024 10:21:29 +0500 Subject: [PATCH 2/2] Update `Cluster` type definition --- blockchain/pallets/ddcclusters.go | 1 + 1 file changed, 1 insertion(+) diff --git a/blockchain/pallets/ddcclusters.go b/blockchain/pallets/ddcclusters.go index 9b220fa..17eb67a 100644 --- a/blockchain/pallets/ddcclusters.go +++ b/blockchain/pallets/ddcclusters.go @@ -13,6 +13,7 @@ type Cluster struct { ManagerId types.AccountID ReserveId types.AccountID Props ClusterProps + Status ClusterStatus } type ClusterProps struct {