| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Network.HPACK.Internal
Synopsis
- decodeI :: Int -> Word8 -> ReadBuffer -> IO Int
- decodeInteger :: Int -> Word8 -> ByteString -> IO Int
- encodeI :: WriteBuffer -> (Word8 -> Word8) -> Int -> Int -> IO ()
- encodeInteger :: Int -> Int -> IO ByteString
- encodeS :: WriteBuffer -> Bool -> (Word8 -> Word8) -> (Word8 -> Word8) -> Int -> ByteString -> IO ()
- encodeString :: Bool -> ByteString -> IO ByteString
- decodeS :: (Word8 -> Word8) -> (Word8 -> Bool) -> Int -> HuffmanDecoder -> ReadBuffer -> IO ByteString
- decodeSimple :: (Word8 -> ReadBuffer -> IO TokenHeader) -> ReadBuffer -> IO [Header]
- decodeSophisticated :: (Word8 -> ReadBuffer -> IO TokenHeader) -> ReadBuffer -> IO TokenHeaderTable
- decodeString :: ReadBuffer -> IO ByteString
- toTokenHeaderTable :: [Header] -> IO TokenHeaderTable
- decH :: WriteBuffer -> ReadBuffer -> Int -> IO ()
- decodeH :: GCBuffer -> BufferSize -> ReadBuffer -> Int -> IO ByteString
- decodeHuffman :: ByteString -> IO ByteString
- encodeH :: WriteBuffer -> ByteString -> IO Int
- encodeHuffman :: ByteString -> IO ByteString
- type GCBuffer = ForeignPtr Word8
- type HuffmanDecoder = ReadBuffer -> Int -> IO ByteString
- dummyEntry :: Entry
- entryFieldValue :: Entry -> FieldValue
- entryHeaderName :: Entry -> HeaderName
- entrySize :: Entry -> Size
- entryToken :: Entry -> Token
- entryTokenHeader :: Entry -> TokenHeader
- maxNumbers :: Size -> Int
- toEntry :: Header -> Entry
- toEntryToken :: Token -> FieldValue -> Entry
- type FieldValue = ByteString
- data Entry = Entry Size Token FieldValue
- type Size = Int
- type Index = Int
- data CompressionAlgo
- data EncodeStrategy = EncodeStrategy {
- compressionAlgo :: CompressionAlgo
- useHuffman :: Bool
Integer encoding/decoding
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
Arguments
| :: WriteBuffer | |
| -> (Word8 -> Word8) | Setting prefix |
| -> Int | N+ |
| -> Int | Target |
| -> IO () |
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]
String encoding/decoding
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.
Arguments
| :: Bool | Use Huffman if efficient |
| -> ByteString | Target |
| -> IO ByteString |
String encoding (7+) with a temporary buffer whose size 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 [Header] Source #
Converting to '[Header]'.
- 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 TokenHeaderTable 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.
decodeString :: ReadBuffer -> IO ByteString Source #
String decoding (7+) with a temporal Huffman decoder whose buffer is 4096.
toTokenHeaderTable :: [Header] -> IO TokenHeaderTable Source #
Converting a header list of the http-types style to
TokenHeaderList and ValueTable.
decH :: WriteBuffer -> ReadBuffer -> Int -> IO () Source #
Low devel Huffman decoding in a write buffer.
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.
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.
type HuffmanDecoder = ReadBuffer -> Int -> IO ByteString Source #
Huffman decoding.
dummyEntry :: Entry Source #
Dummy Entry to initialize a dynamic table.
entryFieldValue :: Entry -> FieldValue Source #
Getting FieldValue.
entryHeaderName :: Entry -> HeaderName Source #
Getting HeaderName.
entryTokenHeader :: Entry -> TokenHeader Source #
Getting TokenHeader.
maxNumbers :: Size -> Int Source #
How many entries can be stored in a dynamic table?
toEntryToken :: Token -> FieldValue -> Entry Source #
type FieldValue = ByteString #
Type for table entry. Size includes the 32 bytes magic number.
Constructors
| Entry Size Token FieldValue |
Types
data CompressionAlgo Source #
Compression algorithms for HPACK encoding.
Instances
| Show CompressionAlgo Source # | |
Defined in Network.HPACK.Types Methods showsPrec :: Int -> CompressionAlgo -> ShowS show :: CompressionAlgo -> String showList :: [CompressionAlgo] -> ShowS | |
| Eq CompressionAlgo Source # | |
Defined in Network.HPACK.Types Methods (==) :: CompressionAlgo -> CompressionAlgo -> Bool (/=) :: CompressionAlgo -> CompressionAlgo -> Bool | |
data EncodeStrategy Source #
Strategy for HPACK encoding.
Constructors
| EncodeStrategy | |
Fields
| |
Instances
| Show EncodeStrategy Source # | |
Defined in Network.HPACK.Types Methods showsPrec :: Int -> EncodeStrategy -> ShowS show :: EncodeStrategy -> String showList :: [EncodeStrategy] -> ShowS | |
| Eq EncodeStrategy Source # | |
Defined in Network.HPACK.Types Methods (==) :: EncodeStrategy -> EncodeStrategy -> Bool (/=) :: EncodeStrategy -> EncodeStrategy -> Bool | |