141 {
143 if (tokenLength == 0)
144 {
145 result = null;
146 readLength = 0;
147 return false;
148 }
149 ReadOnlySpan<char> readOnlySpan =
value.AsSpan(
startIndex, tokenLength);
150 readLength = tokenLength;
151 switch (readOnlySpan.Length)
152 {
153 case 2:
154 if (readOnlySpan[0] == 'h')
155 {
156 switch (readOnlySpan[1])
157 {
158 case '3':
159 result = "h3";
160 return true;
161 case '2':
162 result = "h2";
163 return true;
164 }
165 }
166 break;
167 case 3:
168 if (readOnlySpan[0] == 'h' && readOnlySpan[1] == '2' && readOnlySpan[2] == 'c')
169 {
170 result = "h2c";
171 readLength = 3;
172 return true;
173 }
174 break;
175 case 5:
176 if (readOnlySpan.SequenceEqual("clear"))
177 {
178 result = "clear";
179 return true;
180 }
181 break;
182 case 10:
183 if (readOnlySpan.StartsWith("http%2F1."))
184 {
185 switch (readOnlySpan[9])
186 {
187 case '1':
188 result = "http/1.1";
189 return true;
190 case '0':
191 result = "http/1.0";
192 return true;
193 }
194 }
195 break;
196 }
198 }