dyn_table/
dyn_table.rs

1use ls_qpack::decoder::Decoder;
2use ls_qpack::encoder::Encoder;
3use ls_qpack::StreamId;
4
5const HEADERS: [(&str, &str); 3] = [(":status", "404"), ("foo", "bar"), ("foo", "bar")];
6
7fn main() {
8    let mut encoder = Encoder::new();
9    let sdtc_data = encoder.configure(1024, 1024, 1).unwrap();
10
11    let (encoded_hdr_data, encoded_stream_data) = encoder
12        .encode_all(StreamId::new(0), HEADERS)
13        .unwrap()
14        .into();
15
16    println!("Encoding ratio: {}", encoder.ratio());
17
18    let mut decoder = Decoder::new(1024, 1);
19    decoder.feed(sdtc_data).unwrap();
20
21    let decoder_status = decoder.decode(StreamId::new(0), encoded_hdr_data).unwrap();
22
23    assert!(decoder_status.is_blocked());
24    println!("Decoder blocked. Stream data needed");
25
26    decoder.feed(encoded_stream_data).unwrap();
27
28    let decoded_hdr = decoder
29        .unblocked(StreamId::new(0))
30        .unwrap()
31        .unwrap()
32        .take()
33        .unwrap();
34
35    println!("Decoded header: {:?}", decoded_hdr);
36}