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

◆ ProcessHeadersFrame()

async ValueTask System.Net.Http.Http2Connection.ProcessHeadersFrame ( FrameHeader frameHeader)
inlineprivate

Definition at line 2158 of file Http2Connection.cs.

2159 {
2160 if (System.Net.NetEventSource.Log.IsEnabled())
2161 {
2162 Trace($"{frameHeader}", "ProcessHeadersFrame");
2163 }
2164 bool endStream = frameHeader.EndStreamFlag;
2165 int streamId = frameHeader.StreamId;
2166 Http2Stream http2Stream = GetStream(streamId);
2167 IHttpHeadersHandler headersHandler;
2168 if (http2Stream != null)
2169 {
2170 http2Stream.OnHeadersStart();
2173 }
2174 else
2175 {
2176 headersHandler = NopHeadersHandler.Instance;
2177 }
2178 _hpackDecoder.Decode(GetFrameData(_incomingBuffer.ActiveSpan.Slice(0, frameHeader.PayloadLength), frameHeader.PaddedFlag, frameHeader.PriorityFlag), frameHeader.EndHeadersFlag, headersHandler);
2179 _incomingBuffer.Discard(frameHeader.PayloadLength);
2180 while (!frameHeader.EndHeadersFlag)
2181 {
2183 if (frameHeader.Type != FrameType.Continuation || frameHeader.StreamId != streamId)
2184 {
2186 }
2187 _hpackDecoder.Decode(_incomingBuffer.ActiveSpan.Slice(0, frameHeader.PayloadLength), frameHeader.EndHeadersFlag, headersHandler);
2188 _incomingBuffer.Discard(frameHeader.PayloadLength);
2189 }
2191 http2Stream?.OnHeadersComplete(endStream);
2192 }
void Decode(ReadOnlySpan< byte > data, bool endHeaders, IHttpHeadersHandler handler)
System.Net.ArrayBuffer _incomingBuffer
ReadOnlySpan< byte > GetFrameData(ReadOnlySpan< byte > frameData, bool hasPad, bool hasPriority)
override void Trace(string message, [CallerMemberName] string memberName=null)
readonly HPackDecoder _hpackDecoder
async ValueTask< FrameHeader > ReadFrameAsync(bool initialFrame=false)
Http2Stream GetStream(int streamId)
static readonly System.Net.NetEventSource Log
void OnDataOrHeadersReceived(Http2Connection connection)

References System.Net.Http.Http2Connection._hpackDecoder, System.Net.Http.Http2Connection._incomingBuffer, System.Net.Http.Http2Connection._rttEstimator, System.Net.Http.HPack.HPackDecoder.CompleteDecode(), System.Net.Http.HPack.HPackDecoder.Decode(), System.Net.Http.Http2Connection.GetFrameData(), System.Net.Http.Http2Connection.GetStream(), System.Net.Http.Http2Connection.NopHeadersHandler.Instance, System.Net.NetEventSource.Log, System.Net.Http.Http2Connection.RttEstimator.OnDataOrHeadersReceived(), System.Net.Http.Http2Connection.ReadFrameAsync(), System.Net.Http.Http2Connection.ThrowProtocolError(), and System.Net.Http.Http2Connection.Trace().

Referenced by System.Net.Http.Http2Connection.ProcessIncomingFramesAsync().