Restore backwards compatibility in StableMarshal() #61

Merged
fyrchik merged 1 commit from fyrchik/frostfs-api-go:fix-marshaling into master 2024-09-04 19:51:16 +00:00

View file

@ -15,7 +15,7 @@ import (
) )
type ( type (
stableMarshaller interface { stableMarshaler interface {
StableMarshal([]byte) []byte StableMarshal([]byte) []byte
StableSize() int StableSize() int
} }
@ -256,7 +256,7 @@ func VarUIntSize(x uint64) int {
} }
type ptrStableMarshaler[T any] interface { type ptrStableMarshaler[T any] interface {
stableMarshaller stableMarshaler
~*T ~*T
} }
@ -268,7 +268,7 @@ func NestedStructureMarshal[T any, M ptrStableMarshaler[T]](field int64, buf []b
return NestedStructureMarshalUnchecked(field, buf, v) return NestedStructureMarshalUnchecked(field, buf, v)
} }
func NestedStructureMarshalUnchecked[T stableMarshaller](field int64, buf []byte, v T) int { func NestedStructureMarshalUnchecked[T stableMarshaler](field int64, buf []byte, v T) int {
n := v.StableSize() n := v.StableSize()
prefix := protowire.EncodeTag(protowire.Number(field), protowire.BytesType) prefix := protowire.EncodeTag(protowire.Number(field), protowire.BytesType)
offset := binary.PutUvarint(buf, prefix) offset := binary.PutUvarint(buf, prefix)
@ -306,7 +306,7 @@ func NestedStructureSize[T any, M ptrStableMarshaler[T]](field int64, v M) (size
return NestedStructureSizeUnchecked(field, v) return NestedStructureSizeUnchecked(field, v)
} }
func NestedStructureSizeUnchecked[T stableMarshaller](field int64, v T) int { func NestedStructureSizeUnchecked[T stableMarshaler](field int64, v T) int {
n := v.StableSize() n := v.StableSize()
return protowire.SizeGroup(protowire.Number(field), protowire.SizeBytes(n)) return protowire.SizeGroup(protowire.Number(field), protowire.SizeBytes(n))
} }