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

◆ Parse()

void System.Net.Http.HPack.HPackDecoder.Parse ( ReadOnlySpan< byte > data,
ref int currentIndex,
IHttpHeadersHandler handler )
inlineprivate

Definition at line 229 of file HPackDecoder.cs.

230 {
231 if (currentIndex >= data.Length)
232 {
233 return;
234 }
235 byte b = data[currentIndex++];
237 {
238 case 24:
239 {
240 _headersObserved = true;
241 int num = b & -129;
242 if (_integerDecoder.BeginTryDecode((byte)num, 7, out var result2))
243 {
244 OnIndexedHeaderField(result2, handler);
245 break;
246 }
247 _state = State.HeaderFieldIndex;
248 ParseHeaderFieldIndex(data, ref currentIndex, handler);
249 break;
250 }
251 case 25:
252 ParseLiteralHeaderField(data, ref currentIndex, b, 192, 6, index: true, handler);
253 break;
254 default:
255 ParseLiteralHeaderField(data, ref currentIndex, b, 240, 4, index: false, handler);
256 break;
257 case 27:
258 ParseLiteralHeaderField(data, ref currentIndex, b, 240, 4, index: false, handler);
259 break;
260 case 26:
261 {
263 {
264 throw new HPackDecodingException(System.SR.net_http_hpack_late_dynamic_table_size_update);
265 }
266 if (_integerDecoder.BeginTryDecode((byte)(b & 0xFFFFFF1Fu), 5, out var result))
267 {
269 break;
270 }
271 _state = State.DynamicTableSizeUpdate;
272 ParseDynamicTableSizeUpdate(data, ref currentIndex);
273 break;
274 }
275 }
276 }
void OnIndexedHeaderField(int index, IHttpHeadersHandler handler)
void ParseHeaderFieldIndex(ReadOnlySpan< byte > data, ref int currentIndex, IHttpHeadersHandler handler)
void ParseLiteralHeaderField(ReadOnlySpan< byte > data, ref int currentIndex, byte b, byte mask, byte indexPrefix, bool index, IHttpHeadersHandler handler)
void ParseDynamicTableSizeUpdate(ReadOnlySpan< byte > data, ref int currentIndex)
static int LeadingZeroCount(uint value)
static string net_http_hpack_late_dynamic_table_size_update
Definition SR.cs:164
Definition SR.cs:7
bool BeginTryDecode(byte b, int prefixLength, out int result)

References System.Net.Http.HPack.HPackDecoder._headersObserved, System.Net.Http.HPack.HPackDecoder._integerDecoder, System.Net.Http.HPack.HPackDecoder._state, System.Net.Http.HPack.IntegerDecoder.BeginTryDecode(), System.index, System.Numerics.BitOperations.LeadingZeroCount(), System.ReadOnlySpan< T >.Length, System.SR.net_http_hpack_late_dynamic_table_size_update, System.Net.Http.HPack.HPackDecoder.OnIndexedHeaderField(), System.Net.Http.HPack.HPackDecoder.ParseDynamicTableSizeUpdate(), System.Net.Http.HPack.HPackDecoder.ParseHeaderFieldIndex(), System.Net.Http.HPack.HPackDecoder.ParseLiteralHeaderField(), and System.Net.Http.HPack.HPackDecoder.SetDynamicHeaderTableSize().

Referenced by System.Net.Http.HPack.HPackDecoder.DecodeInternal().