github.com/mavryk-network/mvgo@v1.19.9/codec/deposits_limit.go (about) 1 // Copyright (c) 2020-2022 Blockwatch Data Inc. 2 // Author: alex@blockwatch.cc 3 4 package codec 5 6 import ( 7 "bytes" 8 "strconv" 9 10 "github.com/mavryk-network/mvgo/mavryk" 11 ) 12 13 // SetDepositsLimit represents "set_deposits_limit" operation 14 type SetDepositsLimit struct { 15 Manager 16 Limit *mavryk.N `json:"limit,omitempty"` 17 } 18 19 func (o SetDepositsLimit) Kind() mavryk.OpType { 20 return mavryk.OpTypeSetDepositsLimit 21 } 22 23 func (o SetDepositsLimit) MarshalJSON() ([]byte, error) { 24 buf := bytes.NewBuffer(nil) 25 buf.WriteByte('{') 26 buf.WriteString(`"kind":`) 27 buf.WriteString(strconv.Quote(o.Kind().String())) 28 buf.WriteByte(',') 29 o.Manager.EncodeJSON(buf) 30 if o.Limit != nil { 31 buf.WriteString(`,"limit":`) 32 buf.WriteString(strconv.Quote(o.Limit.String())) 33 } 34 buf.WriteByte('}') 35 return buf.Bytes(), nil 36 } 37 38 func (o SetDepositsLimit) EncodeBuffer(buf *bytes.Buffer, p *mavryk.Params) error { 39 buf.WriteByte(o.Kind().TagVersion(p.OperationTagsVersion)) 40 o.Manager.EncodeBuffer(buf, p) 41 if o.Limit == nil { 42 buf.WriteByte(0x00) 43 } else { 44 buf.WriteByte(0xff) 45 o.Limit.EncodeBuffer(buf) 46 } 47 return nil 48 } 49 50 func (o *SetDepositsLimit) DecodeBuffer(buf *bytes.Buffer, p *mavryk.Params) (err error) { 51 if err = ensureTagAndSize(buf, o.Kind(), p.OperationTagsVersion); err != nil { 52 return 53 } 54 if err = o.Manager.DecodeBuffer(buf, p); err != nil { 55 return err 56 } 57 var ok bool 58 ok, err = readBool(buf.Next(1)) 59 if err != nil { 60 return err 61 } 62 if ok { 63 var limit mavryk.N 64 if err = limit.DecodeBuffer(buf); err != nil { 65 return err 66 } 67 o.Limit = &limit 68 } 69 return nil 70 } 71 72 func (o SetDepositsLimit) MarshalBinary() ([]byte, error) { 73 buf := bytes.NewBuffer(nil) 74 err := o.EncodeBuffer(buf, mavryk.DefaultParams) 75 return buf.Bytes(), err 76 } 77 78 func (o *SetDepositsLimit) UnmarshalBinary(data []byte) error { 79 return o.DecodeBuffer(bytes.NewBuffer(data), mavryk.DefaultParams) 80 }