forked from TrueCloudLab/frostfs-sdk-go
[#223] object: Introduce new fields for ECHeader
* Introduce `parentSplitID`, `parentSplitParentID` fields for `ECHeader`; * Fix ECHeader's constructor; * Fix `Split` and `Reconstruct`; * Add unit-tests. Signed-off-by: Airat Arifullin <a.arifullin@yadro.com>
This commit is contained in:
parent
09b79d13f3
commit
3de256d05e
4 changed files with 152 additions and 13 deletions
|
@ -10,21 +10,25 @@ import (
|
|||
|
||||
// ECHeader represents erasure coding header.
|
||||
type ECHeader struct {
|
||||
parent oid.ID
|
||||
index uint32
|
||||
total uint32
|
||||
header []byte
|
||||
headerLength uint32
|
||||
parent oid.ID
|
||||
parentSplitID *SplitID
|
||||
parentSplitParentID *oid.ID
|
||||
index uint32
|
||||
total uint32
|
||||
header []byte
|
||||
headerLength uint32
|
||||
}
|
||||
|
||||
// NewECHeader constructs new erasure coding header.
|
||||
func NewECHeader(parent oid.ID, index, total uint32, header []byte, headerLength uint32) *ECHeader {
|
||||
func NewECHeader(parent oid.ID, parentSplitID *SplitID, parentSplitParentID *oid.ID, index, total uint32, header []byte, headerLength uint32) *ECHeader {
|
||||
return &ECHeader{
|
||||
parent: parent,
|
||||
index: index,
|
||||
total: total,
|
||||
header: header,
|
||||
headerLength: headerLength,
|
||||
parent: parent,
|
||||
parentSplitID: parentSplitID,
|
||||
parentSplitParentID: parentSplitParentID,
|
||||
index: index,
|
||||
total: total,
|
||||
header: header,
|
||||
headerLength: headerLength,
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -32,6 +36,14 @@ func NewECHeader(parent oid.ID, index, total uint32, header []byte, headerLength
|
|||
func (e *ECHeader) WriteToV2(h *object.ECHeader) {
|
||||
var parent refs.ObjectID
|
||||
e.parent.WriteToV2(&parent)
|
||||
h.ParentSplitID = e.parentSplitID.ToV2()
|
||||
|
||||
if e.parentSplitParentID != nil {
|
||||
parentSplitParentID := new(refs.ObjectID)
|
||||
e.parentSplitParentID.WriteToV2(parentSplitParentID)
|
||||
h.ParentSplitParentID = parentSplitParentID
|
||||
}
|
||||
|
||||
h.Parent = &parent
|
||||
h.Index = e.index
|
||||
h.Total = e.total
|
||||
|
@ -49,6 +61,13 @@ func (e *ECHeader) ReadFromV2(h *object.ECHeader) error {
|
|||
}
|
||||
|
||||
_ = e.parent.ReadFromV2(*h.Parent)
|
||||
e.parentSplitID = NewSplitIDFromV2(h.ParentSplitID)
|
||||
if h.ParentSplitParentID != nil {
|
||||
if e.parentSplitParentID == nil {
|
||||
e.parentSplitParentID = new(oid.ID)
|
||||
}
|
||||
_ = e.parentSplitParentID.ReadFromV2(*h.ParentSplitParentID)
|
||||
}
|
||||
e.index = h.Index
|
||||
e.total = h.Total
|
||||
e.header = h.Header
|
||||
|
@ -88,6 +107,22 @@ func (e *ECHeader) SetParent(id oid.ID) {
|
|||
e.parent = id
|
||||
}
|
||||
|
||||
func (e *ECHeader) ParentSplitID() *SplitID {
|
||||
return e.parentSplitID
|
||||
}
|
||||
|
||||
func (e *ECHeader) SetParentSplitID(parentSplitID *SplitID) {
|
||||
e.parentSplitID = parentSplitID
|
||||
}
|
||||
|
||||
func (e *ECHeader) ParentSplitParentID() *oid.ID {
|
||||
return e.parentSplitParentID
|
||||
}
|
||||
|
||||
func (e *ECHeader) SetParentSplitParentID(parentSplitParentID *oid.ID) {
|
||||
e.parentSplitParentID = parentSplitParentID
|
||||
}
|
||||
|
||||
func (e *ECHeader) Index() uint32 {
|
||||
return e.index
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue