| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Network.HTTP2
Contents
- decodeFrame :: Settings -> ByteString -> Either ErrorCodeId (Frame, ByteString)
- data EncodeInfo = EncodeInfo {}
- encodeFrame :: EncodeInfo -> FramePayload -> ByteString
- type SettingsKey = Word16
- data SettingsKeyId
- type SettingsValue = Word32
- fromSettingsKeyId :: SettingsKeyId -> Word16
- toSettingsKeyId :: Word16 -> Maybe SettingsKeyId
- type Settings = Array SettingsKeyId (Maybe SettingsValue)
- defaultSettings :: Settings
- toSettings :: [(SettingsKeyId, SettingsValue)] -> Settings
- fromSettings :: Settings -> [(SettingsKeyId, SettingsValue)]
- type ErrorCode = Word32
- data ErrorCodeId
- fromErrorCodeId :: ErrorCodeId -> ErrorCode
- toErrorCodeId :: ErrorCode -> ErrorCodeId
- type FrameType = Word8
- data FrameTypeId
- fromFrameTypeId :: FrameTypeId -> FrameType
- toFrameTypeId :: FrameType -> Maybe FrameTypeId
- data Frame = Frame {}
- data FrameHeader = FrameHeader {}
- data FramePayload
- = DataFrame ByteString
- | HeadersFrame (Maybe Priority) HeaderBlockFragment
- | PriorityFrame Priority
- | RSTStreamFrame ErrorCodeId
- | SettingsFrame Settings
- | PushPromiseFrame PromisedStreamId HeaderBlockFragment
- | PingFrame ByteString
- | GoAwayFrame LastStreamId ErrorCodeId ByteString
- | WindowUpdateFrame WindowSizeIncrement
- | ContinuationFrame HeaderBlockFragment
- | UnknownFrame FrameType ByteString
- framePayloadToFrameType :: FramePayload -> FrameType
- newtype StreamIdentifier = StreamIdentifier Word32
- type StreamDependency = StreamIdentifier
- type PromisedStreamId = StreamIdentifier
- type LastStreamId = StreamIdentifier
- fromStreamIdentifier :: StreamIdentifier -> Word32
- toStreamIdentifier :: Word32 -> StreamIdentifier
- streamIdentifierForSeetings :: StreamIdentifier
- testExclusive :: Word32 -> Bool
- setExclusive :: Word32 -> Word32
- type FrameFlags = Word8
- defaultFlags :: FrameFlags
- testEndStream :: FrameFlags -> Bool
- testAck :: FrameFlags -> Bool
- testEndHeader :: FrameFlags -> Bool
- testPadded :: FrameFlags -> Bool
- testPriority :: FrameFlags -> Bool
- setEndStream :: FrameFlags -> FrameFlags
- setAck :: FrameFlags -> FrameFlags
- setEndHeader :: FrameFlags -> FrameFlags
- setPadded :: FrameFlags -> FrameFlags
- setPriority :: FrameFlags -> FrameFlags
- type PayloadLength = Int
- maxPayloadLength :: PayloadLength
- type WindowSizeIncrement = Word32
- type HeaderBlockFragment = ByteString
- data Priority = Priority {}
- type Padding = ByteString
Decoding and Encoding
Arguments
| :: Settings | HTTP/2 settings |
| -> ByteString | Input byte-stream |
| -> Either ErrorCodeId (Frame, ByteString) | (Decoded frame, leftover byte-stream) |
Parsing byte stream to make an HTTP/2 frame.
data EncodeInfo Source
Auxiliary information for frame encoding.
Constructors
| EncodeInfo | |
Fields
| |
Instances
encodeFrame :: EncodeInfo -> FramePayload -> ByteString Source
Encoding an HTTP/2 frame to byte stream.
Settings
type SettingsKey = Word16 Source
data SettingsKeyId Source
type SettingsValue = Word32 Source
fromSettingsKeyId :: SettingsKeyId -> Word16 Source
>>>fromSettingsKeyId SettingsHeaderTableSize1>>>fromSettingsKeyId SettingsMaxHeaderBlockSize6
toSettingsKeyId :: Word16 -> Maybe SettingsKeyId Source
>>>toSettingsKeyId 0Nothing>>>toSettingsKeyId 1Just SettingsHeaderTableSize>>>toSettingsKeyId 6Just SettingsMaxHeaderBlockSize>>>toSettingsKeyId 7Nothing
type Settings = Array SettingsKeyId (Maybe SettingsValue) Source
defaultSettings :: Settings Source
Default settings. All values are Nothing.
toSettings :: [(SettingsKeyId, SettingsValue)] -> Settings Source
>>>toSettings [(SettingsHeaderTableSize,10),(SettingsInitialWindowSize,20),(SettingsHeaderTableSize,30)]array (SettingsHeaderTableSize,SettingsMaxHeaderBlockSize) [(SettingsHeaderTableSize,Just 30),(SettingsEnablePush,Nothing),(SettingsMaxConcurrentStreams,Nothing),(SettingsInitialWindowSize,Just 20),(SettingsMaxFrameSize,Nothing),(SettingsMaxHeaderBlockSize,Nothing)]
fromSettings :: Settings -> [(SettingsKeyId, SettingsValue)] Source
>>>fromSettings $ toSettings [(SettingsHeaderTableSize,10),(SettingsInitialWindowSize,20),(SettingsHeaderTableSize,30)][(SettingsHeaderTableSize,30),(SettingsInitialWindowSize,20)]
Error code
data ErrorCodeId Source
Constructors
Instances
fromErrorCodeId :: ErrorCodeId -> ErrorCode Source
>>>fromErrorCodeId NoError0>>>fromErrorCodeId InadequateSecurity12
toErrorCodeId :: ErrorCode -> ErrorCodeId Source
>>>toErrorCodeId 0NoError>>>toErrorCodeId 0xcInadequateSecurity>>>toErrorCodeId 0xdUnknownErrorCode 13
Frame type
data FrameTypeId Source
fromFrameTypeId :: FrameTypeId -> FrameType Source
>>>fromFrameTypeId FrameData0>>>fromFrameTypeId FrameContinuation9
toFrameTypeId :: FrameType -> Maybe FrameTypeId Source
>>>toFrameTypeId 0Just FrameData>>>toFrameTypeId 9Just FrameContinuation>>>toFrameTypeId 10Nothing
Frame
Constructors
| Frame | |
Fields | |
data FramePayload Source
Constructors
Instances
Stream identifier
newtype StreamIdentifier Source
Constructors
| StreamIdentifier Word32 |
type LastStreamId = StreamIdentifier Source
testExclusive :: Word32 -> Bool Source
setExclusive :: Word32 -> Word32 Source
Flags
type FrameFlags = Word8 Source
testEndStream :: FrameFlags -> Bool Source
>>>testEndStream 0x1True
testAck :: FrameFlags -> Bool Source
>>>testAck 0x1True
testEndHeader :: FrameFlags -> Bool Source
>>>testEndHeader 0x4True
testPadded :: FrameFlags -> Bool Source
>>>testPadded 0x8True
testPriority :: FrameFlags -> Bool Source
>>>testPriority 0x20True
setEndStream :: FrameFlags -> FrameFlags Source
>>>setEndStream 01
setAck :: FrameFlags -> FrameFlags Source
>>>setAck 01
setEndHeader :: FrameFlags -> FrameFlags Source
>>>setEndHeader 04
setPadded :: FrameFlags -> FrameFlags Source
>>>setPadded 08
setPriority :: FrameFlags -> FrameFlags Source
>>>setPriority 032
Payload length
type PayloadLength = Int Source
Types
type WindowSizeIncrement = Word32 Source
type HeaderBlockFragment = ByteString Source
Constructors
| Priority | |
Fields
| |
type Padding = ByteString Source