private PreparedHeader(PreparedHeaderName name, string value, byte[] valueEncoded, uint http2StaticIndex) { Value = value; _name = name; _value = valueEncoded; int http1EncodedLen = Http1Connection.GetEncodeHeaderLength(name._http1Encoded, valueEncoded); _http1Encoded = new byte[http1EncodedLen]; Http1Connection.EncodeHeader(name._http1Encoded, valueEncoded, _http1Encoded); _http2Encoded = http2StaticIndex != 0 ? HPack.EncodeIndexedHeader(http2StaticIndex) : name._http2StaticIndex != 0 ? HPack.EncodeHeaderWithoutIndexing(name._http2StaticIndex, valueEncoded) : HPack.EncodeHeaderWithoutIndexing(name._http2Encoded, valueEncoded); _http2StaticIndex = http2StaticIndex; }
/// <summary> /// Instantiates a new <see cref="PreparedHeader"/>. /// </summary> /// <param name="name">The <see cref="PreparedHeaderName"/> of the header.</param> /// <param name="value">The value of the header.</param> public PreparedHeader(PreparedHeaderName name, ReadOnlySpan <byte> value) : this(name, Encoding.ASCII.GetString(value), value.ToArray(), 0) { }
/// <summary> /// Instantiates a new <see cref="PreparedHeader"/>. /// </summary> /// <param name="name">The <see cref="PreparedHeaderName"/> of the header.</param> /// <param name="value">The value of the header. This value will be ASCII-encoded.</param> public PreparedHeader(PreparedHeaderName name, string value) : this(name, value, 0) { }
internal PreparedHeader(PreparedHeaderName name, string value, uint http2StaticIndex = 0) : this(name, value, Encoding.ASCII.GetBytes(value), http2StaticIndex) { }
/// <summary> /// Adds a header to the <see cref="PreparedHeaderSet"/> /// </summary> /// <param name="name">The name of the header to add.</param> /// <param name="value">The value of the header to add.</param> public void Add(PreparedHeaderName name, ReadOnlySpan <byte> value) => Add(new PreparedHeader(name, value));
/// <summary> /// Adds a header to the <see cref="PreparedHeaderSet"/> /// </summary> /// <param name="name">The name of the header to add.</param> /// <param name="value">The value of the header to add. The value will be ASCII-encoded.</param> public void Add(PreparedHeaderName name, string value) => Add(new PreparedHeader(name, value));