Skip to main content

Crate zerodds_hpack

Crate zerodds_hpack 

Source
Expand description

Crate zerodds-hpack. Safety classification: STANDARD.

HPACK (RFC 7541) Header-Compression-Codec fuer HTTP/2 — no_std, forbid(unsafe_code). Implementiert die Wire-Schicht aus Variable-Length-Integer-Coding (§5.1), String-Literal-Coding (§5.2) inkl. statischem Huffman-Code (Appendix B), Static- und Dynamic-Table (§2.3, §4) sowie alle vier Header-Field- Repraesentationen (§6: Indexed / Literal-with-Indexing / Literal-without-Indexing / Literal-Never-Indexed).

Spec: RFC 7541 §5 (Primitive Type Representations) + §6 (Binary Format).

§Schichten-Position

Layer 5 — Bridges. Substrat fuer:

§Public API (Stand 1.0.0-rc.1)

§Beispiel

use zerodds_hpack::{Decoder, Encoder, HeaderField};

let mut encoder = Encoder::new();
let mut decoder = Decoder::new();

let headers = vec![
    HeaderField { name: ":method".into(), value: "GET".into() },
    HeaderField { name: ":scheme".into(), value: "https".into() },
    HeaderField { name: "custom-key".into(), value: "custom-value".into() },
];

let wire = encoder.encode(&headers);
let decoded = decoder.decode(&wire).expect("roundtrip");
assert_eq!(decoded, headers);

Re-exports§

pub use decoder::Decoder;
pub use decoder::DecoderError;
pub use encoder::Encoder;
pub use encoder::EncoderError;
pub use integer::decode_integer;
pub use integer::encode_integer;
pub use string::decode_string;
pub use string::encode_string;
pub use table::HeaderField;
pub use table::STATIC_TABLE;
pub use table::StaticTableEntry;
pub use table::Table;

Modules§

decoder
HPACK Decoder — RFC 7541 §6.
encoder
HPACK Encoder — RFC 7541 §6.
huffman
RFC 7541 Appendix B Static Huffman Code.
integer
Variable-Length-Integer-Coding — RFC 7541 §5.1.
string
String-Literal-Coding — RFC 7541 §5.2.
table
HPACK Static + Dynamic Table — RFC 7541 §2.3.