Safe Haskell | Safe-Inferred |
---|---|
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.