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  }