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

◆ DecodeInternal()

void System.Net.Http.HPack.HPackDecoder.DecodeInternal ( ReadOnlySpan< byte > data,
IHttpHeadersHandler handler )
inlineprivate

Definition at line 80 of file HPackDecoder.cs.

81 {
82 int currentIndex = 0;
83 do
84 {
85 switch (_state)
86 {
87 case State.Ready:
88 Parse(data, ref currentIndex, handler);
89 break;
90 case State.HeaderFieldIndex:
91 ParseHeaderFieldIndex(data, ref currentIndex, handler);
92 break;
93 case State.HeaderNameIndex:
94 ParseHeaderNameIndex(data, ref currentIndex, handler);
95 break;
96 case State.HeaderNameLength:
97 ParseHeaderNameLength(data, ref currentIndex, handler);
98 break;
99 case State.HeaderNameLengthContinue:
100 ParseHeaderNameLengthContinue(data, ref currentIndex, handler);
101 break;
102 case State.HeaderName:
103 ParseHeaderName(data, ref currentIndex, handler);
104 break;
105 case State.HeaderValueLength:
106 ParseHeaderValueLength(data, ref currentIndex, handler);
107 break;
108 case State.HeaderValueLengthContinue:
109 ParseHeaderValueLengthContinue(data, ref currentIndex, handler);
110 break;
111 case State.HeaderValue:
112 ParseHeaderValue(data, ref currentIndex, handler);
113 break;
114 case State.DynamicTableSizeUpdate:
115 ParseDynamicTableSizeUpdate(data, ref currentIndex);
116 break;
117 default:
118 throw new NotImplementedException(_state.ToString());
119 }
120 }
121 while (currentIndex < data.Length);
122 if (_headerNameRange.HasValue)
123 {
126 ReadOnlySpan<byte> readOnlySpan = data.Slice(_headerNameRange.GetValueOrDefault().start, _headerNameRange.GetValueOrDefault().length);
127 readOnlySpan.CopyTo(_headerName);
128 _headerNameLength = readOnlySpan.Length;
129 _headerNameRange = null;
130 }
131 }
void ParseHeaderValueLength(ReadOnlySpan< byte > data, ref int currentIndex, IHttpHeadersHandler handler)
void EnsureStringCapacity(ref byte[] dst)
void ParseHeaderFieldIndex(ReadOnlySpan< byte > data, ref int currentIndex, IHttpHeadersHandler handler)
void ParseHeaderNameLength(ReadOnlySpan< byte > data, ref int currentIndex, IHttpHeadersHandler handler)
void ParseDynamicTableSizeUpdate(ReadOnlySpan< byte > data, ref int currentIndex)
void ParseHeaderNameLengthContinue(ReadOnlySpan< byte > data, ref int currentIndex, IHttpHeadersHandler handler)
void ParseHeaderValue(ReadOnlySpan< byte > data, ref int currentIndex, IHttpHeadersHandler handler)
void Parse(ReadOnlySpan< byte > data, ref int currentIndex, IHttpHeadersHandler handler)
void ParseHeaderName(ReadOnlySpan< byte > data, ref int currentIndex, IHttpHeadersHandler handler)
void ParseHeaderValueLengthContinue(ReadOnlySpan< byte > data, ref int currentIndex, IHttpHeadersHandler handler)
void ParseHeaderNameIndex(ReadOnlySpan< byte > data, ref int currentIndex, IHttpHeadersHandler handler)
ReadOnlySpan< T > Slice(int start)

References System.Net.Http.HPack.HPackDecoder._headerName, System.Net.Http.HPack.HPackDecoder._headerNameLength, System.Net.Http.HPack.HPackDecoder._headerNameOctets, System.Net.Http.HPack.HPackDecoder._headerNameRange, System.Net.Http.HPack.HPackDecoder._state, System.ReadOnlySpan< T >.CopyTo(), System.Net.Http.HPack.HPackDecoder.EnsureStringCapacity(), System.ReadOnlySpan< T >.Length, System.Net.Http.HPack.HPackDecoder.Parse(), System.Net.Http.HPack.HPackDecoder.ParseDynamicTableSizeUpdate(), System.Net.Http.HPack.HPackDecoder.ParseHeaderFieldIndex(), System.Net.Http.HPack.HPackDecoder.ParseHeaderName(), System.Net.Http.HPack.HPackDecoder.ParseHeaderNameIndex(), System.Net.Http.HPack.HPackDecoder.ParseHeaderNameLength(), System.Net.Http.HPack.HPackDecoder.ParseHeaderNameLengthContinue(), System.Net.Http.HPack.HPackDecoder.ParseHeaderValue(), System.Net.Http.HPack.HPackDecoder.ParseHeaderValueLength(), System.Net.Http.HPack.HPackDecoder.ParseHeaderValueLengthContinue(), and System.ReadOnlySpan< T >.Slice().

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