@@ -72,22 +72,21 @@ private ValueTask WriteFrameAsync(IBufferWriter<byte> writer, ulong streamId, in
7272 : ValueTask . CompletedTask ;
7373 }
7474
75- private ( int , SequencePosition ) WriteFrame ( Span < byte > output , ulong streamId , in ReadResult readResult , out bool completed )
75+ private bool WriteFrame ( Span < byte > output , ulong streamId , in ReadResult readResult , out int bytesWritten , out SequencePosition consumed )
7676 {
7777 Debug . Assert ( output . Length > FrameHeader . Size ) ;
7878
7979 var inputBuffer = readResult . Buffer ;
80- int bytesWritten ;
81- SequencePosition position ;
80+ bool completed ;
8281 if ( output . Slice ( FrameHeader . Size ) . TrimLength ( inputWindow ) is { Length : > 0 } payload )
8382 {
8483 // we cannot send more than window size
85- bytesWritten = inputBuffer . CopyTo ( payload , out position ) ;
84+ bytesWritten = inputBuffer . CopyTo ( payload , out consumed ) ;
8685
8786 Debug . Assert ( bytesWritten <= MaxFrameSize ) ;
8887
8988 FrameControl control ;
90- if ( ! position . Equals ( inputBuffer . End ) )
89+ if ( ! consumed . Equals ( inputBuffer . End ) )
9190 {
9291 control = FrameControl . DataChunk ;
9392 completed = false ;
@@ -112,19 +111,25 @@ private ValueTask WriteFrameAsync(IBufferWriter<byte> writer, ulong streamId, in
112111 // input window is empty, nothing we can read
113112 completed = false ;
114113 bytesWritten = 0 ;
115- position = inputBuffer . Start ;
114+ consumed = inputBuffer . Start ;
116115 }
117116
118- return ( bytesWritten , position ) ;
117+ return completed ;
119118 }
120119
121120 private bool WriteFrame ( IBufferWriter < byte > writer , ulong streamId , in ReadResult result )
122121 {
123122 var buffer = writer . GetSpan ( frameAndHeaderSize ) ;
124- var ( bytesWritten , position ) = WriteFrame ( buffer . Slice ( 0 , frameAndHeaderSize ) , streamId , result , out var completed ) ;
125- writer . Advance ( bytesWritten ) ;
126- transportReader . AdvanceTo ( position ) ;
123+ var completed = WriteFrame (
124+ buffer . Slice ( 0 , frameAndHeaderSize ) ,
125+ streamId ,
126+ result ,
127+ out var bytesWritten ,
128+ out var consumed ) ;
127129
130+ writer . Advance ( bytesWritten ) ;
131+ transportReader . AdvanceTo ( consumed ) ;
132+
128133 return completed ;
129134 }
130135
0 commit comments