conduit-extra-1.1.13.3: Batteries included conduit: adapters for common libraries.

Safe HaskellNone
LanguageHaskell98

Data.Conduit.Zlib

Contents

Description

Streaming compression and decompression using conduits.

Parts of this code were taken from zlib-enum and adapted for conduits.

Synopsis

Conduits

compress Source

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 ByteStrings. The WindowBits also control the format (zlib vs. gzip).

decompress Source

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 ByteStrings. For example:

   sourceFile "test.z" $= decompress defaultWindowBits $$ sinkFile "test"

gzip :: (MonadThrow m, MonadBase base m, PrimMonad base) => Conduit ByteString m ByteString Source

Gzip compression with default parameters.

ungzip :: (MonadBase base m, PrimMonad base, MonadThrow m) => Conduit ByteString m ByteString Source

Gzip decompression with default parameters.

Flushing

compressFlush Source

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.

decompressFlush Source

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 Source

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

Re-exported from zlib-bindings

data WindowBits :: *

Constructors

WindowBits Int 

Instances

Eq WindowBits 
Ord WindowBits 
Show WindowBits 
Generic WindowBits 
type Rep WindowBits = D1 D1WindowBits ((:+:) (C1 C1_0WindowBits (S1 NoSelector (Rec0 Int))) (C1 C1_1WindowBits U1))