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 }