HORIZON HASKELLDocslts/ghc-10.0.xfc4e5982026-10-11Search names, modules, packages, or :: a typeCtrl K

GHC 10.0.0.20260917 · lts/ghc-10.0.x · fc4e598 · 2026-10-11

Modulehttp2-5.4.8Haskell2010

Network.HPACK.Table

  • 7 types
  • 31 values
  • Packagehttp2-5.4.8
  • Exports38
  • LanguageHaskell2010
  • LicenceBSD-3-Clause
  • SourceDynamic.hs

dynamic table

14 declarations
datadata TableSizeAction
#

Constructors

Insertion

1 declaration
valueinsertEntry :: Entry -> DynamicTable -> IO ()
#

Inserting Entry to DynamicTable.

Entries are evicted first and the new one added after, as RFC 7541 section 4.4 has it: "Before a new entry is added to the dynamic table, entries are evicted from the end of the dynamic table until the size of the dynamic table is less than or equal to (maximum size - new entry size) or until the table is empty." An entry larger than the table empties it and is not added.

The order matters to the ring. It has room for maxNumbers entries, and the table holds that many whenever they are all close to the 32-octet minimum -- at a size of 40 or 100, say. Added first, the new entry landed on the oldest one's slot, and the eviction that followed read that slot back and took out the new entry instead, leaving a dummy. After evicting there is always a free slot: every entry is 32 octets or more, so the entries left and the new one come to at most maxNumbers.

Entry

13 declarations
datadata Entry
#

Type for table entry. Size includes the 32 bytes magic number.

Instances1Show
  • Show EntryDefined in http2-5.4.8 · Network.HPACK.Table.Entry

Reverse index

8 declarations
valuedeleteRevIndexList :: [Entry] -> RevIndex -> IO ()
#
valueinsertRevIndex :: Entry -> HIndex -> RevIndex -> IO ()
#
valuenewRevIndex :: IO RevIndex
#
valuerenewRevIndex :: RevIndex -> IO ()
#
datadata RevIndex
#

Index to entry

2 declarations