forked from TrueCloudLab/frostfs-api-go
Add stable marshal for object service
Signed-off-by: Alex Vanin <alexey@nspcc.ru>
This commit is contained in:
parent
93d2d12984
commit
dc91753206
2 changed files with 1202 additions and 23 deletions
|
@ -36,6 +36,59 @@ const (
|
|||
objSignatureField = 2
|
||||
objHeaderField = 3
|
||||
objPayloadField = 4
|
||||
|
||||
getReqBodyAddressField = 1
|
||||
getReqBodyRawFlagField = 2
|
||||
|
||||
getRespInitObjectIDField = 1
|
||||
getRespInitSignatureField = 2
|
||||
getRespInitHeaderField = 3
|
||||
|
||||
getRespBodyInitField = 1
|
||||
getRespBodyChunkField = 2
|
||||
|
||||
putReqInitObjectIDField = 1
|
||||
putReqInitSignatureField = 2
|
||||
putReqInitHeaderField = 3
|
||||
putReqInitCopiesNumField = 4
|
||||
|
||||
putReqBodyInitField = 1
|
||||
putReqBodyChunkField = 2
|
||||
|
||||
putRespBodyObjectIDField = 1
|
||||
|
||||
deleteReqBodyAddressField = 1
|
||||
|
||||
headReqBodyAddressField = 1
|
||||
headReqBodyMainFlagField = 2
|
||||
headReqBodyRawFlagField = 3
|
||||
|
||||
headRespBodyHeaderField = 1
|
||||
headRespBodyShortHeaderField = 2
|
||||
|
||||
searchFilterMatchField = 1
|
||||
searchFilterNameField = 2
|
||||
searchFilterValueField = 3
|
||||
|
||||
searchReqBodyContainerIDField = 1
|
||||
searchReqBodyVersionField = 2
|
||||
searchReqBodyFiltersField = 3
|
||||
|
||||
searchRespBodyObjectIDsField = 1
|
||||
|
||||
rangeOffsetField = 1
|
||||
rangeLengthField = 2
|
||||
|
||||
getRangeReqBodyAddressField = 1
|
||||
getRangeReqBodyRangeField = 2
|
||||
|
||||
getRangeRespChunkField = 1
|
||||
|
||||
getRangeHashReqBodyAddressField = 1
|
||||
getRangeHashReqBodyRangesField = 2
|
||||
getRangeHashReqBodySaltField = 3
|
||||
|
||||
getRangeHashRespBodyHashList = 1
|
||||
)
|
||||
|
||||
func (h *ShortHeader) StableMarshal(buf []byte) ([]byte, error) {
|
||||
|
@ -385,66 +438,745 @@ func (o *Object) StableSize() (size int) {
|
|||
return size
|
||||
}
|
||||
|
||||
func (r *PutRequestBody) StableMarshal(buf []byte) ([]byte, error) {
|
||||
panic("not implemented")
|
||||
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
|
||||
}
|
||||
|
||||
func (r *PutRequestBody) StableSize() (size int) {
|
||||
panic("not implemented")
|
||||
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
|
||||
}
|
||||
|
||||
func (r *GetResponseBody) StableMarshal(buf []byte) ([]byte, error) {
|
||||
panic("not implemented")
|
||||
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
|
||||
}
|
||||
}
|
||||
default:
|
||||
panic("unknown one of object get response body type")
|
||||
}
|
||||
}
|
||||
|
||||
return buf, nil
|
||||
}
|
||||
|
||||
func (r *GetResponseBody) StableSize() (size int) {
|
||||
panic("not implemented")
|
||||
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)
|
||||
}
|
||||
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
|
||||
}
|
||||
|
||||
func (r *PutResponseBody) StableMarshal(buf []byte) ([]byte, error) {
|
||||
panic("not implemented")
|
||||
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
|
||||
}
|
||||
|
||||
func (r *PutResponseBody) StableSize() (size int) {
|
||||
panic("not implemented")
|
||||
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
|
||||
}
|
||||
|
||||
func (r *DeleteResponseBody) StableMarshal(buf []byte) ([]byte, error) {
|
||||
panic("not implemented")
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
func (r *DeleteResponseBody) StableSize() (size int) {
|
||||
panic("not implemented")
|
||||
return 0
|
||||
}
|
||||
|
||||
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
|
||||
}
|
||||
|
||||
func (r *HeadResponseBody) StableMarshal(buf []byte) ([]byte, error) {
|
||||
panic("not implemented")
|
||||
if r == nil {
|
||||
return []byte{}, nil
|
||||
}
|
||||
|
||||
if buf == nil {
|
||||
buf = make([]byte, r.StableSize())
|
||||
}
|
||||
|
||||
if r.hdrPart != nil {
|
||||
switch v := r.hdrPart.(type) {
|
||||
case *GetHeaderPartFull:
|
||||
if v != nil {
|
||||
_, err := proto.NestedStructureMarshal(headRespBodyHeaderField, buf, v.hdr)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
case *GetHeaderPartShort:
|
||||
if v != nil {
|
||||
_, err := proto.NestedStructureMarshal(headRespBodyShortHeaderField, buf, v.hdr)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
default:
|
||||
panic("unknown one of object put request body type")
|
||||
}
|
||||
}
|
||||
|
||||
return buf, nil
|
||||
}
|
||||
|
||||
func (r *HeadResponseBody) StableSize() (size int) {
|
||||
panic("not implemented")
|
||||
if r == nil {
|
||||
return 0
|
||||
}
|
||||
|
||||
if r.hdrPart != nil {
|
||||
switch v := r.hdrPart.(type) {
|
||||
case *GetHeaderPartFull:
|
||||
if v != nil {
|
||||
size += proto.NestedStructureSize(headRespBodyHeaderField, v.hdr)
|
||||
}
|
||||
case *GetHeaderPartShort:
|
||||
if v != nil {
|
||||
size += proto.NestedStructureSize(headRespBodyShortHeaderField, v.hdr)
|
||||
}
|
||||
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
|
||||
|
||||
n, err = proto.StringMarshal(searchFilterNameField, buf[offset:], f.name)
|
||||
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))
|
||||
size += proto.StringSize(searchFilterNameField, f.name)
|
||||
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
|
||||
}
|
||||
|
||||
func (r *SearchResponseBody) StableMarshal(buf []byte) ([]byte, error) {
|
||||
panic("not implemented")
|
||||
if r == nil {
|
||||
return []byte{}, nil
|
||||
}
|
||||
|
||||
if buf == nil {
|
||||
buf = make([]byte, r.StableSize())
|
||||
}
|
||||
|
||||
var (
|
||||
offset, n int
|
||||
err error
|
||||
)
|
||||
|
||||
for i := range r.idList {
|
||||
n, err = proto.NestedStructureMarshal(searchRespBodyObjectIDsField, buf[offset:], r.idList[i])
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
offset += n
|
||||
}
|
||||
|
||||
return buf, nil
|
||||
}
|
||||
|
||||
func (r *SearchResponseBody) StableSize() (size int) {
|
||||
panic("not implemented")
|
||||
if r == nil {
|
||||
return 0
|
||||
}
|
||||
|
||||
for i := range r.idList {
|
||||
size += proto.NestedStructureSize(searchRespBodyObjectIDsField, r.idList[i])
|
||||
}
|
||||
|
||||
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
|
||||
|
||||
_, err = proto.NestedStructureMarshal(getRangeReqBodyRangeField, buf[offset:], r.rng)
|
||||
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)
|
||||
|
||||
return size
|
||||
}
|
||||
|
||||
func (r *GetRangeResponseBody) StableMarshal(buf []byte) ([]byte, error) {
|
||||
panic("not implemented")
|
||||
if r == nil {
|
||||
return []byte{}, nil
|
||||
}
|
||||
|
||||
if buf == nil {
|
||||
buf = make([]byte, r.StableSize())
|
||||
}
|
||||
|
||||
_, err := proto.BytesMarshal(getRangeRespChunkField, buf, r.chunk)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return buf, nil
|
||||
}
|
||||
|
||||
func (r *GetRangeResponseBody) StableSize() (size int) {
|
||||
panic("not implemented")
|
||||
if r == nil {
|
||||
return 0
|
||||
}
|
||||
|
||||
size += proto.BytesSize(getRangeRespChunkField, r.chunk)
|
||||
|
||||
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
|
||||
}
|
||||
|
||||
_, err = proto.BytesMarshal(getRangeHashReqBodySaltField, buf[offset:], r.salt)
|
||||
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)
|
||||
|
||||
return size
|
||||
}
|
||||
|
||||
func (r *GetRangeHashResponseBody) StableMarshal(buf []byte) ([]byte, error) {
|
||||
panic("not implemented")
|
||||
if r == nil {
|
||||
return []byte{}, nil
|
||||
}
|
||||
|
||||
if buf == nil {
|
||||
buf = make([]byte, r.StableSize())
|
||||
}
|
||||
|
||||
_, err := proto.RepeatedBytesMarshal(getRangeHashRespBodyHashList, buf, r.hashList)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return buf, nil
|
||||
}
|
||||
|
||||
func (r *GetRangeHashResponseBody) StableSize() (size int) {
|
||||
panic("not implemented")
|
||||
if r == nil {
|
||||
return 0
|
||||
}
|
||||
|
||||
size += proto.RepeatedBytesSize(getRangeHashRespBodyHashList, r.hashList)
|
||||
|
||||
return size
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue