Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Synopsis
- run :: Settings -> Credentials -> HostName -> PortNumber -> Server -> IO ()
- runH2C :: Settings -> HostName -> PortNumber -> Server -> IO ()
- type Server = Request -> Aux -> (Response -> [PushPromise] -> IO ()) -> IO ()
- type HostName = String
- data PortNumber
- runTLS :: Settings -> Credentials -> HostName -> PortNumber -> ByteString -> (Manager -> IOBackend -> IO a) -> IO a
- data Settings
- defaultSettings :: Settings
- settingsTimeout :: Settings -> Int
- settingsSendBufferSize :: Settings -> Int
- settingsSlowlorisSize :: Settings -> Int
- settingReadBufferSize :: Settings -> Int
- settingReadBufferLowerLimit :: Settings -> Int
- data IOBackend
- send :: IOBackend -> ByteString -> IO ()
- sendMany :: IOBackend -> [ByteString] -> IO ()
- recv :: IOBackend -> IO ByteString
Runners
run :: Settings -> Credentials -> HostName -> PortNumber -> Server -> IO () Source #
Running an HTTP/2 client over TLS (over TCP). ALPN is "h2".
runH2C :: Settings -> HostName -> PortNumber -> Server -> IO () Source #
Running an HTTP/2 client over TCP.
type Server = Request -> Aux -> (Response -> [PushPromise] -> IO ()) -> IO () #
Server type. Server takes a HTTP request, should generate a HTTP response and push promises, then should give them to the sending function. The sending function would throw exceptions so that they can be logged.
Either a host name e.g., "haskell.org"
or a numeric host
address string consisting of a dotted decimal IPv4 address or an
IPv6 address e.g., "192.168.0.1"
.
data PortNumber #
Port number.
Use the Num
instance (i.e. use a literal) to create a
PortNumber
value.
>>>
1 :: PortNumber
1>>>
read "1" :: PortNumber
1>>>
show (12345 :: PortNumber)
"12345">>>
50000 < (51000 :: PortNumber)
True>>>
50000 < (52000 :: PortNumber)
True>>>
50000 + (10000 :: PortNumber)
60000
Instances
:: Settings | |
-> Credentials | |
-> HostName | |
-> PortNumber | |
-> ByteString | ALPN |
-> (Manager -> IOBackend -> IO a) | |
-> IO a |
Settings
Instances
defaultSettings :: Settings Source #
Default settings.
>>>
defaultSettings
Settings {settingsTimeout = 30, settingsSendBufferSize = 4096, settingsSlowlorisSize = 50, settingReadBufferSize = 16384, settingReadBufferLowerLimit = 2048}
settingsTimeout :: Settings -> Int Source #
Timeout in seconds. (All)
settingsSendBufferSize :: Settings -> Int Source #
Send buffer size. (H2 and H2c)
settingsSlowlorisSize :: Settings -> Int Source #
If the size of receiving data is less than or equal, the timeout is not reset. (All)
settingReadBufferSize :: Settings -> Int Source #
When the size of a read buffer is lower than this limit, the buffer is thrown awany (and is eventually freed). Then a new buffer is allocated. (All)
settingReadBufferLowerLimit :: Settings -> Int Source #
The allocation size for a read buffer. (All)
IO backend
Sending and receiving functions.
Tiemout is reset when they return.
One exception is the slowloris attach prevention.
See settingsSlowlorisSize
.