internal async Task SendGoAwayAsync(long streamId, bool endStream = false) { var data = new byte[VariableLengthIntegerHelper.GetByteCount(streamId)]; VariableLengthIntegerHelper.WriteInteger(data, streamId); await SendFrameAsync(Http3FrameType.GoAway, data, endStream); }
internal static void WriteSettings(List <Http3PeerSetting> settings, Span <byte> destination) { foreach (var setting in settings) { var parameterLength = VariableLengthIntegerHelper.WriteInteger(destination, (long)setting.Parameter); destination = destination.Slice(parameterLength); var valueLength = VariableLengthIntegerHelper.WriteInteger(destination, (long)setting.Value); destination = destination.Slice(valueLength); } }
public void CheckEncoding(long input, byte[] expected) { var outputBuffer = new Span <byte>(new byte[8]); var encodedLength = VariableLengthIntegerHelper.WriteInteger(outputBuffer, input); Assert.Equal(expected.Length, encodedLength); for (var i = 0; i < expected.Length; i++) { Assert.Equal(expected[i], outputBuffer[i]); } }
public async Task WriteStreamIdAsync(int id) { var writableBuffer = Pair.Application.Output; void WriteSpan(PipeWriter pw) { var buffer = pw.GetSpan(sizeHint: 8); var lengthWritten = VariableLengthIntegerHelper.WriteInteger(buffer, id); pw.Advance(lengthWritten); } WriteSpan(writableBuffer); await FlushAsync(writableBuffer); }