Skip to main content

ferrijs_std/compression/
mod.rs

1// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2// SPDX-License-Identifier: Apache-2.0
3
4
5#[cfg(any(feature = "zstd-c", feature = "zstd-rust"))]
6pub mod zstd {
7    use std::io::{BufReader, Read, Result};
8
9    use zstd::stream::read::{Decoder as ZstdDecoder, Encoder as ZstdEncoder};
10    pub use zstd::DEFAULT_COMPRESSION_LEVEL;
11
12    pub fn encoder<R: Read>(r: R, level: i32) -> Result<ZstdEncoder<'static, BufReader<R>>> {
13        ZstdEncoder::new(r, level)
14    }
15
16    pub fn decoder<R: Read>(r: R) -> Result<ZstdDecoder<'static, BufReader<R>>> {
17        ZstdDecoder::new(r)
18    }
19}
20
21#[cfg(any(feature = "flate2-c", feature = "flate2-rust"))]
22pub mod deflate {
23    use std::io::Read;
24
25    use flate2::read::{DeflateDecoder, DeflateEncoder};
26    pub use flate2::Compression;
27
28    pub fn encoder<R: Read>(r: R, level: Compression) -> DeflateEncoder<R> {
29        DeflateEncoder::new(r, level)
30    }
31
32    pub fn decoder<R: Read>(r: R) -> DeflateDecoder<R> {
33        DeflateDecoder::new(r)
34    }
35}
36
37#[cfg(any(feature = "flate2-c", feature = "flate2-rust"))]
38pub mod gz {
39    use std::io::Read;
40
41    use flate2::read::{GzDecoder, GzEncoder};
42    pub use flate2::Compression;
43
44    pub fn encoder<R: Read>(r: R, level: Compression) -> GzEncoder<R> {
45        GzEncoder::new(r, level)
46    }
47
48    pub fn decoder<R: Read>(r: R) -> GzDecoder<R> {
49        GzDecoder::new(r)
50    }
51}
52
53#[cfg(any(feature = "flate2-c", feature = "flate2-rust"))]
54pub mod zlib {
55    use std::io::Read;
56
57    use flate2::read::{ZlibDecoder, ZlibEncoder};
58    pub use flate2::Compression;
59
60    pub fn encoder<R: Read>(r: R, level: Compression) -> ZlibEncoder<R> {
61        ZlibEncoder::new(r, level)
62    }
63
64    pub fn decoder<R: Read>(r: R) -> ZlibDecoder<R> {
65        ZlibDecoder::new(r)
66    }
67}
68
69#[cfg(feature = "brotli-c")]
70pub mod brotli {
71    use std::io::BufRead;
72
73    use brotlic::{CompressorReader as BrotliEncoder, DecompressorReader as BrotliDecoder};
74
75    pub fn encoder<R: BufRead>(r: R) -> BrotliEncoder<R> {
76        BrotliEncoder::new(r)
77    }
78
79    pub fn decoder<R: BufRead>(r: R) -> BrotliDecoder<R> {
80        BrotliDecoder::new(r)
81    }
82}
83
84#[cfg(all(not(feature = "brotli-c"), feature = "brotli-rust"))]
85pub mod brotli {
86    use std::io::Read;
87
88    use brotli::{CompressorReader as BrotliEncoder, Decompressor as BrotliDecoder};
89
90    pub fn encoder<R: Read>(r: R) -> BrotliEncoder<R> {
91        BrotliEncoder::new(r, 8_096, 11, 22)
92    }
93
94    pub fn decoder<R: Read>(r: R) -> BrotliDecoder<R> {
95        BrotliDecoder::new(r, 8_096)
96    }
97}