private System.Net.Http.QPack.HeaderField GetHeader(int index) { try { return(_s ? H3StaticTable.GetHeaderFieldAt(index) : _dynamicTable[index]); } catch (IndexOutOfRangeException ex) { throw new QPackDecodingException("" /*CoreStrings.FormatQPackErrorIndexOutOfRange(index)*/, ex); } }
private static int EncodeStatusCode(int statusCode, Span <byte> buffer) { if (H3StaticTable.TryGetStatusIndex(statusCode, out var index)) { QPackEncoder.EncodeStaticIndexedHeaderField(index, buffer, out var bytesWritten); return(bytesWritten); } else { // https://tools.ietf.org/html/draft-ietf-quic-qpack-21#section-4.5.4 // Index is 63 - :status buffer[0] = 0b01011111; buffer[1] = 0b00110000; ReadOnlySpan <byte> statusBytes = System.Net.Http.HPack.StatusCodes.ToStatusBytes(statusCode); buffer[2] = (byte)statusBytes.Length; statusBytes.CopyTo(buffer.Slice(3)); return(3 + statusBytes.Length); } }
public void OnStaticIndexedHeader(int index, ReadOnlySpan <byte> value) { var knownHeader = H3StaticTable.GetHeaderFieldAt(index); OnHeader(knownHeader.Name, value); }
public void OnStaticIndexedHeader(int index) { var knownHeader = H3StaticTable.GetHeaderFieldAt(index); OnHeader(knownHeader.Name, knownHeader.Value); }
public void OnStaticIndexedHeader(int index, ReadOnlySpan <byte> value) { _headerHandler.DecodedHeaders[((Span <byte>)H3StaticTable.GetHeaderFieldAt(index).Name).GetAsciiStringNonNullCharacters()] = value.GetAsciiOrUTF8StringNonNullCharacters(); }
public void OnStaticIndexedHeader(int index) { var knownHeader = H3StaticTable.GetHeaderFieldAt(index); _headerHandler.DecodedHeaders[((Span <byte>)knownHeader.Name).GetAsciiStringNonNullCharacters()] = HttpUtilities.GetAsciiOrUTF8StringNonNullCharacters((ReadOnlySpan <byte>)knownHeader.Value); }