Safe Haskell | None |
---|---|
Language | Haskell98 |
Data.Conduit.Zlib
Description
Streaming compression and decompression using conduits.
Parts of this code were taken from zlib-enum and adapted for conduits.
- compress :: (MonadBase base m, PrimMonad base, MonadThrow m) => Int -> WindowBits -> Conduit ByteString m ByteString
- decompress :: (MonadBase base m, PrimMonad base, MonadThrow m) => WindowBits -> Conduit ByteString m ByteString
- gzip :: (MonadThrow m, MonadBase base m, PrimMonad base) => Conduit ByteString m ByteString
- ungzip :: (MonadBase base m, PrimMonad base, MonadThrow m) => Conduit ByteString m ByteString
- compressFlush :: (MonadBase base m, PrimMonad base, MonadThrow m) => Int -> WindowBits -> Conduit (Flush ByteString) m (Flush ByteString)
- decompressFlush :: (MonadBase base m, PrimMonad base, MonadThrow m) => WindowBits -> Conduit (Flush ByteString) m (Flush ByteString)
- multiple :: Monad m => Conduit ByteString m a -> Conduit ByteString m a
- data WindowBits :: * = WindowBits Int
- defaultWindowBits :: WindowBits
Conduits
Arguments
:: (MonadBase base m, PrimMonad base, MonadThrow m) | |
=> Int | Compression level |
-> WindowBits | Zlib parameter (see the zlib-bindings package as well as the zlib C library) |
-> Conduit ByteString m ByteString |
Compress (deflate) a stream of ByteString
s. The WindowBits
also control
the format (zlib vs. gzip).
Arguments
:: (MonadBase base m, PrimMonad base, MonadThrow m) | |
=> WindowBits | Zlib parameter (see the zlib-bindings package as well as the zlib C library) |
-> Conduit ByteString m ByteString |
Decompress (inflate) a stream of ByteString
s. For example:
sourceFile "test.z" $= decompress defaultWindowBits $$ sinkFile "test"
gzip :: (MonadThrow m, MonadBase base m, PrimMonad base) => Conduit ByteString m ByteString #
Gzip compression with default parameters.
ungzip :: (MonadBase base m, PrimMonad base, MonadThrow m) => Conduit ByteString m ByteString #
Gzip decompression with default parameters.
Flushing
Arguments
:: (MonadBase base m, PrimMonad base, MonadThrow m) | |
=> Int | Compression level |
-> WindowBits | Zlib parameter (see the zlib-bindings package as well as the zlib C library) |
-> Conduit (Flush ByteString) m (Flush ByteString) |
Same as compress
, but allows you to explicitly flush the stream.
Arguments
:: (MonadBase base m, PrimMonad base, MonadThrow m) | |
=> WindowBits | Zlib parameter (see the zlib-bindings package as well as the zlib C library) |
-> Conduit (Flush ByteString) m (Flush ByteString) |
Same as decompress
, but allows you to explicitly flush the stream.
Decompression combinators
multiple :: Monad m => Conduit ByteString m a -> Conduit ByteString m a #
The standard decompress
and ungzip
functions will only decompress a
single compressed entity from the stream. This combinator will exhaust the
stream completely of all individual compressed entities. This is useful for
cases where you have a concatenated archive, e.g. cat file1.gz file2.gz >
combined.gz
.
Usage:
sourceFile "combined.gz" $$ multiple ungzip =$ consume
This combinator will not fail on an empty stream. If you want to ensure that at least one compressed entity in the stream exists, consider a usage such as:
sourceFile "combined.gz" $$ (ungzip >> multiple ungzip) =$ consume
Since: 1.1.10