- data Connection
- connectionAddress :: Connection -> Address
- connectionUUID :: Connection -> UUID
- data ConnectionError
- connect :: Mechanism -> Address -> IO Connection
- connectFirst :: [(Mechanism, Address)] -> IO Connection
- connectionClose :: Connection -> IO ()
- send :: Message a => Connection -> (Serial -> IO b) -> a -> IO (Either MarshalError b)
- receive :: Connection -> IO (Either UnmarshalError ReceivedMessage)
Transport is anything which can send and receive bytestrings,
typically via a socket.
Open a connection to some address, using a given authentication
mechanism. If the connection fails, a
ConnectionError will be thrown.
Try to open a connection to various addresses, returning the first connection which could be successfully opened.
Close an open connection. Once closed, the
Connection is no longer
valid and must not be used.
Send a single message, with a generated
Serial. The second parameter
exists to prevent race conditions when registering a reply handler; it
receives the serial the message will be sent with, before it's actually
Only one message may be sent at a time; if multiple threads attempt to send messages in parallel, one will block until after the other has finished.
Receive the next message from the connection, blocking until one is available.
Only one message may be received at a time; if multiple threads attempt to receive messages in parallel, one will block until after the other has finished.