Safe Haskell | None |
---|---|

Language | Haskell2010 |

Streamline exports a monad that, given an uniform IO target, emulates character tream IO using high performance block IO.

- data Streamline m a
- withClient :: MonadIO m => (IP -> Int -> Streamline m a) -> BoundedPort -> m a
- withServer :: MonadIO m => Streamline m a -> IP -> Int -> m a
- withTarget :: (MonadIO m, UniformIO a) => Streamline m b -> a -> m b
- send :: MonadIO m => ByteString -> Streamline m ()
- receiveLine :: MonadIO m => Streamline m ByteString
- lazyRecieveLine :: MonadIO m => Streamline m [ByteString]
- lazyReceiveN :: (Functor m, MonadIO m) => Int -> Streamline m [ByteString]
- startTls :: MonadIO m => TlsSettings -> Streamline m ()
- runAttoparsec :: MonadIO m => Parser a -> Streamline m (Either String a)
- runAttoparsecAndReturn :: MonadIO m => Parser a -> Streamline m (ByteString, Either String a)
- isSecure :: Monad m => Streamline m Bool
- setTimeout :: Monad m => Int -> Streamline m ()
- setEcho :: Monad m => Bool -> Streamline m ()

# Documentation

data Streamline m a Source

Monad that emulates character stream IO over block IO.

MonadTrans Streamline | |

Monad m => Monad (Streamline m) | |

Monad m => Functor (Streamline m) | |

(Functor m, Monad m) => Applicative (Streamline m) | |

MonadIO m => MonadIO (Streamline m) |

withClient :: MonadIO m => (IP -> Int -> Streamline m a) -> BoundedPort -> m a Source

withClient f boundPort

Accepts a connection at the bound port, runs f and closes the connection.

withServer :: MonadIO m => Streamline m a -> IP -> Int -> m a Source

withServer f serverIP port

Connects to the given server port, runs f, and closes the connection.

withTarget :: (MonadIO m, UniformIO a) => Streamline m b -> a -> m b Source

withTarget f someIO

Runs f wrapped on a Streamline monad that does IO on nomeIO.

send :: MonadIO m => ByteString -> Streamline m () Source

Sends data over the streamlines an IO target.

receiveLine :: MonadIO m => Streamline m ByteString Source

Receives a line from the streamlined IO target.

lazyRecieveLine :: MonadIO m => Streamline m [ByteString] Source

Receives a line from the streamlined IO target, but breaks the line on reasonably sized chuncks, and reads them lazyly, so that IO can be done in constant memory space.

lazyReceiveN :: (Functor m, MonadIO m) => Int -> Streamline m [ByteString] Source

lazyReceiveN n Receives n bytes of data from the streamlined IO target, but breaks the data on reasonably sized chuncks, and reads them lazyly, so that IO can be done in constant memory space.

startTls :: MonadIO m => TlsSettings -> Streamline m () Source

Wraps the streamlined IO target on TLS, streamlining the new wrapper afterwads.

runAttoparsec :: MonadIO m => Parser a -> Streamline m (Either String a) Source

Runs an Attoparsec parser over the data read from the streamlined IO target. Returning the parser result.

runAttoparsecAndReturn :: MonadIO m => Parser a -> Streamline m (ByteString, Either String a) Source

Runs an Attoparsec parser over the data read from the streamlined IO target. Returns both the parser result and the string consumed by it.

isSecure :: Monad m => Streamline m Bool Source

Indicates whether transport layer security is being used.

setTimeout :: Monad m => Int -> Streamline m () Source

Sets the timeout for the streamlined IO target.

setEcho :: Monad m => Bool -> Streamline m () Source

Sets echo of the streamlines IO target. If echo is set, all the data read an written to the target will be echoed in stdout, with ">" and "<" markers indicating what is read and written.