FrameHeader frameHeader = new FrameHeader(0, FrameType.Settings, FrameFlags.Ack, 0);
frameHeader.WriteTo(writeBuffer);
- FinishWrite(mustFlush: true);
+ FinishWrite(FlushTiming.AfterPendingWrites);
}
- private async Task SendPingAckAsync(ReadOnlyMemory<byte> pingContent)
+ /// <param name="pingContent">The 8-byte ping content to send, read as a big-endian integer.</param>
+ private async Task SendPingAckAsync(long pingContent)
{
- Debug.Assert(pingContent.Length == FrameHeader.PingLength);
-
Memory<byte> writeBuffer = await StartWriteAsync(FrameHeader.Size + FrameHeader.PingLength).ConfigureAwait(false);
if (NetEventSource.IsEnabled) Trace("Started writing.");
frameHeader.WriteTo(writeBuffer);
writeBuffer = writeBuffer.Slice(FrameHeader.Size);
- pingContent.CopyTo(writeBuffer);
+ Debug.Assert(sizeof(long) == FrameHeader.PingLength);
+ BinaryPrimitives.WriteInt64BigEndian(writeBuffer.Span, pingContent);
- FinishWrite(mustFlush: false);
+ FinishWrite(FlushTiming.AfterPendingWrites);
}
private async Task SendRstStreamAsync(int streamId, Http2ProtocolErrorCode errorCode)