http2-tls-0.0.0: Library for HTTP/2 over TLS
Safe HaskellSafe-Inferred
LanguageHaskell2010

Network.HTTP2.TLS.Server

Synopsis

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.

type HostName = String #

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

Instances details
Storable PortNumber 
Instance details

Defined in Network.Socket.Types

Bounded PortNumber 
Instance details

Defined in Network.Socket.Types

Enum PortNumber 
Instance details

Defined in Network.Socket.Types

Num PortNumber 
Instance details

Defined in Network.Socket.Types

Read PortNumber 
Instance details

Defined in Network.Socket.Types

Integral PortNumber 
Instance details

Defined in Network.Socket.Types

Real PortNumber 
Instance details

Defined in Network.Socket.Types

Show PortNumber 
Instance details

Defined in Network.Socket.Types

Eq PortNumber 
Instance details

Defined in Network.Socket.Types

Ord PortNumber 
Instance details

Defined in Network.Socket.Types

runTLS Source #

Arguments

:: Settings 
-> Credentials 
-> HostName 
-> PortNumber 
-> ByteString

ALPN

-> (Manager -> IOBackend -> IO a) 
-> IO a 

Running a TLS client. IOBackend provides sending and receiving functions with timeout based on Settings.

Settings

data Settings Source #

Instances

Instances details
Show Settings Source # 
Instance details

Defined in Network.HTTP2.TLS.Settings

Eq Settings Source # 
Instance details

Defined in Network.HTTP2.TLS.Settings

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

data IOBackend Source #

Sending and receiving functions. Tiemout is reset when they return. One exception is the slowloris attach prevention. See settingsSlowlorisSize.

send :: IOBackend -> ByteString -> IO () Source #

Sending.

sendMany :: IOBackend -> [ByteString] -> IO () Source #

Sending many.