Some checks failed
DCO / DCO (pull_request) Failing after 26s
Signed-off-by: Pavel Gross <p.gross@yando.com>
84 lines
No EOL
2.4 KiB
C#
84 lines
No EOL
2.4 KiB
C#
using System;
|
|
using FrostFS.SDK.ModelsV2.Enums;
|
|
|
|
namespace FrostFS.SDK.ModelsV2;
|
|
|
|
public class FrostFsObject
|
|
{
|
|
/// <summary>
|
|
/// Creates new instance from <c>ObjectHeader</c>
|
|
/// </summary>
|
|
/// <param name="header"></param> <summary>
|
|
public FrostFsObject(ObjectHeader header)
|
|
{
|
|
Header = header;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Creates new instance with specified parameters
|
|
/// </summary>
|
|
/// <param name="container"></param>
|
|
/// <param name="objectType"></param>
|
|
public FrostFsObject(ContainerId container, ObjectType objectType = ObjectType.Regular)
|
|
{
|
|
Header = new ObjectHeader(containerId: container, type: objectType);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Header contains metadata for the object
|
|
/// </summary>
|
|
/// <value></value>
|
|
public ObjectHeader Header { get; set; }
|
|
|
|
/// <summary>
|
|
/// The value is calculated internally as a hash of ObjectHeader. Do not use pre-calculated value is the object has been changed.
|
|
/// </summary>
|
|
public ObjectId? ObjectId
|
|
{
|
|
get; set;
|
|
}
|
|
|
|
/// <summary>
|
|
/// The size of payload cannot exceed <c>MaxObjectSize</c> value from <c>NetworkSettings</c>
|
|
/// Used only for PutSingleObject method
|
|
/// </summary>
|
|
/// <value>Buffer for output data</value>
|
|
public byte[] Payload { get; set; } = [];
|
|
|
|
/// <summary>
|
|
/// A payload is obtained via stream reader
|
|
/// </summary>
|
|
/// <value>Reader for received data</value>
|
|
public IObjectReader? ObjectReader { get; set; }
|
|
|
|
/// <summary>
|
|
/// Applied only for the last Object in chain in case of manual multipart uploading
|
|
/// </summary>
|
|
/// <param name="largeObject">Parent for multipart object</param>
|
|
public void SetParent(ObjectHeader largeObjectHeader)
|
|
{
|
|
if (Header?.Split == null)
|
|
throw new Exception("The object is not initialized properly");
|
|
|
|
Header.Split.ParentHeader = largeObjectHeader;
|
|
}
|
|
}
|
|
|
|
public class LargeObject(ContainerId container) : FrostFsObject(container)
|
|
{
|
|
public ulong PayloadLength
|
|
{
|
|
get { return Header!.PayloadLength; }
|
|
}
|
|
}
|
|
|
|
public class LinkObject : FrostFsObject
|
|
{
|
|
public LinkObject(ContainerId containerId, SplitId splitId, ObjectHeader largeObjectHeader) : base (containerId)
|
|
{
|
|
Header!.Split = new Split(splitId)
|
|
{
|
|
ParentHeader = largeObjectHeader
|
|
};
|
|
}
|
|
} |