potoki-zlib-0.3: library/Potoki/Zlib/Transform.hs
module Potoki.Zlib.Transform
(
decompress
)
where
import Potoki.Zlib.Prelude
import qualified Potoki.Zlib.Fetch as Z
import Potoki.Core.Transform (Transform(..))
import qualified Codec.Compression.Zlib.Internal as I
import qualified Acquire.Acquire as A
decompress :: Transform ByteString (Either I.DecompressError ByteString)
decompress =
Transform $ \oldFetchIO -> A.Acquire $ do
initChunksRef <- newIORef []
decompRef <- newIORef (I.decompressIO I.gzipFormat I.defaultDecompressParams)
let
fetch =
Z.runGzip initChunksRef decompRef oldFetchIO
kill =
return ()
return (fetch, kill)