using System; using System.Threading; using System.Threading.Tasks; using FrostFS.Object; using FrostFS.Refs; using Google.Protobuf.Collections; using Grpc.Core; namespace FrostFS.SDK.Client; internal sealed class SearchReader(AsyncServerStreamingCall call) : IDisposable { internal AsyncServerStreamingCall Call { get; private set; } = call; internal async Task?> Read(CancellationToken cancellationToken) { if (!await Call.ResponseStream.MoveNext(cancellationToken).ConfigureAwait(false)) return null; var response = Call.ResponseStream.Current; Verifier.CheckResponse(response); return response.Body?.IdList; } public void Dispose() { Call?.Dispose(); } }