| File: System\IO\Pipelines\StreamPipeExtensions.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.Threading; using System.Threading.Tasks; namespace System.IO.Pipelines { /// <summary>Provides extension methods for <see cref="System.IO.Stream" /> that support read and write operations directly into pipes.</summary> public static class StreamPipeExtensions { /// <summary>Asynchronously reads the bytes from the <see cref="System.IO.Stream" /> and writes them to the specified <see cref="System.IO.Pipelines.PipeWriter" />, using a cancellation token.</summary> /// <param name="source">The stream from which the contents of the current stream will be copied.</param> /// <param name="destination">The writer to which the contents of the source stream will be copied.</param> /// <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="System.Threading.CancellationToken.None" />.</param> /// <returns>A task that represents the asynchronous copy operation.</returns> public static Task CopyToAsync(this Stream source, PipeWriter destination, CancellationToken cancellationToken = default) { if (source is null) { ThrowHelper.ThrowArgumentNullException(ExceptionArgument.source); } if (destination is null) { ThrowHelper.ThrowArgumentNullException(ExceptionArgument.destination); } if (cancellationToken.IsCancellationRequested) { return Task.FromCanceled(cancellationToken); } return destination.CopyFromAsync(source, cancellationToken); } } }