using System; using System.Threading.Tasks; using Grpc.Core; using FrostFS.Object; namespace FrostFS.SDK.ClientV2; internal class ObjectStreamer(AsyncClientStreamingCall call) : IDisposable { public AsyncClientStreamingCall Call { get; private set; } = call; public async Task Write(PutRequest request) { if (request is null) { throw new ArgumentNullException(nameof(request)); } await Call.RequestStream.WriteAsync(request); } public async Task Close() { await Call.RequestStream.CompleteAsync(); return await Call.ResponseAsync; } public void Dispose() { Call.Dispose(); } }