2020-08-18 15:28:02 +00:00
|
|
|
package object
|
|
|
|
|
|
|
|
import (
|
|
|
|
"github.com/nspcc-dev/neofs-api-go/util/proto"
|
2020-09-02 11:46:43 +00:00
|
|
|
object "github.com/nspcc-dev/neofs-api-go/v2/object/grpc"
|
2020-12-21 07:51:45 +00:00
|
|
|
"github.com/nspcc-dev/neofs-api-go/v2/refs"
|
2020-10-19 18:51:59 +00:00
|
|
|
goproto "google.golang.org/protobuf/proto"
|
2020-08-18 15:28:02 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
const (
|
|
|
|
shortHdrVersionField = 1
|
|
|
|
shortHdrEpochField = 2
|
|
|
|
shortHdrOwnerField = 3
|
|
|
|
shortHdrObjectTypeField = 4
|
|
|
|
shortHdrPayloadLength = 5
|
2020-12-17 10:18:07 +00:00
|
|
|
shortHdrHashField = 6
|
|
|
|
shortHdrHomoHashField = 7
|
2020-08-18 15:28:02 +00:00
|
|
|
|
|
|
|
attributeKeyField = 1
|
|
|
|
attributeValueField = 2
|
|
|
|
|
|
|
|
splitHdrParentField = 1
|
|
|
|
splitHdrPreviousField = 2
|
|
|
|
splitHdrParentSignatureField = 3
|
|
|
|
splitHdrParentHeaderField = 4
|
|
|
|
splitHdrChildrenField = 5
|
2020-11-24 17:14:03 +00:00
|
|
|
splitHdrSplitIDField = 6
|
2020-08-18 15:28:02 +00:00
|
|
|
|
|
|
|
hdrVersionField = 1
|
|
|
|
hdrContainerIDField = 2
|
|
|
|
hdrOwnerIDField = 3
|
|
|
|
hdrEpochField = 4
|
|
|
|
hdrPayloadLengthField = 5
|
|
|
|
hdrPayloadHashField = 6
|
|
|
|
hdrObjectTypeField = 7
|
|
|
|
hdrHomomorphicHashField = 8
|
|
|
|
hdrSessionTokenField = 9
|
|
|
|
hdrAttributesField = 10
|
|
|
|
hdrSplitField = 11
|
|
|
|
|
2020-09-08 10:39:13 +00:00
|
|
|
hdrWithSigHeaderField = 1
|
|
|
|
hdrWithSigSignatureField = 2
|
|
|
|
|
2020-08-18 15:28:02 +00:00
|
|
|
objIDField = 1
|
|
|
|
objSignatureField = 2
|
|
|
|
objHeaderField = 3
|
|
|
|
objPayloadField = 4
|
2020-08-18 16:46:55 +00:00
|
|
|
|
2020-12-02 10:10:43 +00:00
|
|
|
splitInfoSplitIDField = 1
|
|
|
|
splitInfoLastPartField = 2
|
|
|
|
splitInfoLinkField = 3
|
|
|
|
|
2020-08-18 16:46:55 +00:00
|
|
|
getReqBodyAddressField = 1
|
|
|
|
getReqBodyRawFlagField = 2
|
|
|
|
|
|
|
|
getRespInitObjectIDField = 1
|
|
|
|
getRespInitSignatureField = 2
|
|
|
|
getRespInitHeaderField = 3
|
|
|
|
|
2020-12-02 10:10:43 +00:00
|
|
|
getRespBodyInitField = 1
|
|
|
|
getRespBodyChunkField = 2
|
|
|
|
getRespBodySplitInfoField = 3
|
2020-08-18 16:46:55 +00:00
|
|
|
|
|
|
|
putReqInitObjectIDField = 1
|
|
|
|
putReqInitSignatureField = 2
|
|
|
|
putReqInitHeaderField = 3
|
|
|
|
putReqInitCopiesNumField = 4
|
|
|
|
|
|
|
|
putReqBodyInitField = 1
|
|
|
|
putReqBodyChunkField = 2
|
|
|
|
|
|
|
|
putRespBodyObjectIDField = 1
|
|
|
|
|
|
|
|
deleteReqBodyAddressField = 1
|
|
|
|
|
2020-12-10 09:15:17 +00:00
|
|
|
deleteRespBodyTombstoneFNum = 1
|
|
|
|
|
2020-08-18 16:46:55 +00:00
|
|
|
headReqBodyAddressField = 1
|
|
|
|
headReqBodyMainFlagField = 2
|
|
|
|
headReqBodyRawFlagField = 3
|
|
|
|
|
|
|
|
headRespBodyHeaderField = 1
|
|
|
|
headRespBodyShortHeaderField = 2
|
2020-12-07 15:59:01 +00:00
|
|
|
headRespBodySplitInfoField = 3
|
2020-08-18 16:46:55 +00:00
|
|
|
|
|
|
|
searchFilterMatchField = 1
|
|
|
|
searchFilterNameField = 2
|
|
|
|
searchFilterValueField = 3
|
|
|
|
|
|
|
|
searchReqBodyContainerIDField = 1
|
|
|
|
searchReqBodyVersionField = 2
|
|
|
|
searchReqBodyFiltersField = 3
|
|
|
|
|
|
|
|
searchRespBodyObjectIDsField = 1
|
|
|
|
|
|
|
|
rangeOffsetField = 1
|
|
|
|
rangeLengthField = 2
|
|
|
|
|
|
|
|
getRangeReqBodyAddressField = 1
|
|
|
|
getRangeReqBodyRangeField = 2
|
2020-12-07 15:59:01 +00:00
|
|
|
getRangeReqBodyRawField = 3
|
2020-08-18 16:46:55 +00:00
|
|
|
|
2020-12-07 15:59:01 +00:00
|
|
|
getRangeRespChunkField = 1
|
|
|
|
getRangeRespSplitInfoField = 2
|
2020-08-18 16:46:55 +00:00
|
|
|
|
|
|
|
getRangeHashReqBodyAddressField = 1
|
|
|
|
getRangeHashReqBodyRangesField = 2
|
|
|
|
getRangeHashReqBodySaltField = 3
|
2020-08-20 08:48:35 +00:00
|
|
|
getRangeHashReqBodyTypeField = 4
|
2020-08-18 16:46:55 +00:00
|
|
|
|
2020-08-20 08:48:35 +00:00
|
|
|
getRangeHashRespBodyTypeField = 1
|
|
|
|
getRangeHashRespBodyHashListField = 2
|
2020-08-18 15:28:02 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
func (h *ShortHeader) StableMarshal(buf []byte) ([]byte, error) {
|
|
|
|
if h == nil {
|
|
|
|
return []byte{}, nil
|
|
|
|
}
|
|
|
|
|
|
|
|
if buf == nil {
|
|
|
|
buf = make([]byte, h.StableSize())
|
|
|
|
}
|
|
|
|
|
|
|
|
var (
|
|
|
|
offset, n int
|
|
|
|
err error
|
|
|
|
)
|
|
|
|
|
|
|
|
n, err = proto.NestedStructureMarshal(shortHdrVersionField, buf[offset:], h.version)
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
|
|
|
offset += n
|
|
|
|
|
|
|
|
n, err = proto.UInt64Marshal(shortHdrEpochField, buf[offset:], h.creatEpoch)
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
|
|
|
offset += n
|
|
|
|
|
|
|
|
n, err = proto.NestedStructureMarshal(shortHdrOwnerField, buf[offset:], h.ownerID)
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
|
|
|
offset += n
|
|
|
|
|
|
|
|
n, err = proto.EnumMarshal(shortHdrObjectTypeField, buf[offset:], int32(h.typ))
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
|
|
|
offset += n
|
|
|
|
|
2020-12-17 10:18:07 +00:00
|
|
|
n, err = proto.UInt64Marshal(shortHdrPayloadLength, buf[offset:], h.payloadLen)
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
|
|
|
offset += n
|
|
|
|
|
|
|
|
n, err = proto.NestedStructureMarshal(shortHdrHashField, buf[offset:], h.payloadHash)
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
|
|
|
offset += n
|
|
|
|
|
|
|
|
n, err = proto.NestedStructureMarshal(shortHdrHomoHashField, buf[offset:], h.homoHash)
|
2020-08-18 15:28:02 +00:00
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
|
|
|
return buf, nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func (h *ShortHeader) StableSize() (size int) {
|
|
|
|
if h == nil {
|
|
|
|
return 0
|
|
|
|
}
|
|
|
|
|
|
|
|
size += proto.NestedStructureSize(shortHdrVersionField, h.version)
|
|
|
|
size += proto.UInt64Size(shortHdrEpochField, h.creatEpoch)
|
|
|
|
size += proto.NestedStructureSize(shortHdrOwnerField, h.ownerID)
|
|
|
|
size += proto.EnumSize(shortHdrObjectTypeField, int32(h.typ))
|
|
|
|
size += proto.UInt64Size(shortHdrPayloadLength, h.payloadLen)
|
2020-12-17 10:18:07 +00:00
|
|
|
size += proto.NestedStructureSize(shortHdrHashField, h.payloadHash)
|
|
|
|
size += proto.NestedStructureSize(shortHdrHomoHashField, h.homoHash)
|
2020-08-18 15:28:02 +00:00
|
|
|
|
|
|
|
return size
|
|
|
|
}
|
|
|
|
|
2020-11-13 12:26:23 +00:00
|
|
|
func (h *ShortHeader) Unmarshal(data []byte) error {
|
|
|
|
m := new(object.ShortHeader)
|
|
|
|
if err := goproto.Unmarshal(data, m); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
|
|
|
*h = *ShortHeaderFromGRPCMessage(m)
|
|
|
|
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
2020-08-18 15:28:02 +00:00
|
|
|
func (a *Attribute) 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.StringMarshal(attributeKeyField, buf[offset:], a.key)
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
|
|
|
offset += n
|
|
|
|
|
|
|
|
_, err = proto.StringMarshal(attributeValueField, buf[offset:], a.val)
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
|
|
|
return buf, nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func (a *Attribute) StableSize() (size int) {
|
|
|
|
if a == nil {
|
|
|
|
return 0
|
|
|
|
}
|
|
|
|
|
|
|
|
size += proto.StringSize(shortHdrVersionField, a.key)
|
|
|
|
size += proto.StringSize(shortHdrEpochField, a.val)
|
|
|
|
|
|
|
|
return size
|
|
|
|
}
|
|
|
|
|
2020-11-13 12:31:15 +00:00
|
|
|
func (a *Attribute) Unmarshal(data []byte) error {
|
|
|
|
m := new(object.Header_Attribute)
|
|
|
|
if err := goproto.Unmarshal(data, m); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
|
|
|
*a = *AttributeFromGRPCMessage(m)
|
|
|
|
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
2020-08-18 15:28:02 +00:00
|
|
|
func (h *SplitHeader) StableMarshal(buf []byte) ([]byte, error) {
|
|
|
|
if h == nil {
|
|
|
|
return []byte{}, nil
|
|
|
|
}
|
|
|
|
|
|
|
|
if buf == nil {
|
|
|
|
buf = make([]byte, h.StableSize())
|
|
|
|
}
|
|
|
|
|
|
|
|
var (
|
|
|
|
offset, n int
|
|
|
|
err error
|
|
|
|
)
|
|
|
|
|
|
|
|
n, err = proto.NestedStructureMarshal(splitHdrParentField, buf[offset:], h.par)
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
|
|
|
offset += n
|
|
|
|
|
|
|
|
n, err = proto.NestedStructureMarshal(splitHdrPreviousField, buf[offset:], h.prev)
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
|
|
|
offset += n
|
|
|
|
|
|
|
|
n, err = proto.NestedStructureMarshal(splitHdrParentSignatureField, buf[offset:], h.parSig)
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
|
|
|
offset += n
|
|
|
|
|
|
|
|
n, err = proto.NestedStructureMarshal(splitHdrParentHeaderField, buf[offset:], h.parHdr)
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
|
|
|
offset += n
|
|
|
|
|
2020-12-21 07:51:45 +00:00
|
|
|
n, err = refs.ObjectIDNestedListMarshal(splitHdrChildrenField, buf[offset:], h.children)
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
2020-08-18 15:28:02 +00:00
|
|
|
}
|
|
|
|
|
2020-12-21 07:51:45 +00:00
|
|
|
offset += n
|
|
|
|
|
2020-11-24 17:14:03 +00:00
|
|
|
_, err = proto.BytesMarshal(splitHdrSplitIDField, buf[offset:], h.splitID)
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
2020-08-18 15:28:02 +00:00
|
|
|
return buf, nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func (h *SplitHeader) StableSize() (size int) {
|
|
|
|
if h == nil {
|
|
|
|
return 0
|
|
|
|
}
|
|
|
|
|
|
|
|
size += proto.NestedStructureSize(splitHdrParentField, h.par)
|
|
|
|
size += proto.NestedStructureSize(splitHdrPreviousField, h.prev)
|
|
|
|
size += proto.NestedStructureSize(splitHdrParentSignatureField, h.parSig)
|
|
|
|
size += proto.NestedStructureSize(splitHdrParentHeaderField, h.parHdr)
|
2020-12-21 07:51:45 +00:00
|
|
|
size += refs.ObjectIDNestedListSize(splitHdrChildrenField, h.children)
|
2020-11-24 17:14:03 +00:00
|
|
|
size += proto.BytesSize(splitHdrSplitIDField, h.splitID)
|
|
|
|
|
2020-08-18 15:28:02 +00:00
|
|
|
return size
|
|
|
|
}
|
|
|
|
|
2020-11-13 12:34:13 +00:00
|
|
|
func (h *SplitHeader) Unmarshal(data []byte) error {
|
|
|
|
m := new(object.Header_Split)
|
|
|
|
if err := goproto.Unmarshal(data, m); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
|
|
|
*h = *SplitHeaderFromGRPCMessage(m)
|
|
|
|
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
2020-08-18 15:28:02 +00:00
|
|
|
func (h *Header) StableMarshal(buf []byte) ([]byte, error) {
|
|
|
|
if h == nil {
|
|
|
|
return []byte{}, nil
|
|
|
|
}
|
|
|
|
|
|
|
|
if buf == nil {
|
|
|
|
buf = make([]byte, h.StableSize())
|
|
|
|
}
|
|
|
|
|
|
|
|
var (
|
|
|
|
offset, n int
|
|
|
|
err error
|
|
|
|
)
|
|
|
|
|
|
|
|
n, err = proto.NestedStructureMarshal(hdrVersionField, buf[offset:], h.version)
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
|
|
|
offset += n
|
|
|
|
|
|
|
|
n, err = proto.NestedStructureMarshal(hdrContainerIDField, buf[offset:], h.cid)
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
|
|
|
offset += n
|
|
|
|
|
|
|
|
n, err = proto.NestedStructureMarshal(hdrOwnerIDField, buf[offset:], h.ownerID)
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
|
|
|
offset += n
|
|
|
|
|
|
|
|
n, err = proto.UInt64Marshal(hdrEpochField, buf[offset:], h.creatEpoch)
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
|
|
|
offset += n
|
|
|
|
|
|
|
|
n, err = proto.UInt64Marshal(hdrPayloadLengthField, buf[offset:], h.payloadLen)
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
|
|
|
offset += n
|
|
|
|
|
2020-08-20 08:48:35 +00:00
|
|
|
n, err = proto.NestedStructureMarshal(hdrPayloadHashField, buf[offset:], h.payloadHash)
|
2020-08-18 15:28:02 +00:00
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
|
|
|
offset += n
|
|
|
|
|
|
|
|
n, err = proto.EnumMarshal(hdrObjectTypeField, buf[offset:], int32(h.typ))
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
|
|
|
offset += n
|
|
|
|
|
2020-08-20 08:48:35 +00:00
|
|
|
n, err = proto.NestedStructureMarshal(hdrHomomorphicHashField, buf[offset:], h.homoHash)
|
2020-08-18 15:28:02 +00:00
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
|
|
|
offset += n
|
|
|
|
|
|
|
|
n, err = proto.NestedStructureMarshal(hdrSessionTokenField, buf[offset:], h.sessionToken)
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
|
|
|
offset += n
|
|
|
|
|
|
|
|
for i := range h.attr {
|
|
|
|
n, err = proto.NestedStructureMarshal(hdrAttributesField, buf[offset:], h.attr[i])
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
|
|
|
offset += n
|
|
|
|
}
|
|
|
|
|
|
|
|
_, err = proto.NestedStructureMarshal(hdrSplitField, buf[offset:], h.split)
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
|
|
|
return buf, nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func (h *Header) StableSize() (size int) {
|
|
|
|
if h == nil {
|
|
|
|
return 0
|
|
|
|
}
|
|
|
|
|
|
|
|
size += proto.NestedStructureSize(hdrVersionField, h.version)
|
|
|
|
size += proto.NestedStructureSize(hdrContainerIDField, h.cid)
|
|
|
|
size += proto.NestedStructureSize(hdrOwnerIDField, h.ownerID)
|
|
|
|
size += proto.UInt64Size(hdrEpochField, h.creatEpoch)
|
|
|
|
size += proto.UInt64Size(hdrPayloadLengthField, h.payloadLen)
|
2020-08-20 08:48:35 +00:00
|
|
|
size += proto.NestedStructureSize(hdrPayloadHashField, h.payloadHash)
|
2020-08-18 15:28:02 +00:00
|
|
|
size += proto.EnumSize(hdrObjectTypeField, int32(h.typ))
|
2020-08-20 08:48:35 +00:00
|
|
|
size += proto.NestedStructureSize(hdrHomomorphicHashField, h.homoHash)
|
2020-08-18 15:28:02 +00:00
|
|
|
size += proto.NestedStructureSize(hdrSessionTokenField, h.sessionToken)
|
|
|
|
for i := range h.attr {
|
|
|
|
size += proto.NestedStructureSize(hdrAttributesField, h.attr[i])
|
|
|
|
}
|
|
|
|
size += proto.NestedStructureSize(hdrSplitField, h.split)
|
|
|
|
|
|
|
|
return size
|
|
|
|
}
|
|
|
|
|
2020-11-13 12:38:55 +00:00
|
|
|
func (h *Header) Unmarshal(data []byte) error {
|
|
|
|
m := new(object.Header)
|
|
|
|
if err := goproto.Unmarshal(data, m); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
|
|
|
*h = *HeaderFromGRPCMessage(m)
|
|
|
|
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
2020-09-08 10:39:13 +00:00
|
|
|
func (h *HeaderWithSignature) StableMarshal(buf []byte) ([]byte, error) {
|
|
|
|
if h == nil {
|
|
|
|
return []byte{}, nil
|
|
|
|
}
|
|
|
|
|
|
|
|
if buf == nil {
|
|
|
|
buf = make([]byte, h.StableSize())
|
|
|
|
}
|
|
|
|
|
|
|
|
var (
|
|
|
|
offset, n int
|
|
|
|
err error
|
|
|
|
)
|
|
|
|
|
|
|
|
n, err = proto.NestedStructureMarshal(hdrWithSigHeaderField, buf[offset:], h.header)
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
|
|
|
offset += n
|
|
|
|
|
|
|
|
n, err = proto.NestedStructureMarshal(hdrWithSigSignatureField, buf[offset:], h.signature)
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
|
|
|
offset += n
|
|
|
|
|
|
|
|
return buf, nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func (h *HeaderWithSignature) StableSize() (size int) {
|
|
|
|
if h == nil {
|
|
|
|
return 0
|
|
|
|
}
|
|
|
|
|
|
|
|
size += proto.NestedStructureSize(hdrVersionField, h.header)
|
|
|
|
size += proto.NestedStructureSize(hdrContainerIDField, h.signature)
|
|
|
|
|
|
|
|
return size
|
|
|
|
}
|
|
|
|
|
2020-11-13 12:43:02 +00:00
|
|
|
func (h *HeaderWithSignature) Unmarshal(data []byte) error {
|
|
|
|
m := new(object.HeaderWithSignature)
|
|
|
|
if err := goproto.Unmarshal(data, m); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
|
|
|
*h = *HeaderWithSignatureFromGRPCMessage(m)
|
|
|
|
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
2020-08-18 15:28:02 +00:00
|
|
|
func (o *Object) StableMarshal(buf []byte) ([]byte, error) {
|
|
|
|
if o == nil {
|
|
|
|
return []byte{}, nil
|
|
|
|
}
|
|
|
|
|
|
|
|
if buf == nil {
|
|
|
|
buf = make([]byte, o.StableSize())
|
|
|
|
}
|
|
|
|
|
|
|
|
var (
|
|
|
|
offset, n int
|
|
|
|
err error
|
|
|
|
)
|
|
|
|
|
|
|
|
n, err = proto.NestedStructureMarshal(objIDField, buf[offset:], o.objectID)
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
|
|
|
offset += n
|
|
|
|
|
|
|
|
n, err = proto.NestedStructureMarshal(objSignatureField, buf[offset:], o.idSig)
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
|
|
|
offset += n
|
|
|
|
|
|
|
|
n, err = proto.NestedStructureMarshal(objHeaderField, buf[offset:], o.header)
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
|
|
|
offset += n
|
|
|
|
|
|
|
|
_, err = proto.BytesMarshal(objPayloadField, buf[offset:], o.payload)
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
|
|
|
return buf, nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func (o *Object) StableSize() (size int) {
|
|
|
|
if o == nil {
|
|
|
|
return 0
|
|
|
|
}
|
|
|
|
|
|
|
|
size += proto.NestedStructureSize(objIDField, o.objectID)
|
|
|
|
size += proto.NestedStructureSize(objSignatureField, o.idSig)
|
|
|
|
size += proto.NestedStructureSize(objHeaderField, o.header)
|
|
|
|
size += proto.BytesSize(objPayloadField, o.payload)
|
|
|
|
|
|
|
|
return size
|
|
|
|
}
|
|
|
|
|
2020-09-02 11:46:43 +00:00
|
|
|
func (o *Object) StableUnmarshal(data []byte) error {
|
|
|
|
if o == nil {
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
objGRPC := new(object.Object)
|
2020-10-19 18:51:59 +00:00
|
|
|
if err := goproto.Unmarshal(data, objGRPC); err != nil {
|
2020-09-02 11:46:43 +00:00
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
|
|
|
*o = *ObjectFromGRPCMessage(objGRPC)
|
|
|
|
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
2020-11-13 12:51:27 +00:00
|
|
|
func (o *Object) Unmarshal(data []byte) error {
|
|
|
|
m := new(object.Object)
|
|
|
|
if err := goproto.Unmarshal(data, m); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
|
|
|
*o = *ObjectFromGRPCMessage(m)
|
|
|
|
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
2020-12-02 10:10:43 +00:00
|
|
|
func (s *SplitInfo) StableMarshal(buf []byte) ([]byte, error) {
|
|
|
|
if s == nil {
|
|
|
|
return []byte{}, nil
|
|
|
|
}
|
|
|
|
|
|
|
|
if buf == nil {
|
|
|
|
buf = make([]byte, s.StableSize())
|
|
|
|
}
|
|
|
|
|
|
|
|
var (
|
|
|
|
offset, n int
|
|
|
|
err error
|
|
|
|
)
|
|
|
|
|
|
|
|
n, err = proto.BytesMarshal(splitInfoSplitIDField, buf[offset:], s.splitID)
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
|
|
|
offset += n
|
|
|
|
|
|
|
|
n, err = proto.NestedStructureMarshal(splitInfoLastPartField, buf[offset:], s.lastPart)
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
|
|
|
offset += n
|
|
|
|
|
|
|
|
_, err = proto.NestedStructureMarshal(splitInfoLinkField, buf[offset:], s.link)
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
|
|
|
return buf, nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *SplitInfo) StableSize() (size int) {
|
|
|
|
if s == nil {
|
|
|
|
return 0
|
|
|
|
}
|
|
|
|
|
|
|
|
size += proto.BytesSize(splitInfoSplitIDField, s.splitID)
|
|
|
|
size += proto.NestedStructureSize(splitInfoLastPartField, s.lastPart)
|
|
|
|
size += proto.NestedStructureSize(splitInfoLinkField, s.link)
|
|
|
|
|
|
|
|
return size
|
|
|
|
}
|
|
|
|
|
2020-12-02 13:57:06 +00:00
|
|
|
func (s *SplitInfo) Unmarshal(data []byte) error {
|
|
|
|
m := new(object.SplitInfo)
|
|
|
|
if err := goproto.Unmarshal(data, m); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
|
|
|
*s = *SplitInfoFromGRPCMessage(m)
|
|
|
|
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
2020-08-18 16:46:55 +00:00
|
|
|
func (r *GetRequestBody) StableMarshal(buf []byte) ([]byte, error) {
|
|
|
|
if r == nil {
|
|
|
|
return []byte{}, nil
|
|
|
|
}
|
|
|
|
|
|
|
|
if buf == nil {
|
|
|
|
buf = make([]byte, r.StableSize())
|
|
|
|
}
|
|
|
|
|
|
|
|
var (
|
|
|
|
offset, n int
|
|
|
|
err error
|
|
|
|
)
|
|
|
|
|
|
|
|
n, err = proto.NestedStructureMarshal(getReqBodyAddressField, buf[offset:], r.addr)
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
|
|
|
offset += n
|
|
|
|
|
|
|
|
_, err = proto.BoolMarshal(getReqBodyRawFlagField, buf[offset:], r.raw)
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
|
|
|
return buf, nil
|
2020-08-18 15:28:02 +00:00
|
|
|
}
|
|
|
|
|
2020-08-18 16:46:55 +00:00
|
|
|
func (r *GetRequestBody) StableSize() (size int) {
|
|
|
|
if r == nil {
|
|
|
|
return 0
|
|
|
|
}
|
|
|
|
|
|
|
|
size += proto.NestedStructureSize(getReqBodyAddressField, r.addr)
|
|
|
|
size += proto.BoolSize(getReqBodyRawFlagField, r.raw)
|
|
|
|
|
|
|
|
return size
|
|
|
|
}
|
|
|
|
|
|
|
|
func (r *GetObjectPartInit) StableMarshal(buf []byte) ([]byte, error) {
|
|
|
|
if r == nil {
|
|
|
|
return []byte{}, nil
|
|
|
|
}
|
|
|
|
|
|
|
|
if buf == nil {
|
|
|
|
buf = make([]byte, r.StableSize())
|
|
|
|
}
|
|
|
|
|
|
|
|
var (
|
|
|
|
offset, n int
|
|
|
|
err error
|
|
|
|
)
|
|
|
|
|
|
|
|
n, err = proto.NestedStructureMarshal(getRespInitObjectIDField, buf[offset:], r.id)
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
|
|
|
offset += n
|
|
|
|
|
|
|
|
n, err = proto.NestedStructureMarshal(getRespInitSignatureField, buf[offset:], r.sig)
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
|
|
|
offset += n
|
|
|
|
|
|
|
|
_, err = proto.NestedStructureMarshal(getRespInitHeaderField, buf[offset:], r.hdr)
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
|
|
|
return buf, nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func (r *GetObjectPartInit) StableSize() (size int) {
|
|
|
|
if r == nil {
|
|
|
|
return 0
|
|
|
|
}
|
|
|
|
|
|
|
|
size += proto.NestedStructureSize(getRespInitObjectIDField, r.id)
|
|
|
|
size += proto.NestedStructureSize(getRespInitSignatureField, r.sig)
|
|
|
|
size += proto.NestedStructureSize(getRespInitHeaderField, r.hdr)
|
|
|
|
|
|
|
|
return size
|
2020-08-18 15:28:02 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
func (r *GetResponseBody) StableMarshal(buf []byte) ([]byte, error) {
|
2020-08-18 16:46:55 +00:00
|
|
|
if r == nil {
|
|
|
|
return []byte{}, nil
|
|
|
|
}
|
|
|
|
|
|
|
|
if buf == nil {
|
|
|
|
buf = make([]byte, r.StableSize())
|
|
|
|
}
|
|
|
|
|
|
|
|
if r.objPart != nil {
|
|
|
|
switch v := r.objPart.(type) {
|
|
|
|
case *GetObjectPartInit:
|
|
|
|
_, err := proto.NestedStructureMarshal(getRespBodyInitField, buf, v)
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
case *GetObjectPartChunk:
|
|
|
|
if v != nil {
|
|
|
|
_, err := proto.BytesMarshal(getRespBodyChunkField, buf, v.chunk)
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
}
|
2020-12-02 10:10:43 +00:00
|
|
|
case *SplitInfo:
|
|
|
|
_, err := proto.NestedStructureMarshal(getRespBodySplitInfoField, buf, v)
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
2020-08-18 16:46:55 +00:00
|
|
|
default:
|
|
|
|
panic("unknown one of object get response body type")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return buf, nil
|
2020-08-18 15:28:02 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
func (r *GetResponseBody) StableSize() (size int) {
|
2020-08-18 16:46:55 +00:00
|
|
|
if r == nil {
|
|
|
|
return 0
|
|
|
|
}
|
|
|
|
|
|
|
|
if r.objPart != nil {
|
|
|
|
switch v := r.objPart.(type) {
|
|
|
|
case *GetObjectPartInit:
|
|
|
|
size += proto.NestedStructureSize(getRespBodyInitField, v)
|
|
|
|
case *GetObjectPartChunk:
|
|
|
|
if v != nil {
|
|
|
|
size += proto.BytesSize(getRespBodyChunkField, v.chunk)
|
|
|
|
}
|
2020-12-02 10:10:43 +00:00
|
|
|
case *SplitInfo:
|
|
|
|
size += proto.NestedStructureSize(getRespBodySplitInfoField, v)
|
2020-08-18 16:46:55 +00:00
|
|
|
default:
|
|
|
|
panic("unknown one of object get response body type")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return size
|
|
|
|
}
|
|
|
|
|
|
|
|
func (r *PutObjectPartInit) StableMarshal(buf []byte) ([]byte, error) {
|
|
|
|
if r == nil {
|
|
|
|
return []byte{}, nil
|
|
|
|
}
|
|
|
|
|
|
|
|
if buf == nil {
|
|
|
|
buf = make([]byte, r.StableSize())
|
|
|
|
}
|
|
|
|
|
|
|
|
var (
|
|
|
|
offset, n int
|
|
|
|
err error
|
|
|
|
)
|
|
|
|
|
|
|
|
n, err = proto.NestedStructureMarshal(putReqInitObjectIDField, buf[offset:], r.id)
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
|
|
|
offset += n
|
|
|
|
|
|
|
|
n, err = proto.NestedStructureMarshal(putReqInitSignatureField, buf[offset:], r.sig)
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
|
|
|
offset += n
|
|
|
|
|
|
|
|
n, err = proto.NestedStructureMarshal(putReqInitHeaderField, buf[offset:], r.hdr)
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
|
|
|
offset += n
|
|
|
|
|
|
|
|
n, err = proto.UInt32Marshal(putReqInitCopiesNumField, buf[offset:], r.copyNum)
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
|
|
|
return buf, nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func (r *PutObjectPartInit) StableSize() (size int) {
|
|
|
|
if r == nil {
|
|
|
|
return 0
|
|
|
|
}
|
|
|
|
|
|
|
|
size += proto.NestedStructureSize(putReqInitObjectIDField, r.id)
|
|
|
|
size += proto.NestedStructureSize(putReqInitSignatureField, r.sig)
|
|
|
|
size += proto.NestedStructureSize(putReqInitHeaderField, r.hdr)
|
|
|
|
size += proto.UInt32Size(putReqInitCopiesNumField, r.copyNum)
|
|
|
|
|
|
|
|
return size
|
|
|
|
}
|
|
|
|
|
|
|
|
func (r *PutRequestBody) StableMarshal(buf []byte) ([]byte, error) {
|
|
|
|
if r == nil {
|
|
|
|
return []byte{}, nil
|
|
|
|
}
|
|
|
|
|
|
|
|
if buf == nil {
|
|
|
|
buf = make([]byte, r.StableSize())
|
|
|
|
}
|
|
|
|
|
|
|
|
if r.objPart != nil {
|
|
|
|
switch v := r.objPart.(type) {
|
|
|
|
case *PutObjectPartInit:
|
|
|
|
_, err := proto.NestedStructureMarshal(putReqBodyInitField, buf, v)
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
case *PutObjectPartChunk:
|
|
|
|
if v != nil {
|
|
|
|
_, err := proto.BytesMarshal(putReqBodyChunkField, buf, v.chunk)
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
}
|
|
|
|
default:
|
|
|
|
panic("unknown one of object put request body type")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return buf, nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func (r *PutRequestBody) StableSize() (size int) {
|
|
|
|
if r == nil {
|
|
|
|
return 0
|
|
|
|
}
|
|
|
|
|
|
|
|
if r.objPart != nil {
|
|
|
|
switch v := r.objPart.(type) {
|
|
|
|
case *PutObjectPartInit:
|
|
|
|
size += proto.NestedStructureSize(putReqBodyInitField, v)
|
|
|
|
case *PutObjectPartChunk:
|
|
|
|
if v != nil {
|
|
|
|
size += proto.BytesSize(putReqBodyChunkField, v.chunk)
|
|
|
|
}
|
|
|
|
default:
|
|
|
|
panic("unknown one of object get response body type")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return size
|
2020-08-18 15:28:02 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
func (r *PutResponseBody) StableMarshal(buf []byte) ([]byte, error) {
|
2020-08-18 16:46:55 +00:00
|
|
|
if r == nil {
|
|
|
|
return []byte{}, nil
|
|
|
|
}
|
|
|
|
|
|
|
|
if buf == nil {
|
|
|
|
buf = make([]byte, r.StableSize())
|
|
|
|
}
|
|
|
|
|
|
|
|
_, err := proto.NestedStructureMarshal(putRespBodyObjectIDField, buf, r.id)
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
|
|
|
return buf, nil
|
2020-08-18 15:28:02 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
func (r *PutResponseBody) StableSize() (size int) {
|
2020-08-18 16:46:55 +00:00
|
|
|
if r == nil {
|
|
|
|
return 0
|
|
|
|
}
|
|
|
|
|
|
|
|
size += proto.NestedStructureSize(putRespBodyObjectIDField, r.id)
|
|
|
|
|
|
|
|
return size
|
|
|
|
}
|
|
|
|
|
|
|
|
func (r *DeleteRequestBody) StableMarshal(buf []byte) ([]byte, error) {
|
|
|
|
if r == nil {
|
|
|
|
return []byte{}, nil
|
|
|
|
}
|
|
|
|
|
|
|
|
if buf == nil {
|
|
|
|
buf = make([]byte, r.StableSize())
|
|
|
|
}
|
|
|
|
|
|
|
|
_, err := proto.NestedStructureMarshal(deleteReqBodyAddressField, buf, r.addr)
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
|
|
|
return buf, nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func (r *DeleteRequestBody) StableSize() (size int) {
|
|
|
|
if r == nil {
|
|
|
|
return 0
|
|
|
|
}
|
|
|
|
|
|
|
|
size += proto.NestedStructureSize(deleteReqBodyAddressField, r.addr)
|
|
|
|
|
|
|
|
return size
|
2020-08-18 15:28:02 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
func (r *DeleteResponseBody) StableMarshal(buf []byte) ([]byte, error) {
|
2020-12-10 09:15:17 +00:00
|
|
|
if r == nil {
|
|
|
|
return []byte{}, nil
|
|
|
|
}
|
|
|
|
|
|
|
|
if buf == nil {
|
|
|
|
buf = make([]byte, r.StableSize())
|
|
|
|
}
|
|
|
|
|
|
|
|
_, err := proto.NestedStructureMarshal(deleteRespBodyTombstoneFNum, buf, r.tombstone)
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
|
|
|
return buf, nil
|
2020-08-18 15:28:02 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
func (r *DeleteResponseBody) StableSize() (size int) {
|
2020-12-10 09:15:17 +00:00
|
|
|
if r == nil {
|
|
|
|
return 0
|
|
|
|
}
|
|
|
|
|
|
|
|
size += proto.NestedStructureSize(deleteRespBodyTombstoneFNum, r.tombstone)
|
|
|
|
|
|
|
|
return size
|
2020-08-18 16:46:55 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
func (r *HeadRequestBody) StableMarshal(buf []byte) ([]byte, error) {
|
|
|
|
if r == nil {
|
|
|
|
return []byte{}, nil
|
|
|
|
}
|
|
|
|
|
|
|
|
if buf == nil {
|
|
|
|
buf = make([]byte, r.StableSize())
|
|
|
|
}
|
|
|
|
|
|
|
|
var (
|
|
|
|
offset, n int
|
|
|
|
err error
|
|
|
|
)
|
|
|
|
|
|
|
|
n, err = proto.NestedStructureMarshal(headReqBodyAddressField, buf[offset:], r.addr)
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
|
|
|
offset += n
|
|
|
|
|
|
|
|
n, err = proto.BoolMarshal(headReqBodyMainFlagField, buf[offset:], r.mainOnly)
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
|
|
|
offset += n
|
|
|
|
|
|
|
|
_, err = proto.BoolMarshal(headReqBodyRawFlagField, buf[offset:], r.raw)
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
|
|
|
return buf, nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func (r *HeadRequestBody) StableSize() (size int) {
|
|
|
|
if r == nil {
|
|
|
|
return 0
|
|
|
|
}
|
|
|
|
|
|
|
|
size += proto.NestedStructureSize(headReqBodyAddressField, r.addr)
|
|
|
|
size += proto.BoolSize(headReqBodyMainFlagField, r.mainOnly)
|
|
|
|
size += proto.BoolSize(headReqBodyRawFlagField, r.raw)
|
|
|
|
|
|
|
|
return size
|
2020-08-18 15:28:02 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
func (r *HeadResponseBody) StableMarshal(buf []byte) ([]byte, error) {
|
2020-08-18 16:46:55 +00:00
|
|
|
if r == nil {
|
|
|
|
return []byte{}, nil
|
|
|
|
}
|
|
|
|
|
|
|
|
if buf == nil {
|
|
|
|
buf = make([]byte, r.StableSize())
|
|
|
|
}
|
|
|
|
|
|
|
|
if r.hdrPart != nil {
|
|
|
|
switch v := r.hdrPart.(type) {
|
2020-12-07 14:41:05 +00:00
|
|
|
case *HeaderWithSignature:
|
2020-08-18 16:46:55 +00:00
|
|
|
if v != nil {
|
2020-12-07 14:41:05 +00:00
|
|
|
_, err := proto.NestedStructureMarshal(headRespBodyHeaderField, buf, v)
|
2020-08-18 16:46:55 +00:00
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
}
|
2020-12-07 14:41:05 +00:00
|
|
|
case *ShortHeader:
|
2020-08-18 16:46:55 +00:00
|
|
|
if v != nil {
|
2020-12-07 14:41:05 +00:00
|
|
|
_, err := proto.NestedStructureMarshal(headRespBodyShortHeaderField, buf, v)
|
2020-08-18 16:46:55 +00:00
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
}
|
2020-12-07 15:59:01 +00:00
|
|
|
case *SplitInfo:
|
|
|
|
if v != nil {
|
|
|
|
_, err := proto.NestedStructureMarshal(headRespBodySplitInfoField, buf, v)
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
}
|
2020-08-18 16:46:55 +00:00
|
|
|
default:
|
|
|
|
panic("unknown one of object put request body type")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return buf, nil
|
2020-08-18 15:28:02 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
func (r *HeadResponseBody) StableSize() (size int) {
|
2020-08-18 16:46:55 +00:00
|
|
|
if r == nil {
|
|
|
|
return 0
|
|
|
|
}
|
|
|
|
|
|
|
|
if r.hdrPart != nil {
|
|
|
|
switch v := r.hdrPart.(type) {
|
2020-12-07 14:41:05 +00:00
|
|
|
case *HeaderWithSignature:
|
2020-08-18 16:46:55 +00:00
|
|
|
if v != nil {
|
2020-12-07 14:41:05 +00:00
|
|
|
size += proto.NestedStructureSize(headRespBodyHeaderField, v)
|
2020-08-18 16:46:55 +00:00
|
|
|
}
|
2020-12-07 14:41:05 +00:00
|
|
|
case *ShortHeader:
|
2020-08-18 16:46:55 +00:00
|
|
|
if v != nil {
|
2020-12-07 14:41:05 +00:00
|
|
|
size += proto.NestedStructureSize(headRespBodyShortHeaderField, v)
|
2020-08-18 16:46:55 +00:00
|
|
|
}
|
2020-12-07 15:59:01 +00:00
|
|
|
case *SplitInfo:
|
|
|
|
if v != nil {
|
|
|
|
size += proto.NestedStructureSize(headRespBodySplitInfoField, v)
|
|
|
|
}
|
2020-08-18 16:46:55 +00:00
|
|
|
default:
|
|
|
|
panic("unknown one of object put request body type")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return size
|
|
|
|
}
|
|
|
|
|
|
|
|
func (f *SearchFilter) StableMarshal(buf []byte) ([]byte, error) {
|
|
|
|
if f == nil {
|
|
|
|
return []byte{}, nil
|
|
|
|
}
|
|
|
|
|
|
|
|
if buf == nil {
|
|
|
|
buf = make([]byte, f.StableSize())
|
|
|
|
}
|
|
|
|
|
|
|
|
var (
|
|
|
|
offset, n int
|
|
|
|
err error
|
|
|
|
)
|
|
|
|
|
|
|
|
n, err = proto.EnumMarshal(searchFilterMatchField, buf[offset:], int32(f.matchType))
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
|
|
|
offset += n
|
|
|
|
|
2020-10-27 13:55:19 +00:00
|
|
|
n, err = proto.StringMarshal(searchFilterNameField, buf[offset:], f.key)
|
2020-08-18 16:46:55 +00:00
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
|
|
|
offset += n
|
|
|
|
|
|
|
|
_, err = proto.StringMarshal(searchFilterValueField, buf[offset:], f.val)
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
|
|
|
return buf, nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func (f *SearchFilter) StableSize() (size int) {
|
|
|
|
if f == nil {
|
|
|
|
return 0
|
|
|
|
}
|
|
|
|
|
|
|
|
size += proto.EnumSize(searchFilterMatchField, int32(f.matchType))
|
2020-10-27 13:55:19 +00:00
|
|
|
size += proto.StringSize(searchFilterNameField, f.key)
|
2020-08-18 16:46:55 +00:00
|
|
|
size += proto.StringSize(searchFilterValueField, f.val)
|
|
|
|
|
|
|
|
return size
|
|
|
|
}
|
|
|
|
|
|
|
|
func (r *SearchRequestBody) StableMarshal(buf []byte) ([]byte, error) {
|
|
|
|
if r == nil {
|
|
|
|
return []byte{}, nil
|
|
|
|
}
|
|
|
|
|
|
|
|
if buf == nil {
|
|
|
|
buf = make([]byte, r.StableSize())
|
|
|
|
}
|
|
|
|
|
|
|
|
var (
|
|
|
|
offset, n int
|
|
|
|
err error
|
|
|
|
)
|
|
|
|
|
|
|
|
n, err = proto.NestedStructureMarshal(searchReqBodyContainerIDField, buf[offset:], r.cid)
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
|
|
|
offset += n
|
|
|
|
|
|
|
|
n, err = proto.UInt32Marshal(searchReqBodyVersionField, buf[offset:], r.version)
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
|
|
|
offset += n
|
|
|
|
|
|
|
|
for i := range r.filters {
|
|
|
|
n, err = proto.NestedStructureMarshal(searchReqBodyFiltersField, buf[offset:], r.filters[i])
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
|
|
|
offset += n
|
|
|
|
}
|
|
|
|
|
|
|
|
return buf, nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func (r *SearchRequestBody) StableSize() (size int) {
|
|
|
|
if r == nil {
|
|
|
|
return 0
|
|
|
|
}
|
|
|
|
|
|
|
|
size += proto.NestedStructureSize(searchReqBodyContainerIDField, r.cid)
|
|
|
|
size += proto.UInt32Size(searchReqBodyVersionField, r.version)
|
|
|
|
|
|
|
|
for i := range r.filters {
|
|
|
|
size += proto.NestedStructureSize(searchReqBodyFiltersField, r.filters[i])
|
|
|
|
}
|
|
|
|
|
|
|
|
return size
|
2020-08-18 15:28:02 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
func (r *SearchResponseBody) StableMarshal(buf []byte) ([]byte, error) {
|
2020-08-18 16:46:55 +00:00
|
|
|
if r == nil {
|
|
|
|
return []byte{}, nil
|
|
|
|
}
|
|
|
|
|
|
|
|
if buf == nil {
|
|
|
|
buf = make([]byte, r.StableSize())
|
|
|
|
}
|
|
|
|
|
|
|
|
var (
|
2020-12-21 07:51:45 +00:00
|
|
|
offset int
|
|
|
|
err error
|
2020-08-18 16:46:55 +00:00
|
|
|
)
|
|
|
|
|
2020-12-21 07:51:45 +00:00
|
|
|
_, err = refs.ObjectIDNestedListMarshal(searchRespBodyObjectIDsField, buf[offset:], r.idList)
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
2020-08-18 16:46:55 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
return buf, nil
|
2020-08-18 15:28:02 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
func (r *SearchResponseBody) StableSize() (size int) {
|
2020-08-18 16:46:55 +00:00
|
|
|
if r == nil {
|
|
|
|
return 0
|
|
|
|
}
|
|
|
|
|
2020-12-21 07:51:45 +00:00
|
|
|
size += refs.ObjectIDNestedListSize(searchRespBodyObjectIDsField, r.idList)
|
2020-08-18 16:46:55 +00:00
|
|
|
|
|
|
|
return size
|
|
|
|
}
|
|
|
|
|
|
|
|
func (r *Range) StableMarshal(buf []byte) ([]byte, error) {
|
|
|
|
if r == nil {
|
|
|
|
return []byte{}, nil
|
|
|
|
}
|
|
|
|
|
|
|
|
if buf == nil {
|
|
|
|
buf = make([]byte, r.StableSize())
|
|
|
|
}
|
|
|
|
|
|
|
|
var (
|
|
|
|
offset, n int
|
|
|
|
err error
|
|
|
|
)
|
|
|
|
|
|
|
|
n, err = proto.UInt64Marshal(rangeOffsetField, buf[offset:], r.off)
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
|
|
|
offset += n
|
|
|
|
|
|
|
|
_, err = proto.UInt64Marshal(rangeLengthField, buf[offset:], r.len)
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
|
|
|
return buf, nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func (r *Range) StableSize() (size int) {
|
|
|
|
if r == nil {
|
|
|
|
return 0
|
|
|
|
}
|
|
|
|
|
|
|
|
size += proto.UInt64Size(rangeOffsetField, r.off)
|
|
|
|
size += proto.UInt64Size(rangeLengthField, r.len)
|
|
|
|
|
|
|
|
return size
|
|
|
|
}
|
|
|
|
|
|
|
|
func (r *GetRangeRequestBody) StableMarshal(buf []byte) ([]byte, error) {
|
|
|
|
if r == nil {
|
|
|
|
return []byte{}, nil
|
|
|
|
}
|
|
|
|
|
|
|
|
if buf == nil {
|
|
|
|
buf = make([]byte, r.StableSize())
|
|
|
|
}
|
|
|
|
|
|
|
|
var (
|
|
|
|
offset, n int
|
|
|
|
err error
|
|
|
|
)
|
|
|
|
|
|
|
|
n, err = proto.NestedStructureMarshal(getRangeReqBodyAddressField, buf[offset:], r.addr)
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
|
|
|
offset += n
|
|
|
|
|
2020-12-07 15:59:01 +00:00
|
|
|
n, err = proto.NestedStructureMarshal(getRangeReqBodyRangeField, buf[offset:], r.rng)
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
|
|
|
offset += n
|
|
|
|
|
|
|
|
_, err = proto.BoolMarshal(getRangeReqBodyRawField, buf[offset:], r.raw)
|
2020-08-18 16:46:55 +00:00
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
|
|
|
return buf, nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func (r *GetRangeRequestBody) StableSize() (size int) {
|
|
|
|
if r == nil {
|
|
|
|
return 0
|
|
|
|
}
|
|
|
|
|
|
|
|
size += proto.NestedStructureSize(getRangeReqBodyAddressField, r.addr)
|
|
|
|
size += proto.NestedStructureSize(getRangeReqBodyRangeField, r.rng)
|
2020-12-07 15:59:01 +00:00
|
|
|
size += proto.BoolSize(getRangeReqBodyRawField, r.raw)
|
2020-08-18 16:46:55 +00:00
|
|
|
|
|
|
|
return size
|
2020-08-18 15:28:02 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
func (r *GetRangeResponseBody) StableMarshal(buf []byte) ([]byte, error) {
|
2020-08-18 16:46:55 +00:00
|
|
|
if r == nil {
|
|
|
|
return []byte{}, nil
|
|
|
|
}
|
|
|
|
|
|
|
|
if buf == nil {
|
|
|
|
buf = make([]byte, r.StableSize())
|
|
|
|
}
|
|
|
|
|
2020-12-07 15:59:01 +00:00
|
|
|
if r.rngPart != nil {
|
|
|
|
switch v := r.rngPart.(type) {
|
|
|
|
case *GetRangePartChunk:
|
|
|
|
if v != nil {
|
|
|
|
_, err := proto.BytesMarshal(getRangeRespChunkField, buf, v.chunk)
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
}
|
|
|
|
case *SplitInfo:
|
|
|
|
if v != nil {
|
|
|
|
_, err := proto.NestedStructureMarshal(getRangeRespSplitInfoField, buf, v)
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
}
|
|
|
|
default:
|
|
|
|
panic("unknown one of object get range request body type")
|
|
|
|
}
|
2020-08-18 16:46:55 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
return buf, nil
|
2020-08-18 15:28:02 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
func (r *GetRangeResponseBody) StableSize() (size int) {
|
2020-08-18 16:46:55 +00:00
|
|
|
if r == nil {
|
|
|
|
return 0
|
|
|
|
}
|
|
|
|
|
2020-12-07 15:59:01 +00:00
|
|
|
if r.rngPart != nil {
|
|
|
|
switch v := r.rngPart.(type) {
|
|
|
|
case *GetRangePartChunk:
|
|
|
|
if v != nil {
|
|
|
|
size += proto.BytesSize(getRangeRespChunkField, v.chunk)
|
|
|
|
}
|
|
|
|
case *SplitInfo:
|
|
|
|
if v != nil {
|
|
|
|
size = proto.NestedStructureSize(getRangeRespSplitInfoField, v)
|
|
|
|
}
|
|
|
|
default:
|
|
|
|
panic("unknown one of object get range request body type")
|
|
|
|
}
|
|
|
|
}
|
2020-08-18 16:46:55 +00:00
|
|
|
|
|
|
|
return size
|
|
|
|
}
|
|
|
|
|
|
|
|
func (r *GetRangeHashRequestBody) StableMarshal(buf []byte) ([]byte, error) {
|
|
|
|
if r == nil {
|
|
|
|
return []byte{}, nil
|
|
|
|
}
|
|
|
|
|
|
|
|
if buf == nil {
|
|
|
|
buf = make([]byte, r.StableSize())
|
|
|
|
}
|
|
|
|
|
|
|
|
var (
|
|
|
|
offset, n int
|
|
|
|
err error
|
|
|
|
)
|
|
|
|
|
|
|
|
n, err = proto.NestedStructureMarshal(getRangeHashReqBodyAddressField, buf[offset:], r.addr)
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
|
|
|
offset += n
|
|
|
|
|
|
|
|
for i := range r.rngs {
|
|
|
|
n, err = proto.NestedStructureMarshal(getRangeHashReqBodyRangesField, buf[offset:], r.rngs[i])
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
|
|
|
offset += n
|
|
|
|
}
|
|
|
|
|
2020-08-20 08:48:35 +00:00
|
|
|
n, err = proto.BytesMarshal(getRangeHashReqBodySaltField, buf[offset:], r.salt)
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
|
|
|
offset += n
|
|
|
|
|
|
|
|
_, err = proto.EnumMarshal(getRangeHashReqBodyTypeField, buf[offset:], int32(r.typ))
|
2020-08-18 16:46:55 +00:00
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
|
|
|
return buf, nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func (r *GetRangeHashRequestBody) StableSize() (size int) {
|
|
|
|
if r == nil {
|
|
|
|
return 0
|
|
|
|
}
|
|
|
|
|
|
|
|
size += proto.NestedStructureSize(getRangeHashReqBodyAddressField, r.addr)
|
|
|
|
|
|
|
|
for i := range r.rngs {
|
|
|
|
size += proto.NestedStructureSize(getRangeHashReqBodyRangesField, r.rngs[i])
|
|
|
|
}
|
|
|
|
|
|
|
|
size += proto.BytesSize(getRangeHashReqBodySaltField, r.salt)
|
2020-08-20 08:48:35 +00:00
|
|
|
size += proto.EnumSize(getRangeHashReqBodyTypeField, int32(r.typ))
|
2020-08-18 16:46:55 +00:00
|
|
|
|
|
|
|
return size
|
2020-08-18 15:28:02 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
func (r *GetRangeHashResponseBody) StableMarshal(buf []byte) ([]byte, error) {
|
2020-08-18 16:46:55 +00:00
|
|
|
if r == nil {
|
|
|
|
return []byte{}, nil
|
|
|
|
}
|
|
|
|
|
|
|
|
if buf == nil {
|
|
|
|
buf = make([]byte, r.StableSize())
|
|
|
|
}
|
|
|
|
|
2020-08-20 08:48:35 +00:00
|
|
|
var (
|
|
|
|
offset, n int
|
|
|
|
err error
|
|
|
|
)
|
|
|
|
|
|
|
|
n, err = proto.EnumMarshal(getRangeHashRespBodyTypeField, buf, int32(r.typ))
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
|
|
|
offset += n
|
|
|
|
|
|
|
|
_, err = proto.RepeatedBytesMarshal(getRangeHashRespBodyHashListField, buf[offset:], r.hashList)
|
2020-08-18 16:46:55 +00:00
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
|
|
|
return buf, nil
|
2020-08-18 15:28:02 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
func (r *GetRangeHashResponseBody) StableSize() (size int) {
|
2020-08-18 16:46:55 +00:00
|
|
|
if r == nil {
|
|
|
|
return 0
|
|
|
|
}
|
|
|
|
|
2020-08-20 08:48:35 +00:00
|
|
|
size += proto.EnumSize(getRangeHashRespBodyTypeField, int32(r.typ))
|
|
|
|
size += proto.RepeatedBytesSize(getRangeHashRespBodyHashListField, r.hashList)
|
2020-08-18 16:46:55 +00:00
|
|
|
|
|
|
|
return size
|
2020-08-18 15:28:02 +00:00
|
|
|
}
|