2020-08-17 10:41:09 +00:00
|
|
|
package refs
|
|
|
|
|
|
|
|
import (
|
2022-04-05 08:33:36 +00:00
|
|
|
"encoding/binary"
|
|
|
|
|
2023-03-07 10:38:56 +00:00
|
|
|
refs "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/refs/grpc"
|
|
|
|
"git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/rpc/message"
|
|
|
|
"git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/util/proto"
|
2020-08-17 10:41:09 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
const (
|
2020-08-18 07:42:47 +00:00
|
|
|
ownerIDValField = 1
|
2020-08-17 10:41:09 +00:00
|
|
|
|
2020-08-18 07:42:47 +00:00
|
|
|
containerIDValField = 1
|
2020-08-17 10:41:09 +00:00
|
|
|
|
2020-08-18 07:42:47 +00:00
|
|
|
objectIDValField = 1
|
2020-08-17 10:41:09 +00:00
|
|
|
|
2020-08-18 07:42:47 +00:00
|
|
|
addressContainerField = 1
|
|
|
|
addressObjectField = 2
|
2020-08-20 07:59:45 +00:00
|
|
|
|
|
|
|
checksumTypeField = 1
|
|
|
|
checksumValueField = 2
|
2020-08-20 09:43:47 +00:00
|
|
|
|
2022-02-22 11:25:43 +00:00
|
|
|
signatureKeyField = 1
|
|
|
|
signatureValueField = 2
|
|
|
|
signatureSchemeField = 3
|
2020-08-20 09:43:47 +00:00
|
|
|
|
|
|
|
versionMajorField = 1
|
|
|
|
versionMinorField = 2
|
2020-08-17 10:41:09 +00:00
|
|
|
)
|
|
|
|
|
2022-04-05 08:24:34 +00:00
|
|
|
func (o *OwnerID) StableMarshal(buf []byte) []byte {
|
2023-06-12 22:33:53 +00:00
|
|
|
return message.StableMarshal[*refs.OwnerID](o, buf)
|
2020-08-17 10:41:09 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
func (o *OwnerID) StableSize() int {
|
2023-06-12 22:33:53 +00:00
|
|
|
return message.StableSize[*refs.OwnerID](o)
|
2020-08-17 10:41:09 +00:00
|
|
|
}
|
|
|
|
|
2020-11-13 13:14:00 +00:00
|
|
|
func (o *OwnerID) Unmarshal(data []byte) error {
|
2021-03-12 12:57:23 +00:00
|
|
|
return message.Unmarshal(o, data, new(refs.OwnerID))
|
2020-11-13 13:14:00 +00:00
|
|
|
}
|
|
|
|
|
2022-04-05 08:24:34 +00:00
|
|
|
func (c *ContainerID) StableMarshal(buf []byte) []byte {
|
2023-06-12 22:33:53 +00:00
|
|
|
return message.StableMarshal[*refs.ContainerID](c, buf)
|
2020-08-17 10:41:09 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
func (c *ContainerID) StableSize() int {
|
2023-06-12 22:33:53 +00:00
|
|
|
return message.StableSize[*refs.ContainerID](c)
|
2020-08-17 10:41:09 +00:00
|
|
|
}
|
|
|
|
|
2020-11-13 13:07:32 +00:00
|
|
|
func (c *ContainerID) Unmarshal(data []byte) error {
|
2021-03-12 12:57:23 +00:00
|
|
|
return message.Unmarshal(c, data, new(refs.ContainerID))
|
2020-11-13 13:07:32 +00:00
|
|
|
}
|
|
|
|
|
2022-04-05 08:24:34 +00:00
|
|
|
func (o *ObjectID) StableMarshal(buf []byte) []byte {
|
2023-06-12 22:33:53 +00:00
|
|
|
return message.StableMarshal[*refs.ObjectID](o, buf)
|
2020-08-17 10:41:09 +00:00
|
|
|
}
|
|
|
|
|
2020-12-21 07:51:45 +00:00
|
|
|
// ObjectIDNestedListSize returns byte length of nested
|
|
|
|
// repeated ObjectID field with fNum number.
|
2022-03-01 12:50:09 +00:00
|
|
|
func ObjectIDNestedListSize(fNum int64, ids []ObjectID) (sz int) {
|
2023-06-12 22:33:53 +00:00
|
|
|
// TODO (aarifullin): remove this method when all marshalers are refactored
|
2020-12-21 07:51:45 +00:00
|
|
|
for i := range ids {
|
2022-03-01 12:50:09 +00:00
|
|
|
sz += proto.NestedStructureSize(fNum, &ids[i])
|
2020-12-21 07:51:45 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
2020-08-17 10:41:09 +00:00
|
|
|
func (o *ObjectID) StableSize() int {
|
2023-06-12 22:33:53 +00:00
|
|
|
return message.StableSize[*refs.ObjectID](o)
|
2020-08-17 10:41:09 +00:00
|
|
|
}
|
|
|
|
|
2020-12-21 07:51:45 +00:00
|
|
|
// ObjectIDNestedListMarshal writes protobuf repeated ObjectID field
|
|
|
|
// with fNum number to buf.
|
2022-04-05 08:24:34 +00:00
|
|
|
func ObjectIDNestedListMarshal(fNum int64, buf []byte, ids []ObjectID) (off int) {
|
2023-06-12 22:33:53 +00:00
|
|
|
// TODO (aarifullin): remove this method when all marshalers are refactored
|
2022-04-05 08:33:36 +00:00
|
|
|
prefix, _ := proto.NestedStructurePrefix(fNum)
|
2020-12-21 07:51:45 +00:00
|
|
|
for i := range ids {
|
2022-04-25 18:24:19 +00:00
|
|
|
off += binary.PutUvarint(buf[off:], prefix)
|
2022-04-05 08:33:36 +00:00
|
|
|
|
|
|
|
n := ids[i].StableSize()
|
|
|
|
off += binary.PutUvarint(buf[off:], uint64(n))
|
2022-04-25 18:24:19 +00:00
|
|
|
off += proto.BytesMarshal(objectIDValField, buf[off:], ids[i].val)
|
2020-12-21 07:51:45 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
2020-11-13 13:04:09 +00:00
|
|
|
func (o *ObjectID) Unmarshal(data []byte) error {
|
2021-03-12 12:57:23 +00:00
|
|
|
return message.Unmarshal(o, data, new(refs.ObjectID))
|
2020-11-13 13:04:09 +00:00
|
|
|
}
|
|
|
|
|
2022-04-05 08:24:34 +00:00
|
|
|
func (a *Address) StableMarshal(buf []byte) []byte {
|
2023-06-12 22:33:53 +00:00
|
|
|
return message.StableMarshal[*refs.Address](a, buf)
|
2020-08-17 10:41:09 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
func (a *Address) StableSize() (size int) {
|
2023-06-12 22:33:53 +00:00
|
|
|
return message.StableSize[*refs.Address](a)
|
2020-08-17 10:41:09 +00:00
|
|
|
}
|
2020-08-20 07:59:45 +00:00
|
|
|
|
2020-11-13 12:58:53 +00:00
|
|
|
func (a *Address) Unmarshal(data []byte) error {
|
2021-03-12 12:57:23 +00:00
|
|
|
return message.Unmarshal(a, data, new(refs.Address))
|
2020-09-02 11:40:20 +00:00
|
|
|
}
|
|
|
|
|
2022-04-05 08:24:34 +00:00
|
|
|
func (c *Checksum) StableMarshal(buf []byte) []byte {
|
2023-06-12 22:33:53 +00:00
|
|
|
return message.StableMarshal[*refs.Checksum](c, buf)
|
2020-08-20 07:59:45 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
func (c *Checksum) StableSize() (size int) {
|
2023-06-12 22:33:53 +00:00
|
|
|
return message.StableSize[*refs.Checksum](c)
|
2020-08-20 07:59:45 +00:00
|
|
|
}
|
2020-08-20 09:43:47 +00:00
|
|
|
|
2020-11-13 13:30:35 +00:00
|
|
|
func (c *Checksum) Unmarshal(data []byte) error {
|
2021-03-12 12:57:23 +00:00
|
|
|
return message.Unmarshal(c, data, new(refs.Checksum))
|
2020-11-13 13:30:35 +00:00
|
|
|
}
|
|
|
|
|
2022-04-05 08:24:34 +00:00
|
|
|
func (s *Signature) StableMarshal(buf []byte) []byte {
|
2023-06-12 22:33:53 +00:00
|
|
|
return message.StableMarshal[*refs.Signature](s, buf)
|
2020-08-20 09:43:47 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
func (s *Signature) StableSize() (size int) {
|
2023-06-12 22:33:53 +00:00
|
|
|
return message.StableSize[*refs.Signature](s)
|
2020-08-20 09:43:47 +00:00
|
|
|
}
|
|
|
|
|
2020-11-13 13:23:41 +00:00
|
|
|
func (s *Signature) Unmarshal(data []byte) error {
|
2021-03-12 12:57:23 +00:00
|
|
|
return message.Unmarshal(s, data, new(refs.Signature))
|
2020-11-13 13:23:41 +00:00
|
|
|
}
|
|
|
|
|
2022-04-05 08:24:34 +00:00
|
|
|
func (v *Version) StableMarshal(buf []byte) []byte {
|
2023-06-12 22:33:53 +00:00
|
|
|
return message.StableMarshal[*refs.Version](v, buf)
|
2020-08-20 09:43:47 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
func (v *Version) StableSize() (size int) {
|
2023-06-12 22:33:53 +00:00
|
|
|
return message.StableSize[*refs.Version](v)
|
2020-08-20 09:43:47 +00:00
|
|
|
}
|
2020-11-13 13:19:16 +00:00
|
|
|
|
|
|
|
func (v *Version) Unmarshal(data []byte) error {
|
2021-03-12 12:57:23 +00:00
|
|
|
return message.Unmarshal(v, data, new(refs.Version))
|
2020-11-13 13:19:16 +00:00
|
|
|
}
|