54 lines
1.5 KiB
C#
54 lines
1.5 KiB
C#
using System.Collections.ObjectModel;
|
|
using System.Linq;
|
|
using FrostFS.Object;
|
|
using FrostFS.SDK.Client.Mappers.GRPC;
|
|
|
|
namespace FrostFS.SDK;
|
|
|
|
public class FrostFsSplit(SplitId splitId,
|
|
FrostFsObjectId? previous = null,
|
|
FrostFsObjectId? parent = null,
|
|
FrostFsObjectHeader? parentHeader = null,
|
|
FrostFsSignature? parentSignature = null,
|
|
ReadOnlyCollection<FrostFsObjectId>? children = null)
|
|
{
|
|
private Header.Types.Split? _split;
|
|
|
|
public FrostFsSplit() : this(new SplitId())
|
|
{
|
|
}
|
|
|
|
public SplitId SplitId { get; private set; } = splitId;
|
|
|
|
public FrostFsObjectId? Previous { get; } = previous;
|
|
|
|
public FrostFsObjectId? Parent { get; internal set; } = parent;
|
|
|
|
public FrostFsSignature? ParentSignature { get; } = parentSignature;
|
|
|
|
public FrostFsObjectHeader? ParentHeader { get; set; } = parentHeader;
|
|
|
|
public ReadOnlyCollection<FrostFsObjectId>? Children { get; } = children;
|
|
|
|
public Header.Types.Split GetSplit()
|
|
{
|
|
if (_split == null)
|
|
{
|
|
_split = new Header.Types.Split
|
|
{
|
|
SplitId = SplitId?.GetSplitId(),
|
|
Parent = Parent?.ToMessage(),
|
|
ParentHeader = ParentHeader?.GetHeader(),
|
|
ParentSignature = ParentSignature?.ToMessage(),
|
|
Previous = Previous?.ToMessage(),
|
|
};
|
|
|
|
if (Children != null)
|
|
{
|
|
_split.Children.AddRange(Children.Select(x => x.ToMessage()));
|
|
}
|
|
}
|
|
|
|
return _split;
|
|
}
|
|
}
|