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)
 {
 }
示例#5
0
 /// <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));
示例#6
0
 /// <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));