using System;
namespace FrostFS.SDK;
public class FrostFsObject
{
private byte[]? bytes;
///
/// Creates new instance from ObjectHeader
///
///
public FrostFsObject(FrostFsObjectHeader header)
{
Header = header;
}
///
/// Creates new instance with specified parameters
///
///
///
public FrostFsObject(FrostFsContainerId container, FrostFsObjectType objectType = FrostFsObjectType.Regular)
{
Header = new FrostFsObjectHeader(containerId: container, type: objectType);
}
///
/// Header contains metadata for the object
///
///
public FrostFsObjectHeader Header { get; set; }
///
/// The value is calculated internally as a hash of ObjectHeader. Do not use pre-calculated value is the object has been changed.
///
public FrostFsObjectId? ObjectId
{
get; set;
}
///
/// A payload is obtained via stream reader
///
/// Reader for received data
public IObjectReader? ObjectReader { get; set; }
internal byte[] SingleObjectPayload
{
get { return bytes ?? []; }
}
///
/// The size of payload cannot exceed MaxObjectSize value from NetworkSettings
/// Used only for PutSingleObject method
///
/// Buffer for output data
public void SetSingleObjectPayload(byte[] bytes)
{
this.bytes = bytes;
}
///
/// Applied only for the last Object in chain in case of manual multipart uploading
///
/// Parent for multipart object
public void SetParent(FrostFsObjectHeader largeObjectHeader)
{
if (Header?.Split == null)
throw new ArgumentNullException(nameof(largeObjectHeader), "Split value must not be null");
Header.Split.ParentHeader = largeObjectHeader;
}
}