frostfs-api-go-pogpp/v2/session/marshal.go
Alex Vanin 1592151621 Add stable marshal for session package
Signed-off-by: Alex Vanin <alexey@nspcc.ru>
2020-09-18 10:43:01 +03:00

93 lines
1.6 KiB
Go

package session
import (
"github.com/nspcc-dev/neofs-api-go/util/proto"
)
const (
createReqBodyOwnerField = 1
createReqBodyLifetimeField = 2
createRespBodyIDField = 1
createRespBodyKeyField = 2
)
func (c *CreateRequestBody) 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.NestedStructureMarshal(createReqBodyOwnerField, buf[offset:], c.ownerID)
if err != nil {
return nil, err
}
offset += n
_, err = proto.NestedStructureMarshal(createReqBodyLifetimeField, buf[offset:], c.lifetime)
if err != nil {
return nil, err
}
return buf, nil
}
func (c *CreateRequestBody) StableSize() (size int) {
if c == nil {
return 0
}
size += proto.NestedStructureSize(createReqBodyOwnerField, c.ownerID)
size += proto.NestedStructureSize(createReqBodyLifetimeField, c.lifetime)
return size
}
func (c *CreateResponseBody) 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.BytesMarshal(createRespBodyIDField, buf[offset:], c.id)
if err != nil {
return nil, err
}
offset += n
_, err = proto.BytesMarshal(createRespBodyKeyField, buf[offset:], c.sessionKey)
if err != nil {
return nil, err
}
return buf, nil
}
func (c *CreateResponseBody) StableSize() (size int) {
if c == nil {
return 0
}
size += proto.BytesSize(createRespBodyIDField, c.id)
size += proto.BytesSize(createRespBodyKeyField, c.sessionKey)
return size
}