-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Sequence ID IO-Streams -- @package seqid-streams @version 0.3.2 module System.IO.Streams.SequenceId -- | Wrap an InputStream and check for dropped or duplicated -- sequence IDs. -- -- Example: -- --
-- ghci> fromList [1..10 :: SequenceId] >>= sequenceIdInputStream 0 id (fail . show) >>= toList
-- [1,2,3,4,5,6,7,8,9,10]
--
-- ghci> fromList [5..10 :: SequenceId] >>= sequenceIdInputStream 0 id (fail . show) >>= toList
-- *** Exception: user error (SequenceIdError {errType = SequenceIdDropped, lastSeqId = 0, currSeqId = 5})
--
-- ghci> fromList [1..10 :: SequenceId] >>= sequenceIdInputStream 5 id (fail . show) >>= toList
-- *** Exception: user error (SequenceIdError {errType = SequenceIdDuplicated, lastSeqId = 5, currSeqId = 1})
--
sequenceIdInputStream :: SequenceId -> (a -> SequenceId) -> (SequenceIdError -> IO ()) -> InputStream a -> IO (InputStream a)
-- | Wrap an OutputStream to give a sequence ID for each element
-- written.
--
-- Example:
--
-- -- (outStream', getSeqId) <- sequenceIdOutputStream 1 outStream -- return $ contramapM (addSeqId getSeqId) outStream' --sequenceIdOutputStream :: SequenceId -> OutputStream a -> IO (OutputStream a, IO SequenceId)