uniform-io-1.0.0.0: Uniform IO over files, network, anything.

Safe HaskellNone
LanguageHaskell2010

System.IO.Uniform.Streamline

Description

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

Synopsis

Documentation

data Streamline m a Source #

Monad that emulates character stream IO over block IO.

Instances

MonadTrans Streamline Source # 

Methods

lift :: Monad m => m a -> Streamline m a #

Monad m => Monad (Streamline m) Source # 

Methods

(>>=) :: Streamline m a -> (a -> Streamline m b) -> Streamline m b #

(>>) :: Streamline m a -> Streamline m b -> Streamline m b #

return :: a -> Streamline m a #

fail :: String -> Streamline m a #

Monad m => Functor (Streamline m) Source # 

Methods

fmap :: (a -> b) -> Streamline m a -> Streamline m b #

(<$) :: a -> Streamline m b -> Streamline m a #

(Functor m, Monad m) => Applicative (Streamline m) Source # 

Methods

pure :: a -> Streamline m a #

(<*>) :: Streamline m (a -> b) -> Streamline m a -> Streamline m b #

(*>) :: Streamline m a -> Streamline m b -> Streamline m b #

(<*) :: Streamline m a -> Streamline m b -> Streamline m a #

MonadIO m => MonadIO (Streamline m) Source # 

Methods

liftIO :: IO a -> Streamline m a #

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.