iteratee 0.8.4.3 → 0.8.4.4
raw patch · 5 files changed
+43/−42 lines, 5 filesdep +exceptionsdep −MonadCatchIO-transformers
Dependencies added: exceptions
Dependencies removed: MonadCatchIO-transformers
Files
- iteratee.cabal +3/−3
- src/Data/Iteratee/Base.hs +6/−6
- src/Data/Iteratee/IO.hs +14/−13
- src/Data/Iteratee/IO/Fd.hs +10/−10
- src/Data/Iteratee/IO/Handle.hs +10/−10
iteratee.cabal view
@@ -1,5 +1,5 @@ name: iteratee-version: 0.8.4.3+version: 0.8.4.4 synopsis: Iteratee-based I/O description: The Iteratee monad provides strict, safe, and functional I/O. In addition@@ -48,9 +48,9 @@ build-depends: ListLike >= 1.0 && < 5,- MonadCatchIO-transformers > 0.2 && < 0.4, bytestring >= 0.9 && < 0.11, containers >= 0.2 && < 0.6,+ exceptions >= 0.3 && < 0.5, parallel >= 2 && < 4, transformers >= 0.2 && < 0.4 @@ -98,9 +98,9 @@ build-depends: base, bytestring,+ exceptions, iteratee, ListLike,- MonadCatchIO-transformers, parallel, transformers, mtl >= 2 && < 4,
src/Data/Iteratee/Base.hs view
@@ -40,11 +40,10 @@ import Data.NullPoint import Data.Monoid +import Control.Monad.Catch as CIO import Control.Monad.IO.Class import Control.Monad.Trans.Class-import Control.Monad.CatchIO as CIO import Control.Applicative hiding (empty)-import Control.Exception (SomeException) import qualified Control.Exception as E import Data.Data @@ -162,11 +161,12 @@ instance (MonadIO m, Nullable s, NullPoint s) => MonadIO (Iteratee s m) where liftIO = lift . liftIO -instance (MonadCatchIO m, Nullable s, NullPoint s) =>- MonadCatchIO (Iteratee s m) where+instance (MonadCatch m, Nullable s, NullPoint s) =>+ MonadCatch (Iteratee s m) where m `catch` f = Iteratee $ \od oc -> runIter m od oc `CIO.catch` (\e -> runIter (f e) od oc)- block = ilift block- unblock = ilift unblock+ throwM e = lift $ CIO.throwM e+ mask q = Iteratee $ \od oc -> CIO.mask $ \u -> runIter (q $ ilift u) od oc+ uninterruptibleMask q = Iteratee $ \od oc -> CIO.uninterruptibleMask $ \u -> runIter (q $ ilift u) od oc -- |Send 'EOF' to the @Iteratee@ and disregard the unconsumed part of the -- stream. If the iteratee is in an exception state, that exception is
src/Data/Iteratee/IO.hs view
@@ -37,7 +37,8 @@ import qualified Data.Iteratee.IO.Fd as FD #endif -import Control.Monad.CatchIO+import Control.Monad.Catch+import Control.Monad.IO.Class -- | The default buffer size. defaultBufSize :: Int@@ -47,14 +48,14 @@ #if defined(USE_POSIX) enumFile- :: (MonadCatchIO m, NullPoint s, ReadableChunk s el) =>+ :: (MonadIO m, MonadCatch m, NullPoint s, ReadableChunk s el) => Int -> FilePath -> Enumerator s m a enumFile = FD.enumFile enumFileRandom- :: (MonadCatchIO m, NullPoint s, ReadableChunk s el) =>+ :: (MonadIO m, MonadCatch m, NullPoint s, ReadableChunk s el) => Int -> FilePath -> Enumerator s m a@@ -63,7 +64,7 @@ -- |Process a file using the given Iteratee. This function wraps -- enumFd as a convenience. fileDriver- :: (MonadCatchIO m, NullPoint s, ReadableChunk s el) =>+ :: (MonadIO m, MonadCatch m, NullPoint s, ReadableChunk s el) => Iteratee s m a -> FilePath -> m a@@ -71,7 +72,7 @@ -- |A version of fileDriver with a user-specified buffer size (in elements). fileDriverVBuf- :: (MonadCatchIO m, NullPoint s, ReadableChunk s el) =>+ :: (MonadIO m, MonadCatch m, NullPoint s, ReadableChunk s el) => Int -> Iteratee s m a -> FilePath@@ -81,14 +82,14 @@ -- |Process a file using the given Iteratee. This function wraps -- enumFdRandom as a convenience. fileDriverRandom- :: (MonadCatchIO m, NullPoint s, ReadableChunk s el) =>+ :: (MonadIO m, MonadCatch m, NullPoint s, ReadableChunk s el) => Iteratee s m a -> FilePath -> m a fileDriverRandom = FD.fileDriverRandomFd defaultBufSize fileDriverRandomVBuf- :: (MonadCatchIO m, NullPoint s, ReadableChunk s el) =>+ :: (MonadIO m, MonadCatch m, NullPoint s, ReadableChunk s el) => Int -> Iteratee s m a -> FilePath@@ -103,7 +104,7 @@ -- |Process a file using the given Iteratee. This function wraps -- @enumHandle@ as a convenience. fileDriver ::- (MonadCatchIO m, NullPoint s, ReadableChunk s el) =>+ (MonadIO m, MonadCatch m, NullPoint s, ReadableChunk s el) => Iteratee s m a -> FilePath -> m a@@ -111,7 +112,7 @@ -- |A version of fileDriver with a user-specified buffer size (in elements). fileDriverVBuf ::- (MonadCatchIO m, NullPoint s, ReadableChunk s el) =>+ (MonadIO m, MonadCatch m, NullPoint s, ReadableChunk s el) => Int -> Iteratee s m a -> FilePath@@ -121,14 +122,14 @@ -- |Process a file using the given Iteratee. This function wraps -- @enumRandomHandle@ as a convenience. fileDriverRandom- :: (MonadCatchIO m, NullPoint s, ReadableChunk s el) =>+ :: (MonadIO m, MonadCatch m, NullPoint s, ReadableChunk s el) => Iteratee s m a -> FilePath -> m a fileDriverRandom = H.fileDriverRandomHandle defaultBufSize fileDriverRandomVBuf- :: (MonadCatchIO m, NullPoint s, ReadableChunk s el) =>+ :: (MonadIO m, MonadCatch m, NullPoint s, ReadableChunk s el) => Int -> Iteratee s m a -> FilePath@@ -136,14 +137,14 @@ fileDriverRandomVBuf = H.fileDriverRandomHandle enumFile- :: (MonadCatchIO m, NullPoint s, ReadableChunk s el) =>+ :: (MonadIO m, MonadCatch m, NullPoint s, ReadableChunk s el) => Int -> FilePath -> Enumerator s m a enumFile = H.enumFile enumFileRandom- :: (MonadCatchIO m, NullPoint s, ReadableChunk s el) =>+ :: (MonadIO m, MonadCatch m, NullPoint s, ReadableChunk s el) => Int -> FilePath -> Enumerator s m a
src/Data/Iteratee/IO/Fd.hs view
@@ -30,7 +30,7 @@ import Control.Concurrent (yield) import Control.Exception import Control.Monad-import Control.Monad.CatchIO as CIO+import Control.Monad.Catch as CIO import Control.Monad.IO.Class import Foreign.Ptr@@ -63,7 +63,7 @@ -- over the entire contents of a file, in order, unless stopped by -- the iteratee. In particular, seeking is not supported. enumFd- :: forall s el m a.(NullPoint s, ReadableChunk s el, MonadCatchIO m) =>+ :: forall s el m a.(NullPoint s, ReadableChunk s el, MonadIO m, MonadCatch m) => Int -> Fd -> Enumerator s m a@@ -75,7 +75,7 @@ -- |A variant of enumFd that catches exceptions raised by the @Iteratee@. enumFdCatch- :: forall e s el m a.(IException e, NullPoint s, ReadableChunk s el, MonadCatchIO m)+ :: forall e s el m a.(IException e, NullPoint s, ReadableChunk s el, MonadIO m, MonadCatch m) => Int -> Fd -> (e -> m (Maybe EnumException))@@ -90,7 +90,7 @@ -- |The enumerator of a POSIX File Descriptor: a variation of @enumFd@ that -- supports RandomIO (seek requests). enumFdRandom- :: forall s el m a.(NullPoint s, ReadableChunk s el, MonadCatchIO m) =>+ :: forall s el m a.(NullPoint s, ReadableChunk s el, MonadIO m, MonadCatch m) => Int -> Fd -> Enumerator s m a@@ -103,7 +103,7 @@ . liftIO . myfdSeek fd AbsoluteSeek $ fromIntegral off fileDriver- :: (MonadCatchIO m, ReadableChunk s el) =>+ :: (MonadIO m, MonadCatch m, ReadableChunk s el) => (Int -> Fd -> Enumerator s m a) -> Int -> Iteratee s m a@@ -116,7 +116,7 @@ -- |Process a file using the given @Iteratee@. fileDriverFd- :: (NullPoint s, MonadCatchIO m, ReadableChunk s el) =>+ :: (NullPoint s, MonadIO m, MonadCatch m, ReadableChunk s el) => Int -- ^Buffer size (number of elements) -> Iteratee s m a -> FilePath@@ -125,14 +125,14 @@ -- |A version of fileDriverFd that supports seeking. fileDriverRandomFd- :: (NullPoint s, MonadCatchIO m, ReadableChunk s el) =>+ :: (NullPoint s, MonadIO m, MonadCatch m, ReadableChunk s el) => Int -> Iteratee s m a -> FilePath -> m a fileDriverRandomFd = fileDriver enumFdRandom -enumFile' :: (NullPoint s, MonadCatchIO m, ReadableChunk s el) =>+enumFile' :: (NullPoint s, MonadIO m, MonadCatch m, ReadableChunk s el) => (Int -> Fd -> Enumerator s m a) -> Int -- ^Buffer size -> FilePath@@ -143,14 +143,14 @@ (flip (enumf bufsize) iter) enumFile ::- (NullPoint s, MonadCatchIO m, ReadableChunk s el)+ (NullPoint s, MonadIO m, MonadCatch m, ReadableChunk s el) => Int -- ^Buffer size -> FilePath -> Enumerator s m a enumFile = enumFile' enumFd enumFileRandom ::- (NullPoint s, MonadCatchIO m, ReadableChunk s el)+ (NullPoint s, MonadIO m, MonadCatch m, ReadableChunk s el) => Int -- ^Buffer size -> FilePath -> Enumerator s m a
src/Data/Iteratee/IO/Handle.hs view
@@ -25,7 +25,7 @@ import Control.Exception import Control.Monad-import Control.Monad.CatchIO as CIO+import Control.Monad.Catch as CIO import Control.Monad.IO.Class import Foreign.Ptr@@ -39,7 +39,7 @@ -- Binary Random IO enumerators makeHandleCallback ::- (MonadCatchIO m, NullPoint s, ReadableChunk s el) =>+ (MonadIO m, MonadCatch m, NullPoint s, ReadableChunk s el) => Ptr el -> Int -> Handle@@ -59,7 +59,7 @@ -- the iteratee. In particular, seeking is not supported. -- Data is read into a buffer of the specified size. enumHandle ::- forall s el m a.(NullPoint s, ReadableChunk s el, MonadCatchIO m) =>+ forall s el m a.(NullPoint s, ReadableChunk s el, MonadIO m, MonadCatch m) => Int -- ^Buffer size (number of elements per read) -> Handle -> Enumerator s m a@@ -76,7 +76,7 @@ forall e s el m a.(IException e, NullPoint s, ReadableChunk s el,- MonadCatchIO m) =>+ MonadIO m, MonadCatch m) => Int -- ^Buffer size (number of elements per read) -> Handle -> (e -> m (Maybe EnumException))@@ -92,7 +92,7 @@ -- supports RandomIO (seek requests). -- Data is read into a buffer of the specified size. enumHandleRandom ::- forall s el m a.(NullPoint s, ReadableChunk s el, MonadCatchIO m) =>+ forall s el m a.(NullPoint s, ReadableChunk s el, MonadIO m, MonadCatch m) => Int -- ^ Buffer size (number of elements per read) -> Handle -> Enumerator s m a@@ -107,7 +107,7 @@ -- ---------------------------------------------- -- File Driver wrapper functions. -enumFile' :: (NullPoint s, MonadCatchIO m, ReadableChunk s el) =>+enumFile' :: (NullPoint s, MonadIO m, MonadCatch m, ReadableChunk s el) => (Int -> Handle -> Enumerator s m a) -> Int -- ^Buffer size -> FilePath@@ -118,14 +118,14 @@ (flip (enumf bufsize) iter) enumFile ::- (NullPoint s, MonadCatchIO m, ReadableChunk s el)+ (NullPoint s, MonadIO m, MonadCatch m, ReadableChunk s el) => Int -- ^Buffer size -> FilePath -> Enumerator s m a enumFile = enumFile' enumHandle enumFileRandom ::- (NullPoint s, MonadCatchIO m, ReadableChunk s el)+ (NullPoint s, MonadIO m, MonadCatch m, ReadableChunk s el) => Int -- ^Buffer size -> FilePath -> Enumerator s m a@@ -134,7 +134,7 @@ -- |Process a file using the given @Iteratee@. This function wraps -- @enumHandle@ as a convenience. fileDriverHandle- :: (NullPoint s, MonadCatchIO m, ReadableChunk s el) =>+ :: (NullPoint s, MonadIO m, MonadCatch m, ReadableChunk s el) => Int -- ^Buffer size (number of elements) -> Iteratee s m a -> FilePath@@ -144,7 +144,7 @@ -- |A version of @fileDriverHandle@ that supports seeking. fileDriverRandomHandle- :: (NullPoint s, MonadCatchIO m, ReadableChunk s el) =>+ :: (NullPoint s, MonadIO m, MonadCatch m, ReadableChunk s el) => Int -- ^ Buffer size (number of elements) -> Iteratee s m a -> FilePath