module Network.HPACK.Table.Entry (
Size
, Entry
, Header
, HeaderName
, HeaderValue
, Index
, toEntry
, fromEntry
, entrySize
, entryHeader
, entryHeaderName
, entryHeaderValue
, dummyEntry
, maxNumbers
) where
import qualified Data.ByteString as BS
import Network.HPACK.Types
type Size = Int
type Entry = (Size,Header)
headerSizeMagicNumber :: Size
headerSizeMagicNumber = 32
headerSize :: Header -> Size
headerSize (k,v) = BS.length k
+ BS.length v
+ headerSizeMagicNumber
toEntry :: Header -> Entry
toEntry h = (siz,h)
where
!siz = headerSize h
fromEntry :: Entry -> Header
fromEntry = snd
entrySize :: Entry -> Size
entrySize = fst
entryHeader :: Entry -> Header
entryHeader (_,h) = h
entryHeaderName :: Entry -> HeaderName
entryHeaderName (_,(k,_)) = k
entryHeaderValue :: Entry -> HeaderValue
entryHeaderValue (_,(_,v)) = v
dummyEntry :: Entry
dummyEntry = (0,("dummy","dummy"))
maxNumbers :: Size -> Int
maxNumbers siz = siz `div` headerSizeMagicNumber