http2-5.3.9: HTTP/2 library

Safe Haskell | None
Language | Haskell2010

Network.HTTP2.Client.Internal

Contents

- Low level

Synopsis

- newtype Request = Request OutObj
- newtype Response = Response InpObj
- data ClientConfig = ClientConfig {
  - scheme :: Scheme
  - authority :: Authority
  - cacheLimit :: Int
  - connectionWindowSize :: WindowSize
  - settings :: Settings
  }
- data Settings = Settings {
  - headerTableSize :: Int
  - enablePush :: Bool
  - maxConcurrentStreams :: Maybe Int
  - initialWindowSize :: WindowSize
  - maxFrameSize :: Int
  - maxHeaderListSize :: Maybe Int
  - pingRateLimit :: Int
  - emptyFrameRateLimit :: Int
  - settingsRateLimit :: Int
  - rstRateLimit :: Int
  }
- data Aux = Aux {
  - auxPossibleClientStreams :: IO Int
  }
- data Stream
- data ClientIO = ClientIO {
  - cioMySockAddr :: SockAddr
  - cioPeerSockAddr :: SockAddr
  - cioWriteRequest :: Request -> IO (StreamId, Stream)
  - cioReadResponse :: Stream -> IO Response
  - cioWriteBytes :: ByteString -> IO ()
  - cioCreateStream :: IO (StreamId, Stream)
  }
- runIO :: ClientConfig -> Config -> (ClientIO -> IO (IO a)) -> IO a

# Documentation

newtype Request #

Request from client.

Constructors

Request OutObj |

#### Instances

Instances details

Show Request |
Instance details Defined in Network.HTTP.Semantics.Client.Internal Methods showsPrec :: Int -> Request -> ShowS # show :: Request -> String # showList :: [Request] -> ShowS #

newtype Response #

Response from server.

Constructors

Response InpObj |

#### Instances

Instances details

Show Response |
Instance details Defined in Network.HTTP.Semantics.Client.Internal Methods showsPrec :: Int -> Response -> ShowS # show :: Response -> String # showList :: [Response] -> ShowS #

data ClientConfig #

Client configuration

Constructors

ClientConfig |
Fields scheme :: Scheme https or http authority :: Authority Server name cacheLimit :: Int The maximum number of incoming streams on the net connectionWindowSize :: WindowSize The window size of connection. settings :: Settings Settings

#### Instances

Instances details

Show ClientConfig # |
Instance details Defined in Network.HTTP2.Client.Run Methods showsPrec :: Int -> ClientConfig -> ShowS # show :: ClientConfig -> String # showList :: [ClientConfig] -> ShowS #
Eq ClientConfig # |
Instance details Defined in Network.HTTP2.Client.Run Methods (==) :: ClientConfig -> ClientConfig -> Bool # (/=) :: ClientConfig -> ClientConfig -> Bool #

data Settings #

HTTP/2 settings. See https://datatracker.ietf.org/doc/html/rfc9113#name-defined-settings.

Constructors

Settings |
Fields headerTableSize :: Int SETTINGS_HEADER_TABLE_SIZE enablePush :: Bool SETTINGS_ENABLE_PUSH maxConcurrentStreams :: Maybe Int SETTINGS_MAX_CONCURRENT_STREAMS initialWindowSize :: WindowSize SETTINGS_INITIAL_WINDOW_SIZE maxFrameSize :: Int SETTINGS_MAX_FRAME_SIZE maxHeaderListSize :: Maybe Int SETTINGS_MAX_HEADER_LIST_SIZE pingRateLimit :: Int Maximum number of pings allowed per second (CVE-2019-9512) emptyFrameRateLimit :: Int Maximum number of empty data frames allowed per second (CVE-2019-9518) settingsRateLimit :: Int Maximum number of settings frames allowed per second (CVE-2019-9515) rstRateLimit :: Int Maximum number of reset frames allowed per second (CVE-2023-44487)

#### Instances

Instances details

Show Settings # |
Instance details Defined in Network.HTTP2.H2.Settings Methods showsPrec :: Int -> Settings -> ShowS # show :: Settings -> String # showList :: [Settings] -> ShowS #
Eq Settings # |
Instance details Defined in Network.HTTP2.H2.Settings Methods (==) :: Settings -> Settings -> Bool # (/=) :: Settings -> Settings -> Bool #

data Aux #

Additional information.

Constructors

Aux |
Fields auxPossibleClientStreams :: IO Int How many streams can be created without blocking.

# Low level

data Stream #

#### Instances

Instances details

Show Stream # |
Instance details Defined in Network.HTTP2.H2.Types Methods showsPrec :: Int -> Stream -> ShowS # show :: Stream -> String # showList :: [Stream] -> ShowS #

data ClientIO #

Constructors

ClientIO |
Fields cioMySockAddr :: SockAddr cioPeerSockAddr :: SockAddr cioWriteRequest :: Request -> IO (StreamId, Stream) cioReadResponse :: Stream -> IO Response cioWriteBytes :: ByteString -> IO () cioCreateStream :: IO (StreamId, Stream)

runIO :: ClientConfig -> Config -> (ClientIO -> IO (IO a)) -> IO a #

Launching a receiver and a sender.