using System.IO; namespace FrostFS.SDK.Client; public readonly struct PrmObjectClientCutPut( FrostFsObjectHeader? header, Stream? payload, int bufferMaxSize = 0, FrostFsSessionToken? sessionToken = null, byte[]? customBuffer = null, string[]? xheaders = null, UploadProgressInfo? progress = null) : PrmObjectPutBase, System.IEquatable { /// /// Need to provide values like ContainerId and ObjectType to create and object. /// Optional parameters ike Attributes can be provided as well. /// /// Header with required parameters to create an object public FrostFsObjectHeader? Header { get; } = header; /// /// A stream with source data /// public Stream? Payload { get; } = payload; /// /// Overrides default size of the buffer for stream transferring. /// /// Size of the buffer public int BufferMaxSize { get; } = bufferMaxSize; /// /// Allows to define a buffer for chunks to manage by the memory allocation and releasing. /// public byte[]? CustomBuffer { get; } = customBuffer; /// public FrostFsSessionToken? SessionToken { get; } = sessionToken; /// /// FrostFS request X-Headers /// public string[] XHeaders { get; } = xheaders ?? []; public UploadProgressInfo? Progress { get; } = progress; internal PutObjectContext PutObjectContext { get; } = new(); public override readonly bool Equals(object obj) { if (obj == null || obj is not PrmObjectClientCutPut) return false; return Equals((PrmObjectClientCutPut)obj); } public readonly bool Equals(PrmObjectClientCutPut other) { return GetHashCode() == other.GetHashCode(); } public override readonly int GetHashCode() { return BufferMaxSize ^ (Header == null ? 0 : Header.GetHashCode()) ^ (Payload == null ? 0 : Payload.GetHashCode()) ^ (CustomBuffer == null ? 0 : CustomBuffer.GetHashCode()) ^ (SessionToken == null ? 0 : SessionToken.GetHashCode()) ^ XHeaders.GetHashCode(); } public static bool operator ==(PrmObjectClientCutPut left, PrmObjectClientCutPut right) { return left.Equals(right); } public static bool operator !=(PrmObjectClientCutPut left, PrmObjectClientCutPut right) { return !(left == right); } }