Portability | portable |
---|---|
Stability | experimental |
Maintainer | Bryan O'Sullivan <bos@mailrank.com> |
Low-level network connection management.
- connect :: Client -> IO Connection
- disconnect :: Connection -> IO ()
- defaultClient :: Client
- makeClientID :: IO ClientID
- exchange :: Exchange req resp => Connection -> req -> IO resp
- exchangeMaybe :: Exchange req resp => Connection -> req -> IO (Maybe resp)
- exchange_ :: Request req => Connection -> req -> IO ()
- pipeline :: Exchange req resp => Connection -> [req] -> IO [resp]
- pipelineMaybe :: Exchange req resp => Connection -> [req] -> IO [Maybe resp]
- pipeline_ :: Request req => Connection -> [req] -> IO ()
Connection management
connect :: Client -> IO ConnectionSource
Connect to a server.
disconnect :: Connection -> IO ()Source
Disconnect from a server.
Client configuration
Default client configuration. Talks to localhost, port 8087, with a randomly chosen client ID.
makeClientID :: IO ClientIDSource
Generate a random client ID.
Requests and responses
Sending and receiving
exchange :: Exchange req resp => Connection -> req -> IO respSource
Send a request to the server, and receive its response.
exchangeMaybe :: Exchange req resp => Connection -> req -> IO (Maybe resp)Source
Send a request to the server, and receive its response (which may be empty).
exchange_ :: Request req => Connection -> req -> IO ()Source
Send a request to the server, and receive its response, but do not decode it.
Pipelining many requests
pipeline :: Exchange req resp => Connection -> [req] -> IO [resp]Source
Send a series of requests to the server, back to back, and receive a response for each request sent. The sending and receiving will be overlapped if possible, to improve concurrency and reduce latency.
pipelineMaybe :: Exchange req resp => Connection -> [req] -> IO [Maybe resp]Source
Send a series of requests to the server, back to back, and receive a response for each request sent (the responses may be empty). The sending and receiving will be overlapped if possible, to improve concurrency and reduce latency.