Safe Haskell | None |
---|
Snap.Iteratee
Contents
Description
Snap Framework type aliases and utilities for iteratees. Note that as a
convenience, this module also exports everything from Data.Enumerator
in
the enumerator
library.
- enumBS :: Monad m => ByteString -> Enumerator ByteString m a
- enumLBS :: Monad m => ByteString -> Enumerator ByteString m a
- enumBuilder :: Monad m => Builder -> Enumerator Builder m a
- enumFile :: FilePath -> Enumerator ByteString IO a
- enumFilePartial :: FilePath -> (Int64, Int64) -> Enumerator ByteString IO a
- data InvalidRangeException
- joinI' :: Monad m => Iteratee a m (Step a m b) -> Iteratee a m b
- countBytes :: Monad m => forall a. Iteratee ByteString m a -> Iteratee ByteString m (a, Int64)
- drop' :: Monad m => Int64 -> Iteratee ByteString m ()
- mkIterateeBuffer :: IO (ForeignPtr CChar)
- unsafeBufferIterateeWithBuffer :: ForeignPtr CChar -> Iteratee ByteString IO a -> Iteratee ByteString IO a
- unsafeBufferIteratee :: Iteratee ByteString IO a -> IO (Iteratee ByteString IO a)
- take :: Monad m => Int -> Enumeratee ByteString ByteString m a
- drop :: Monad m => Int -> Iteratee ByteString m ()
- takeExactly :: Monad m => Int64 -> Enumeratee ByteString ByteString m a
- takeNoMoreThan :: Monad m => Int64 -> Enumeratee ByteString ByteString m a
- skipToEof :: Monad m => Iteratee a m ()
- mapEnum :: Monad m => (aOut -> aIn) -> (aIn -> aOut) -> Enumerator aIn m a -> Enumerator aOut m a
- mapIter :: Monad m => (aOut -> aIn) -> (aIn -> aOut) -> Iteratee aIn m a -> Iteratee aOut m a
- enumBuilderToByteString :: MonadIO m => Enumeratee Builder ByteString m a
- unsafeEnumBuilderToByteString :: MonadIO m => Enumeratee Builder ByteString m a
- enumByteStringToBuilder :: MonadIO m => Enumeratee ByteString Builder m a
- killIfTooSlow :: MonadIO m => m () -> Double -> Int -> Iteratee ByteString m a -> Iteratee ByteString m a
- data TooManyBytesReadException
- data ShortWriteException
- data RateTooSlowException
- data Stream a
- data Step a m b
- newtype Iteratee a m b = Iteratee {
- runIteratee :: m (Step a m b)
- type Enumerator a m b = Step a m b -> Iteratee a m b
- type Enumeratee ao ai m b = Step ai m b -> Iteratee ao m (Step ai m b)
- returnI :: Monad m => Step a m b -> Iteratee a m b
- yield :: Monad m => b -> Stream a -> Iteratee a m b
- continue :: Monad m => (Stream a -> Iteratee a m b) -> Iteratee a m b
- throwError :: (Monad m, Exception e) => e -> Iteratee a m b
- catchError :: Monad m => Iteratee a m b -> (SomeException -> Iteratee a m b) -> Iteratee a m b
- liftI :: Monad m => (Stream a -> Step a m b) -> Iteratee a m b
- (>>==) :: Monad m => Iteratee a m b -> (Step a m b -> Iteratee a' m b') -> Iteratee a' m b'
- (==<<) :: Monad m => (Step a m b -> Iteratee a' m b') -> Iteratee a m b -> Iteratee a' m b'
- ($$) :: Monad m => (Step a m b -> Iteratee a' m b') -> Iteratee a m b -> Iteratee a' m b'
- (>==>) :: Monad m => Enumerator a m b -> (Step a m b -> Iteratee a' m b') -> Step a m b -> Iteratee a' m b'
- (<==<) :: Monad m => (Step a m b -> Iteratee a' m b') -> Enumerator a m b -> Step a m b -> Iteratee a' m b'
- ($=) :: Monad m => Enumerator ao m (Step ai m b) -> Enumeratee ao ai m b -> Enumerator ai m b
- (=$) :: Monad m => Enumeratee ao ai m b -> Iteratee ai m b -> Iteratee ao m b
- run :: Monad m => Iteratee a m b -> m (Either SomeException b)
- run_ :: Monad m => Iteratee a m b -> m b
- consume :: Monad m => Iteratee a m [a]
- isEOF :: Monad m => Iteratee a m Bool
- liftTrans :: (Monad m, MonadTrans t, Monad (t m)) => Iteratee a m b -> Iteratee a (t m) b
- liftFoldL :: Monad m => (b -> a -> b) -> b -> Iteratee a m b
- liftFoldL' :: Monad m => (b -> a -> b) -> b -> Iteratee a m b
- liftFoldM :: Monad m => (b -> a -> m b) -> b -> Iteratee a m b
- printChunks :: (MonadIO m, Show a) => Bool -> Iteratee a m ()
- head :: Monad m => Iteratee a m (Maybe a)
- peek :: Monad m => Iteratee a m (Maybe a)
- enumEOF :: Monad m => Enumerator a m b
- enumList :: Monad m => Integer -> [a] -> Enumerator a m b
- concatEnums :: Monad m => [Enumerator a m b] -> Enumerator a m b
- checkDone :: Monad m => ((Stream a -> Iteratee a m b) -> Iteratee a' m (Step a m b)) -> Enumeratee a' a m b
- map :: Monad m => (ao -> ai) -> Enumeratee ao ai m b
- sequence :: Monad m => Iteratee ao m ai -> Enumeratee ao ai m b
- joinI :: Monad m => Iteratee a m (Step a' m b) -> Iteratee a m b
Enumerators
enumBS :: Monad m => ByteString -> Enumerator ByteString m aSource
Enumerates a strict bytestring.
enumLBS :: Monad m => ByteString -> Enumerator ByteString m aSource
Enumerates a lazy bytestring.
enumBuilder :: Monad m => Builder -> Enumerator Builder m aSource
Enumerates a Builder.
enumFile :: FilePath -> Enumerator ByteString IO aSource
enumFilePartial :: FilePath -> (Int64, Int64) -> Enumerator ByteString IO aSource
data InvalidRangeException Source
Instances
Show InvalidRangeException | |
Typeable InvalidRangeException | |
Exception InvalidRangeException |
Iteratee utilities
countBytes :: Monad m => forall a. Iteratee ByteString m a -> Iteratee ByteString m (a, Int64)Source
Wraps an Iteratee
, counting the number of bytes consumed by it.
drop' :: Monad m => Int64 -> Iteratee ByteString m ()Source
Skip n elements of the stream, if there are that many
mkIterateeBuffer :: IO (ForeignPtr CChar)Source
Creates a buffer to be passed into unsafeBufferIterateeWithBuffer
.
unsafeBufferIterateeWithBuffer :: ForeignPtr CChar -> Iteratee ByteString IO a -> Iteratee ByteString IO aSource
Buffers an iteratee, "unsafely". Here we use a fixed binary buffer which we'll re-use, meaning that if you hold on to any of the bytestring data passed into your iteratee (instead of, let's say, shoving it right out a socket) it'll get changed out from underneath you, breaking referential transparency. Use with caution!
This version accepts a buffer created by mkIterateeBuffer
.
unsafeBufferIteratee :: Iteratee ByteString IO a -> IO (Iteratee ByteString IO a)Source
Buffers an iteratee, "unsafely". Here we use a fixed binary buffer which we'll re-use, meaning that if you hold on to any of the bytestring data passed into your iteratee (instead of, let's say, shoving it right out a socket) it'll get changed out from underneath you, breaking referential transparency. Use with caution!
take :: Monad m => Int -> Enumeratee ByteString ByteString m aSource
drop :: Monad m => Int -> Iteratee ByteString m ()Source
Skip n elements of the stream, if there are that many
takeExactly :: Monad m => Int64 -> Enumeratee ByteString ByteString m aSource
Reads n bytes from a stream and applies the given iteratee to the stream of the read elements. Reads exactly n bytes, and if the stream is short propagates an error.
takeNoMoreThan :: Monad m => Int64 -> Enumeratee ByteString ByteString m aSource
mapEnum :: Monad m => (aOut -> aIn) -> (aIn -> aOut) -> Enumerator aIn m a -> Enumerator aOut m aSource
enumBuilderToByteString :: MonadIO m => Enumeratee Builder ByteString m aSource
unsafeEnumBuilderToByteString :: MonadIO m => Enumeratee Builder ByteString m aSource
enumByteStringToBuilder :: MonadIO m => Enumeratee ByteString Builder m aSource
data TooManyBytesReadException Source
Instances
Show TooManyBytesReadException | |
Typeable TooManyBytesReadException | |
Exception TooManyBytesReadException |
data ShortWriteException Source
Instances
Show ShortWriteException | |
Typeable ShortWriteException | |
Exception ShortWriteException |
data RateTooSlowException Source
Instances
Show RateTooSlowException | |
Typeable RateTooSlowException | |
Exception RateTooSlowException |
Re-export types and functions from Data.Enumerator
data Stream a
newtype Iteratee a m b
Constructors
Iteratee | |
Fields
|
type Enumerator a m b = Step a m b -> Iteratee a m b
type Enumeratee ao ai m b = Step ai m b -> Iteratee ao m (Step ai m b)
Primitives
Combinators
These are common patterns which occur whenever iteratees are being defined.
throwError :: (Monad m, Exception e) => e -> Iteratee a m b
catchError :: Monad m => Iteratee a m b -> (SomeException -> Iteratee a m b) -> Iteratee a m b
(>==>) :: Monad m => Enumerator a m b -> (Step a m b -> Iteratee a' m b') -> Step a m b -> Iteratee a' m b'
(<==<) :: Monad m => (Step a m b -> Iteratee a' m b') -> Enumerator a m b -> Step a m b -> Iteratee a' m b'
($=) :: Monad m => Enumerator ao m (Step ai m b) -> Enumeratee ao ai m b -> Enumerator ai m b
(=$) :: Monad m => Enumeratee ao ai m b -> Iteratee ai m b -> Iteratee ao m b
Iteratees
liftFoldL' :: Monad m => (b -> a -> b) -> b -> Iteratee a m b
printChunks :: (MonadIO m, Show a) => Bool -> Iteratee a m ()
Enumerators
enumEOF :: Monad m => Enumerator a m b
enumList :: Monad m => Integer -> [a] -> Enumerator a m b
concatEnums :: Monad m => [Enumerator a m b] -> Enumerator a m b
Enumeratees
checkDone :: Monad m => ((Stream a -> Iteratee a m b) -> Iteratee a' m (Step a m b)) -> Enumeratee a' a m b
map :: Monad m => (ao -> ai) -> Enumeratee ao ai m b
sequence :: Monad m => Iteratee ao m ai -> Enumeratee ao ai m b