| File: CacheEntry\CachedResponseBody.cs | Web Access |
| Project: src\aspnetcore\src\Middleware\ResponseCaching\src\Microsoft.AspNetCore.ResponseCaching.csproj (Microsoft.AspNetCore.ResponseCaching) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System.IO.Pipelines; namespace Microsoft.AspNetCore.ResponseCaching; internal sealed class CachedResponseBody { public CachedResponseBody(List<byte[]> segments, long length) { Segments = segments; Length = length; } public List<byte[]> Segments { get; } public long Length { get; } public async Task CopyToAsync(PipeWriter destination, CancellationToken cancellationToken) { ArgumentNullException.ThrowIfNull(destination); foreach (var segment in Segments) { cancellationToken.ThrowIfCancellationRequested(); Copy(segment, destination); await destination.FlushAsync(cancellationToken); } } private static void Copy(byte[] segment, PipeWriter destination) { var span = destination.GetSpan(segment.Length); segment.CopyTo(span); destination.Advance(segment.Length); } }