System.Net.Sockets.NetworkStream.CopyToAsyncCore C# (CSharp) Method

CopyToAsyncCore() private static method

private static CopyToAsyncCore ( Stream destination, AwaitableSocketAsyncEventArgs ea, CancellationToken cancellationToken ) : System.Threading.Task
destination System.IO.Stream
ea AwaitableSocketAsyncEventArgs
cancellationToken System.Threading.CancellationToken
return System.Threading.Task
        private static async Task CopyToAsyncCore(Stream destination, AwaitableSocketAsyncEventArgs ea, CancellationToken cancellationToken)
        {
            try
            {
                while (true)
                {
                    cancellationToken.ThrowIfCancellationRequested();

                    int bytesRead = await ea.ReceiveAsync();
                    if (bytesRead == 0)
                    {
                        break;
                    }

                    await destination.WriteAsync(ea.Buffer, 0, bytesRead, cancellationToken).ConfigureAwait(false);
                }
            }
            finally
            {
                ArrayPool<byte>.Shared.Return(ea.Buffer, clearArray: true);
                ea.Dispose();
            }
        }