forked from TrueCloudLab/frostfs-api-go
[#229] v2/object: Add hash fields to ShortHeader message
Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
This commit is contained in:
parent
b2528d4c59
commit
8fe135ab8c
5 changed files with 81 additions and 1 deletions
|
@ -48,6 +48,14 @@ func ShortHeaderToGRPCMessage(h *ShortHeader) *object.ShortHeader {
|
||||||
|
|
||||||
m.SetPayloadLength(h.GetPayloadLength())
|
m.SetPayloadLength(h.GetPayloadLength())
|
||||||
|
|
||||||
|
m.SetPayloadHash(
|
||||||
|
refs.ChecksumToGRPCMessage(h.GetPayloadHash()),
|
||||||
|
)
|
||||||
|
|
||||||
|
m.SetHomomorphicHash(
|
||||||
|
refs.ChecksumToGRPCMessage(h.GetHomomorphicHash()),
|
||||||
|
)
|
||||||
|
|
||||||
return m
|
return m
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -74,6 +82,14 @@ func ShortHeaderFromGRPCMessage(m *object.ShortHeader) *ShortHeader {
|
||||||
|
|
||||||
h.SetPayloadLength(m.GetPayloadLength())
|
h.SetPayloadLength(m.GetPayloadLength())
|
||||||
|
|
||||||
|
h.SetPayloadHash(
|
||||||
|
refs.ChecksumFromGRPCMessage(m.GetPayloadHash()),
|
||||||
|
)
|
||||||
|
|
||||||
|
h.SetHomomorphicHash(
|
||||||
|
refs.ChecksumFromGRPCMessage(m.GetHomomorphicHash()),
|
||||||
|
)
|
||||||
|
|
||||||
return h
|
return h
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -201,6 +201,20 @@ func (m *ShortHeader) SetPayloadLength(v uint64) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SetPayloadHash sets hash of the object payload.
|
||||||
|
func (m *ShortHeader) SetPayloadHash(v *refs.Checksum) {
|
||||||
|
if m != nil {
|
||||||
|
m.PayloadHash = v
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetHomomorphicHash sets homomorphic hash of the object payload.
|
||||||
|
func (m *ShortHeader) SetHomomorphicHash(v *refs.Checksum) {
|
||||||
|
if m != nil {
|
||||||
|
m.HomomorphicHash = v
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// SetSplitId sets id of split hierarchy.
|
// SetSplitId sets id of split hierarchy.
|
||||||
func (m *SplitInfo) SetSplitId(v []byte) {
|
func (m *SplitInfo) SetSplitId(v []byte) {
|
||||||
if m != nil {
|
if m != nil {
|
||||||
|
|
|
@ -12,6 +12,8 @@ const (
|
||||||
shortHdrOwnerField = 3
|
shortHdrOwnerField = 3
|
||||||
shortHdrObjectTypeField = 4
|
shortHdrObjectTypeField = 4
|
||||||
shortHdrPayloadLength = 5
|
shortHdrPayloadLength = 5
|
||||||
|
shortHdrHashField = 6
|
||||||
|
shortHdrHomoHashField = 7
|
||||||
|
|
||||||
attributeKeyField = 1
|
attributeKeyField = 1
|
||||||
attributeValueField = 2
|
attributeValueField = 2
|
||||||
|
@ -151,7 +153,21 @@ func (h *ShortHeader) StableMarshal(buf []byte) ([]byte, error) {
|
||||||
|
|
||||||
offset += n
|
offset += n
|
||||||
|
|
||||||
_, err = proto.UInt64Marshal(shortHdrPayloadLength, buf[offset:], h.payloadLen)
|
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)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -169,6 +185,8 @@ func (h *ShortHeader) StableSize() (size int) {
|
||||||
size += proto.NestedStructureSize(shortHdrOwnerField, h.ownerID)
|
size += proto.NestedStructureSize(shortHdrOwnerField, h.ownerID)
|
||||||
size += proto.EnumSize(shortHdrObjectTypeField, int32(h.typ))
|
size += proto.EnumSize(shortHdrObjectTypeField, int32(h.typ))
|
||||||
size += proto.UInt64Size(shortHdrPayloadLength, h.payloadLen)
|
size += proto.UInt64Size(shortHdrPayloadLength, h.payloadLen)
|
||||||
|
size += proto.NestedStructureSize(shortHdrHashField, h.payloadHash)
|
||||||
|
size += proto.NestedStructureSize(shortHdrHomoHashField, h.homoHash)
|
||||||
|
|
||||||
return size
|
return size
|
||||||
}
|
}
|
||||||
|
|
|
@ -476,6 +476,8 @@ func generateShortHeader(id string) *object.ShortHeader {
|
||||||
hdr.SetCreationEpoch(200)
|
hdr.SetCreationEpoch(200)
|
||||||
hdr.SetObjectType(object.TypeRegular)
|
hdr.SetObjectType(object.TypeRegular)
|
||||||
hdr.SetPayloadLength(10)
|
hdr.SetPayloadLength(10)
|
||||||
|
hdr.SetPayloadHash(generateChecksum("payload hash"))
|
||||||
|
hdr.SetHomomorphicHash(generateChecksum("homomorphic hash"))
|
||||||
|
|
||||||
return hdr
|
return hdr
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,6 +19,8 @@ type ShortHeader struct {
|
||||||
typ Type
|
typ Type
|
||||||
|
|
||||||
payloadLen uint64
|
payloadLen uint64
|
||||||
|
|
||||||
|
payloadHash, homoHash *refs.Checksum
|
||||||
}
|
}
|
||||||
|
|
||||||
type Attribute struct {
|
type Attribute struct {
|
||||||
|
@ -296,6 +298,34 @@ func (h *ShortHeader) SetPayloadLength(v uint64) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (h *ShortHeader) GetPayloadHash() *refs.Checksum {
|
||||||
|
if h != nil {
|
||||||
|
return h.payloadHash
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (h *ShortHeader) SetPayloadHash(v *refs.Checksum) {
|
||||||
|
if h != nil {
|
||||||
|
h.payloadHash = v
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (h *ShortHeader) GetHomomorphicHash() *refs.Checksum {
|
||||||
|
if h != nil {
|
||||||
|
return h.homoHash
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (h *ShortHeader) SetHomomorphicHash(v *refs.Checksum) {
|
||||||
|
if h != nil {
|
||||||
|
h.homoHash = v
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func (h *ShortHeader) getHeaderPart() {}
|
func (h *ShortHeader) getHeaderPart() {}
|
||||||
|
|
||||||
func (a *Attribute) GetKey() string {
|
func (a *Attribute) GetKey() string {
|
||||||
|
|
Loading…
Reference in a new issue