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; } public byte[] SingleObjectPayload { get { return bytes ?? []; } set { bytes = value; } } /// /// 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; } }