hpack
Generated by tinox doc
HPACK header compression for HTTP/2 (RFC 7541): the 61-entry static table, a per-connection dynamic table (HpackDynTable), and integer/string encode/decode for header blocks. Used internally by tinox.core.http2_server; Huffman coding is not implemented, headers are read/written as raw byte strings.
Encode decode headers
import tinox.core.hpack;
class Main
{
fnc main() -> Int32
{
let encodeTable: HpackDynTable = HpackDynTable::new(4096);
let headers: List<HpackHeader> = [
HpackHeader::new(":method", "GET"),
HpackHeader::new("x-request-id", "abc-123")
];
let encoded: List<Int64> = Hpack::encode(headers, encodeTable);
println("encoded " + encoded.len().toString() + " bytes");
let decodeTable: HpackDynTable = HpackDynTable::new(4096);
let decoded: List<HpackHeader> = Hpack::decode(encoded, decodeTable);
println(decoded[0].name + ": " + decoded[0].value);
println(decoded[1].name + ": " + decoded[1].value);
return 0;
}
}
fn tinoxBytesToString(bytes: List<Int64>) → String
class Hpack
* HPACK encoder/decoder * * Decodes header blocks received from HTTP/2 clients and encodes * header lists into header blocks for HTTP/2 responses.
Methods
class HpackDynTable
* HPACK dynamic table (RFC 7541 §2.3.2) * * New entries are prepended; eviction happens from the tail. * Each entry has an overhead of 32 octets per spec.
Fields
entries | List<HpackHeader> | |
maxSize | Int64 | |
currentSize | Int64 |
Methods
class HpackHeader
* A single decoded or to-be-encoded HTTP header name/value pair
Fields
name | String | |
value | String |
Methods
class HpackIntResult
Fields
value | Int64 | |
nextOffset | Int64 |
class HpackStrResult
Fields
value | String | |
nextOffset | Int64 |