Module fluke_hpack::decoder

source ·
Expand description

Exposes the struct Decoder that allows for HPACK-encoded header blocks to be decoded into a header list.

The decoder only follows HPACK rules, without performing any additional (semantic) checks on the header name/value pairs, i.e. it considers the headers as opaque octets.

§Example

A simple example of using the decoder that demonstrates its API:

use fluke_hpack::Decoder;
let mut decoder = Decoder::new();

let header_list = decoder.decode(&[0x82, 0x84]).unwrap();

assert_eq!(header_list, [
    (b":method".to_vec(), b"GET".to_vec()),
    (b":path".to_vec(), b"/".to_vec()),
]);

A more complex example where the callback API is used, providing the client a borrowed representation of each header, rather than an owned representation.

use fluke_hpack::Decoder;
let mut decoder = Decoder::new();

let mut count = 0;
let header_list = decoder.decode_with_cb(&[0x82, 0x84], |name, value| {
    count += 1;
    match count {
        1 => {
            assert_eq!(&name[..], &b":method"[..]);
            assert_eq!(&value[..], &b"GET"[..]);
        },
        2 => {
            assert_eq!(&name[..], &b":path"[..]);
            assert_eq!(&value[..], &b"/"[..]);
        },
        _ => panic!("Did not expect more than two headers!"),
    };
});

Structs§

  • Decodes headers encoded using HPACK.

Enums§

  • Represents all errors that can be encountered while performing the decoding of an HPACK header set.
  • Represents all errors that can be encountered while decoding an integer.
  • Represents all errors that can be encountered while decoding an octet string.

Type Aliases§

  • The result returned by the decode method of the Decoder.