github.com/mavryk-network/mvgo@v1.19.9/codec/global_constant.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  	"encoding/binary"
     9  	"strconv"
    10  
    11  	"github.com/mavryk-network/mvgo/mavryk"
    12  	"github.com/mavryk-network/mvgo/micheline"
    13  )
    14  
    15  // RegisterGlobalConstant represents "register_global_constant" operation
    16  type RegisterGlobalConstant struct {
    17  	Manager
    18  	Value micheline.Prim `json:"value"`
    19  }
    20  
    21  func (o RegisterGlobalConstant) Kind() mavryk.OpType {
    22  	return mavryk.OpTypeRegisterConstant
    23  }
    24  
    25  func (o RegisterGlobalConstant) MarshalJSON() ([]byte, error) {
    26  	buf := bytes.NewBuffer(nil)
    27  	buf.WriteByte('{')
    28  	buf.WriteString(`"kind":`)
    29  	buf.WriteString(strconv.Quote(o.Kind().String()))
    30  	buf.WriteByte(',')
    31  	o.Manager.EncodeJSON(buf)
    32  	buf.WriteString(`,"value":`)
    33  	b, _ := o.Value.MarshalJSON()
    34  	buf.Write(b)
    35  	buf.WriteByte('}')
    36  	return buf.Bytes(), nil
    37  }
    38  
    39  func (o RegisterGlobalConstant) EncodeBuffer(buf *bytes.Buffer, p *mavryk.Params) error {
    40  	buf.WriteByte(o.Kind().TagVersion(p.OperationTagsVersion))
    41  	o.Manager.EncodeBuffer(buf, p)
    42  	b2 := bytes.NewBuffer(nil)
    43  	o.Value.EncodeBuffer(b2)
    44  	binary.Write(buf, enc, uint32(b2.Len()))
    45  	buf.Write(b2.Bytes())
    46  	return nil
    47  }
    48  
    49  func (o *RegisterGlobalConstant) DecodeBuffer(buf *bytes.Buffer, p *mavryk.Params) (err error) {
    50  	if err = ensureTagAndSize(buf, o.Kind(), p.OperationTagsVersion); err != nil {
    51  		return
    52  	}
    53  	if err = o.Manager.DecodeBuffer(buf, p); err != nil {
    54  		return err
    55  	}
    56  	_ = buf.Next(4)
    57  	if err = o.Value.DecodeBuffer(buf); err != nil {
    58  		return err
    59  	}
    60  	return nil
    61  }
    62  
    63  func (o RegisterGlobalConstant) MarshalBinary() ([]byte, error) {
    64  	buf := bytes.NewBuffer(nil)
    65  	err := o.EncodeBuffer(buf, mavryk.DefaultParams)
    66  	return buf.Bytes(), err
    67  }
    68  
    69  func (o *RegisterGlobalConstant) UnmarshalBinary(data []byte) error {
    70  	return o.DecodeBuffer(bytes.NewBuffer(data), mavryk.DefaultParams)
    71  }