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

Safe Haskell | None
Language | Haskell98

Data.Conduit.Zlib

Contents

- Conduits
- Flushing
- Re-exported from zlib-bindings

Description

Streaming compression and decompression using conduits.

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

Synopsis

- 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)
- data WindowBits :: * = WindowBits Int
- defaultWindowBits :: WindowBits

# Conduits

compress

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).

decompress

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

compressFlush

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

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.

# Re-exported from zlib-bindings

data WindowBits :: *

This specifies the size of the compression window. Larger values of this parameter result in better compression at the expense of higher memory usage.

The compression window size is the value of the the window bits raised to the power 2. The window bits must be in the range `8..15` which corresponds to compression window sizes of 256b to 32Kb. The default is 15 which is also the maximum size.

The total amount of memory used depends on the window bits and the `MemoryLevel`. See the `MemoryLevel` for the details.

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)) |

defaultWindowBits :: WindowBits

The default `WindowBits` is 15 which is also the maximum size.