| Safe Haskell | Safe-Inferred | 
|---|---|
| Language | Haskell2010 | 
Network.HPACK.Internal
Synopsis
- encodeI :: WriteBuffer -> (Word8 -> Word8) -> Int -> Int -> IO ()
- encodeInteger :: Int -> Int -> IO ByteString
- decodeI :: Int -> Word8 -> ReadBuffer -> IO Int
- decodeInteger :: Int -> Word8 -> ByteString -> IO Int
- encodeString :: Bool -> ByteString -> IO ByteString
- encodeS :: WriteBuffer -> Bool -> (Word8 -> Word8) -> (Word8 -> Word8) -> Int -> ByteString -> IO ()
- decodeString :: ReadBuffer -> IO ByteString
- decodeS :: (Word8 -> Word8) -> (Word8 -> Bool) -> Int -> HuffmanDecoder -> ReadBuffer -> IO ByteString
- decodeSimple :: (Word8 -> ReadBuffer -> IO TokenHeader) -> ReadBuffer -> IO HeaderList
- decodeSophisticated :: (Word8 -> ReadBuffer -> IO TokenHeader) -> ReadBuffer -> IO HeaderTable
- encodeH :: WriteBuffer -> ByteString -> IO Int
- encodeHuffman :: ByteString -> IO ByteString
- decodeH :: GCBuffer -> BufferSize -> ReadBuffer -> Int -> IO ByteString
- decodeHuffman :: ByteString -> IO ByteString
- type HuffmanDecoder = ReadBuffer -> Int -> IO ByteString
- decH :: WriteBuffer -> ReadBuffer -> Int -> IO ()
- type GCBuffer = ForeignPtr Word8
- type Size = Int
- data Entry = Entry Size Token HeaderValue
- type Header = (HeaderName, HeaderValue)
- type HeaderName = ByteString
- type HeaderValue = ByteString
- type Index = Int
- toEntry :: Header -> Entry
- toEntryToken :: Token -> HeaderValue -> Entry
- entrySize :: Entry -> Size
- entryTokenHeader :: Entry -> TokenHeader
- entryToken :: Entry -> Token
- entryHeaderName :: Entry -> HeaderName
- entryHeaderValue :: Entry -> HeaderValue
- dummyEntry :: Entry
- maxNumbers :: Size -> Int
Integer encoding/decoding
Integer encoding with a write buffer.
Arguments
| :: Int | N+ | 
| -> Int | Target | 
| -> IO ByteString | 
Encoding integer with a temporary buffer whose size is 4096. No prefix is set.
>>>BS.unpack <$> encodeInteger 5 10[10]>>>BS.unpack <$> encodeInteger 5 1337[31,154,10]>>>BS.unpack <$> encodeInteger 8 42[42]
Arguments
| :: Int | N+ | 
| -> Word8 | The head of encoded integer whose prefix is already dropped | 
| -> ReadBuffer | |
| -> IO Int | 
Integer decoding with a read buffer. The first argument is N of prefix.
Arguments
| :: Int | N+ | 
| -> Word8 | The head of encoded integer whose prefix is already dropped | 
| -> ByteString | The tail of encoded integer | 
| -> IO Int | 
Integer decoding. The first argument is N of prefix.
>>>decodeInteger 5 10 $ BS.empty10>>>decodeInteger 5 31 $ BS.pack [154,10]1337>>>decodeInteger 8 42 $ BS.empty42
String encoding/decoding
Arguments
| :: Bool | Use Huffman if efficient | 
| -> ByteString | Target | 
| -> IO ByteString | 
String encoding (7+) with a temporary buffer whose size is 4096.
Arguments
| :: WriteBuffer | |
| -> Bool | Use Huffman if efficient | 
| -> (Word8 -> Word8) | Setting prefix | 
| -> (Word8 -> Word8) | Setting huffman flag | 
| -> Int | N+ | 
| -> ByteString | Target | 
| -> IO () | 
String encoding. The algorithm based on copy avoidance and selection of better result of huffman or raw.
decodeString :: ReadBuffer -> IO ByteString Source #
String decoding (7+) with a temporal Huffman decoder whose buffer is 4096.
Arguments
| :: (Word8 -> Word8) | Dropping prefix and Huffman | 
| -> (Word8 -> Bool) | Checking Huffman flag | 
| -> Int | N+ | 
| -> HuffmanDecoder | |
| -> ReadBuffer | |
| -> IO ByteString | 
String decoding with Huffman decoder.
decodeSimple :: (Word8 -> ReadBuffer -> IO TokenHeader) -> ReadBuffer -> IO HeaderList Source #
Converting to HeaderList.
- Headers are decoded as is.
- DecodeErrorwould be thrown if the HPACK format is broken.
- BufferOverrunwill be thrown if the temporary buffer for Huffman decoding is too small.
decodeSophisticated :: (Word8 -> ReadBuffer -> IO TokenHeader) -> ReadBuffer -> IO HeaderTable Source #
Converting to TokenHeaderList and ValueTable.
- Multiple values of Cookie: are concatenated.
- If a pseudo header appears multiple times,
     IllegalHeaderNameis thrown.
- If unknown pseudo headers appear,
     IllegalHeaderNameis thrown.
- If pseudo headers are found after normal headers,
     IllegalHeaderNameis thrown.
- If a header key contains capital letters,
     IllegalHeaderNameis thrown.
- If the number of header fields is too large,
     TooLargeHeaderis thrown
- DecodeErrorwould be thrown if the HPACK format is broken.
- BufferOverrunwill be thrown if the temporary buffer for Huffman decoding is too small.
Huffman encoding/decoding
Arguments
| :: WriteBuffer | |
| -> ByteString | Target | 
| -> IO Int | The length of the encoded string. | 
Huffman encoding.
encodeHuffman :: ByteString -> IO ByteString Source #
Huffman encoding with a temporary buffer whose size is 4096.
Arguments
| :: GCBuffer | A working space | 
| -> BufferSize | |
| -> ReadBuffer | A read buffer which contains the target | 
| -> Int | The target length | 
| -> IO ByteString | 
Huffman decoding.
decodeHuffman :: ByteString -> IO ByteString Source #
Huffman decoding with a temporary buffer whose size is 4096.
type HuffmanDecoder = ReadBuffer -> Int -> IO ByteString Source #
Huffman decoding.
decH :: WriteBuffer -> ReadBuffer -> Int -> IO () Source #
Low devel Huffman decoding in a write buffer.
type GCBuffer = ForeignPtr Word8 Source #
Type
Type for table entry. Size includes the 32 bytes magic number.
Constructors
| Entry Size Token HeaderValue | 
type Header = (HeaderName, HeaderValue) Source #
Header.
type HeaderName = ByteString Source #
Header name.
type HeaderValue = ByteString Source #
Header value.
Header and Entry
toEntryToken :: Token -> HeaderValue -> Entry Source #
Getters
entryTokenHeader :: Entry -> TokenHeader Source #
Getting TokenHeader.
entryHeaderName :: Entry -> HeaderName Source #
Getting HeaderName.
entryHeaderValue :: Entry -> HeaderValue Source #
Getting HeaderValue.
For initialization
dummyEntry :: Entry Source #
Dummy Entry to initialize a dynamic table.
maxNumbers :: Size -> Int Source #
How many entries can be stored in a dynamic table?