Safe Haskell | None |
---|---|
Language | Haskell2010 |
Lightweight abstraction over an input/output stream.
Synopsis
- data Stream
- makeStream :: IO ( Maybe ByteString ) -> ( Maybe ByteString -> IO ()) -> IO Stream
- makeSocketStream :: Socket -> IO Stream
- makeEchoStream :: IO Stream
- parse :: Stream -> Parser a -> IO ( Maybe a)
- parseBin :: Stream -> Get a -> IO ( Maybe a)
- write :: Stream -> ByteString -> IO ()
- close :: Stream -> IO ()
Documentation
:: IO ( Maybe ByteString ) |
Reading |
-> ( Maybe ByteString -> IO ()) |
Writing |
-> IO Stream |
Resulting stream |
Create a stream from a "receive" and "send" action. The following properties apply:
- Regardless of the provided "receive" and "send" functions, reading and writing from the stream will be thread-safe, i.e. this function will create a receive and write lock to be used internally.
-
Reading from or writing or to a closed
Stream
will always throw an exception, even if the underlying "receive" and "send" functions do not (we do the bookkeeping). - Streams should always be closed.