Skip to content

Commit 14a288b

Browse files
committed
no advance
1 parent 622d704 commit 14a288b

File tree

1 file changed

+13
-2
lines changed

1 file changed

+13
-2
lines changed

src/Benchmarks/Middleware/MiddlewareHelpers.cs

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
using System.Buffers;
66
using System.Collections.Generic;
77
using System.Globalization;
8-
using System.IO.Pipelines;
98
using System.Text;
109
using System.Text.Encodings.Web;
1110
using System.Threading.Tasks;
@@ -57,6 +56,8 @@ public static async Task RenderFortunesHtml(IEnumerable<Fortune> model, HttpCont
5756

5857
Encoding.UTF8.GetBytes("</table></body></html>", writer);
5958

59+
writer.Commit();
60+
6061
await httpContext.Response.BodyWriter.FlushAsync();
6162

6263
static void EncodeToPipe(BufferWriter<byte> writer, HtmlEncoder htmlEncoder, string item)
@@ -77,6 +78,7 @@ internal class BufferWriter<T> : IBufferWriter<T>
7778
{
7879
private readonly IBufferWriter<T> _inner;
7980
private Memory<T> _memory;
81+
private int _buffered;
8082

8183
public BufferWriter(IBufferWriter<T> writer)
8284
{
@@ -86,13 +88,22 @@ public BufferWriter(IBufferWriter<T> writer)
8688
public void Advance(int count)
8789
{
8890
_memory = _memory.Slice(count);
89-
_inner.Advance(count);
91+
_buffered += count;
92+
}
93+
94+
public void Commit()
95+
{
96+
_inner.Advance(_buffered);
97+
_buffered = 0;
98+
_memory = default;
9099
}
91100

92101
public Memory<T> GetMemory(int sizeHint = 0)
93102
{
94103
if (_memory.Length == 0 || _memory.Length < sizeHint)
95104
{
105+
_inner.Advance(_buffered);
106+
_buffered = 0;
96107
_memory = _inner.GetMemory(sizeHint);
97108
}
98109
return _memory;

0 commit comments

Comments
 (0)