Skip to content

Commit

Permalink
Add ClusterStatus definition
Browse files Browse the repository at this point in the history
  • Loading branch information
khssnv committed May 24, 2024
1 parent 056d955 commit fb19d4b
Showing 1 changed file with 51 additions and 0 deletions.
51 changes: 51 additions & 0 deletions blockchain/pallets/primitives.go
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down Expand Up @@ -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
}

0 comments on commit fb19d4b

Please sign in to comment.