Module: Protocol::HPACK

Defined in:
lib/protocol/hpack/context.rb,
lib/protocol/hpack/error.rb,
lib/protocol/hpack/huffman.rb,
lib/protocol/hpack/version.rb,
lib/protocol/hpack/compressor.rb,
lib/protocol/hpack/decompressor.rb,
lib/protocol/hpack/huffman/machine.rb,
lib/protocol/hpack/huffman/generator.rb

Overview

Implementation of header compression for HTTP 2.0 (HPACK) format adapted to efficiently represent HTTP headers in the context of HTTP 2.0.

Defined Under Namespace

Classes: CompressionError, Compressor, Context, DecompressionError, Decompressor, Error, Huffman

Constant Summary collapse

NO_INDEX_TYPE =

Header representation as defined by the spec.

{prefix: 4, pattern: 0x00}.freeze
NEVER_INDEXED_TYPE =
{prefix: 4, pattern: 0x10}.freeze
CHANGE_TABLE_SIZE_TYPE =
{prefix: 5, pattern: 0x20}.freeze
INCREMENTAL_TYPE =
{prefix: 6, pattern: 0x40}.freeze
INDEXED_TYPE =
{prefix: 7, pattern: 0x80}.freeze
HEADER_REPRESENTATION =
{
  indexed: INDEXED_TYPE,
  incremental: INCREMENTAL_TYPE,
  no_index: NO_INDEX_TYPE,
  never_indexed: NEVER_INDEXED_TYPE,
  change_table_size: CHANGE_TABLE_SIZE_TYPE
}
VERSION =
"1.5.1"
NAIVE =

Predefined options set for Compressor mew.org/~kazu/material/2014-hpack.pdf

{index: :never, huffman: :never}
LINEAR =
{index: :all, huffman: :never}
STATIC =
{index: :static, huffman: :never}
SHORTER =
{index: :all, huffman: :never}
NAIVE_HUFFMAN =
{index: :never, huffman: :always}
LINEAR_HUFFMAN =
{index: :all, huffman: :always}
STATIC_HUFFMAN =
{index: :static, huffman: :always}
SHORTER_HUFFMAN =
{index: :all, huffman: :shorter}
MODES =
{
  naive: NAIVE,
  linear: LINEAR,
  static: STATIC,
  shorter: SHORTER,
  naive_huffman: NAIVE_HUFFMAN,
  linear_huffman: NAIVE_HUFFMAN,
  static_huffman: NAIVE_HUFFMAN,
  shorter_huffman: NAIVE_HUFFMAN,
}