Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ ReadFrameEnvelopeAsync()

async ValueTask<(Http3FrameType? frameType, long payloadLength)> System.Net.Http.Http3RequestStream.ReadFrameEnvelopeAsync ( CancellationToken cancellationToken)
inlineprivate

Definition at line 719 of file Http3RequestStream.cs.

720 {
721 while (true)
722 {
723 if (!Http3Frame.TryReadIntegerPair(_recvBuffer.ActiveSpan, out var a, out var b, out var bytesRead))
724 {
725 _recvBuffer.EnsureAvailableSpace(16);
727 if (bytesRead == 0)
728 {
729 break;
730 }
731 _recvBuffer.Commit(bytesRead);
732 continue;
733 }
734 _recvBuffer.Discard(bytesRead);
735 if (System.Net.NetEventSource.Log.IsEnabled())
736 {
737 Trace($"Received frame {a} of length {b}.", "ReadFrameEnvelopeAsync");
738 }
740 if ((ulong)http3FrameType <= 13uL)
741 {
742 switch (http3FrameType)
743 {
744 case Http3FrameType.Data:
745 case Http3FrameType.Headers:
746 return ((Http3FrameType)a, b);
747 case Http3FrameType.ReservedHttp2Priority:
748 case Http3FrameType.Settings:
749 case Http3FrameType.ReservedHttp2Ping:
750 case Http3FrameType.GoAway:
751 case Http3FrameType.ReservedHttp2WindowUpdate:
752 case Http3FrameType.ReservedHttp2Continuation:
753 case Http3FrameType.MaxPushId:
754 throw new Http3ConnectionException(Http3ErrorCode.UnexpectedFrame);
755 case Http3FrameType.CancelPush:
756 case Http3FrameType.PushPromise:
757 throw new Http3ConnectionException(Http3ErrorCode.IdError);
758 }
759 }
761 }
762 if (_recvBuffer.ActiveLength == 0)
763 {
764 return (null, 0L);
765 }
766 throw new HttpRequestException(System.SR.net_http_invalid_response_premature_eof);
767 }
void Trace(string message, [CallerMemberName] string memberName=null)
async ValueTask SkipUnknownPayloadAsync(long payloadLength, CancellationToken cancellationToken)
static readonly System.Net.NetEventSource Log
override Task< int > ReadAsync(byte[] buffer, int offset, int count, CancellationToken cancellationToken)
static string net_http_invalid_response_premature_eof
Definition SR.cs:94
Definition SR.cs:7

References System.Net.Http.Http3RequestStream._recvBuffer, System.Net.Http.Http3RequestStream._stream, System.cancellationToken, System.L, System.Net.NetEventSource.Log, System.SR.net_http_invalid_response_premature_eof, System.Net.Quic.QuicStream.ReadAsync(), System.Net.Http.Http3RequestStream.SkipUnknownPayloadAsync(), System.Net.Http.Http3RequestStream.Trace(), and System.Net.Http.Http3Frame.TryReadIntegerPair().

Referenced by System.Net.Http.Http3RequestStream.DrainContentLength0Frames(), System.Net.Http.Http3RequestStream.ReadNextDataFrameAsync(), and System.Net.Http.Http3RequestStream.ReadResponseAsync().