frostfs-api-go/v2/refs/marshal.go

176 lines
2.8 KiB
Go
Raw Normal View History

package refs
import (
"github.com/nspcc-dev/neofs-api-go/util/proto"
)
const (
ownerIDValField = 1
containerIDValField = 1
objectIDValField = 1
addressContainerField = 1
addressObjectField = 2
checksumTypeField = 1
checksumValueField = 2
)
func (o *OwnerID) StableMarshal(buf []byte) ([]byte, error) {
if o == nil {
return []byte{}, nil
}
if buf == nil {
buf = make([]byte, o.StableSize())
}
_, err := proto.BytesMarshal(ownerIDValField, buf, o.val)
if err != nil {
return nil, err
}
return buf, nil
}
func (o *OwnerID) StableSize() int {
if o == nil {
return 0
}
return proto.BytesSize(ownerIDValField, o.val)
}
func (c *ContainerID) StableMarshal(buf []byte) ([]byte, error) {
if c == nil {
return []byte{}, nil
}
if buf == nil {
buf = make([]byte, c.StableSize())
}
_, err := proto.BytesMarshal(containerIDValField, buf, c.val)
if err != nil {
return nil, err
}
return buf, nil
}
func (c *ContainerID) StableSize() int {
if c == nil {
return 0
}
return proto.BytesSize(containerIDValField, c.val)
}
func (o *ObjectID) StableMarshal(buf []byte) ([]byte, error) {
if o == nil {
return []byte{}, nil
}
if buf == nil {
buf = make([]byte, o.StableSize())
}
_, err := proto.BytesMarshal(objectIDValField, buf, o.val)
if err != nil {
return nil, err
}
return buf, nil
}
func (o *ObjectID) StableSize() int {
if o == nil {
return 0
}
return proto.BytesSize(objectIDValField, o.val)
}
func (a *Address) StableMarshal(buf []byte) ([]byte, error) {
if a == nil {
return []byte{}, nil
}
if buf == nil {
buf = make([]byte, a.StableSize())
}
var (
offset, n int
err error
)
n, err = proto.NestedStructureMarshal(addressContainerField, buf[offset:], a.cid)
if err != nil {
return nil, err
}
offset += n
_, err = proto.NestedStructureMarshal(addressObjectField, buf[offset:], a.oid)
if err != nil {
return nil, err
}
return buf, nil
}
func (a *Address) StableSize() (size int) {
if a == nil {
return 0
}
size += proto.NestedStructureSize(addressContainerField, a.cid)
size += proto.NestedStructureSize(addressObjectField, a.oid)
return size
}
func (c *Checksum) StableMarshal(buf []byte) ([]byte, error) {
if c == nil {
return []byte{}, nil
}
if buf == nil {
buf = make([]byte, c.StableSize())
}
var (
offset, n int
err error
)
n, err = proto.EnumMarshal(checksumTypeField, buf[offset:], int32(c.typ))
if err != nil {
return nil, err
}
offset += n
_, err = proto.BytesMarshal(checksumValueField, buf[offset:], c.sum)
if err != nil {
return nil, err
}
return buf, nil
}
func (c *Checksum) StableSize() (size int) {
if c == nil {
return 0
}
size += proto.EnumSize(checksumTypeField, int32(c.typ))
size += proto.BytesSize(checksumValueField, c.sum)
return size
}