H2_hpackHPACK Header Compression per RFC 7541.
This module implements header compression for HTTP/2 as specified in RFC 7541.
HPACK compresses HTTP headers by:
Create encoder/decoder contexts for each HTTP/2 connection:
let encoder = Encoder.create 4096 in
let decoder = Decoder.create 4096 in
(* Encode headers *)
let headers = [
{ name = ":method"; value = "GET"; sensitive = false };
{ name = ":path"; value = "/"; sensitive = false };
] in
let buf = Cstruct.create 1024 in
let len = Encoder.encode_headers encoder buf headers in
(* Decode headers *)
let header_block = Cstruct.sub buf 0 len in
match Decoder.decode decoder header_block with
| Ok headers -> (* process headers *)
| Error Decoding_error -> (* handle error *)type header = {name : string;Header field name (lowercase, or pseudo-header with colon prefix).
*)value : string;Header field value.
*)sensitive : bool;If true, this header should never be indexed. Used for sensitive values like cookies and authorization.
*)}A header field with optional sensitivity flag.
val pp_error : Format.formatter -> error -> unitPretty printer for errors.
module Decoder : sig ... endmodule Encoder : sig ... endmodule Huffman : sig ... end