| Safe Haskell | Safe-Inferred |
|---|---|
| Language | Haskell2010 |
Network.HTTP2.TLS.Server
Contents
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 :: PortNumber1>>>read "1" :: PortNumber1>>>show (12345 :: PortNumber)"12345">>>50000 < (51000 :: PortNumber)True>>>50000 < (52000 :: PortNumber)True>>>50000 + (10000 :: PortNumber)60000
Instances
Arguments
| :: Settings | |
| -> Credentials | |
| -> HostName | |
| -> PortNumber | |
| -> ByteString | ALPN |
| -> (Manager -> IOBackend -> IO a) | |
| -> IO a |
Settings
defaultSettings :: Settings Source #
Default settings.
>>>defaultSettingsSettings {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.