74 lines
2.1 KiB
C#
74 lines
2.1 KiB
C#
using System;
|
|
|
|
namespace FrostFS.SDK;
|
|
|
|
public class FrostFsObject
|
|
{
|
|
private byte[]? bytes;
|
|
|
|
/// <summary>
|
|
/// Creates new instance from <c>ObjectHeader</c>
|
|
/// </summary>
|
|
/// <param name="header"></param> <summary>
|
|
public FrostFsObject(FrostFsObjectHeader header)
|
|
{
|
|
Header = header;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Creates new instance with specified parameters
|
|
/// </summary>
|
|
/// <param name="container"></param>
|
|
/// <param name="objectType"></param>
|
|
public FrostFsObject(FrostFsContainerId container, FrostFsObjectType objectType = FrostFsObjectType.Regular)
|
|
{
|
|
Header = new FrostFsObjectHeader(containerId: container, type: objectType);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Header contains metadata for the object
|
|
/// </summary>
|
|
/// <value></value>
|
|
public FrostFsObjectHeader 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 FrostFsObjectId? ObjectId
|
|
{
|
|
get; set;
|
|
}
|
|
|
|
/// <summary>
|
|
/// A payload is obtained via stream reader
|
|
/// </summary>
|
|
/// <value>Reader for received data</value>
|
|
public IObjectReader? ObjectReader { get; set; }
|
|
|
|
internal byte[] SingleObjectPayload
|
|
{
|
|
get { return bytes ?? []; }
|
|
}
|
|
|
|
/// <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 void SetSingleObjectPayload(byte[] bytes)
|
|
{
|
|
this.bytes = bytes;
|
|
}
|
|
|
|
/// <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(FrostFsObjectHeader largeObjectHeader)
|
|
{
|
|
if (Header?.Split == null)
|
|
throw new ArgumentNullException(nameof(largeObjectHeader), "Split value must not be null");
|
|
|
|
Header.Split.ParentHeader = largeObjectHeader;
|
|
}
|
|
}
|