| File: System\IO\Pipelines\ReadResult.cs | Web Access |
| Project: src\runtime\src\libraries\System.IO.Pipelines\src\System.IO.Pipelines.csproj (System.IO.Pipelines) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System.Buffers; namespace System.IO.Pipelines { /// <summary>Represents the result of a <see cref="System.IO.Pipelines.PipeReader.ReadAsync(System.Threading.CancellationToken)" /> call.</summary> public readonly struct ReadResult { internal readonly ReadOnlySequence<byte> _resultBuffer; internal readonly ResultFlags _resultFlags; /// <summary>Creates a new instance of <see cref="System.IO.Pipelines.ReadResult" /> setting <see cref="System.IO.Pipelines.ReadResult.IsCanceled" /> and <see cref="System.IO.Pipelines.ReadResult.IsCompleted" /> flags.</summary> /// <param name="buffer">The read-only sequence containing the bytes of data that were read in the <see cref="System.IO.Pipelines.PipeReader.ReadAsync(System.Threading.CancellationToken)" /> call.</param> /// <param name="isCanceled">A flag that indicates if the <see cref="System.IO.Pipelines.PipeReader.ReadAsync(System.Threading.CancellationToken)" /> operation that produced this <see cref="System.IO.Pipelines.ReadResult" /> was canceled by <see cref="System.IO.Pipelines.PipeReader.CancelPendingRead" />.</param> /// <param name="isCompleted">A flag that indicates whether the end of the data stream has been reached.</param> public ReadResult(ReadOnlySequence<byte> buffer, bool isCanceled, bool isCompleted) { _resultBuffer = buffer; _resultFlags = ResultFlags.None; if (isCompleted) { _resultFlags |= ResultFlags.Completed; } if (isCanceled) { _resultFlags |= ResultFlags.Canceled; } } /// <summary>Gets the <see cref="System.Buffers.ReadOnlySequence{T}" /> that was read.</summary> /// <value>A read-only sequence containing the bytes of data that were read in the <see cref="System.IO.Pipelines.PipeReader.ReadAsync(System.Threading.CancellationToken)" /> call.</value> public ReadOnlySequence<byte> Buffer => _resultBuffer; /// <summary>Gets a value that indicates whether the current <see cref="System.IO.Pipelines.PipeReader.ReadAsync(System.Threading.CancellationToken)" /> operation was canceled by <see cref="System.IO.Pipelines.PipeReader.CancelPendingRead" />.</summary> /// <value><see langword="true" /> if the <see cref="System.IO.Pipelines.PipeReader.ReadAsync(System.Threading.CancellationToken)" /> operation that produced this <see cref="System.IO.Pipelines.ReadResult" /> was canceled by <see cref="System.IO.Pipelines.PipeReader.CancelPendingRead" />; otherwise, <see langword="false" />.</value> public bool IsCanceled => (_resultFlags & ResultFlags.Canceled) != 0; /// <summary>Gets a value that indicates whether the end of the data stream has been reached.</summary> /// <value><see langword="true" /> if the end of the data stream has been reached; otherwise, <see langword="false" />.</value> public bool IsCompleted => (_resultFlags & ResultFlags.Completed) != 0; } }