async_compression/codec/
mod.rs1use crate::util::PartialBuffer;
2use std::io::Result;
3
4#[cfg(feature = "brotli")]
5mod brotli;
6#[cfg(feature = "bzip2")]
7mod bzip2;
8#[cfg(feature = "deflate")]
9mod deflate;
10#[cfg(feature = "deflate64")]
11mod deflate64;
12#[cfg(feature = "flate2")]
13mod flate;
14#[cfg(feature = "gzip")]
15mod gzip;
16#[cfg(feature = "lz4")]
17mod lz4;
18#[cfg(feature = "lzma")]
19mod lzma;
20#[cfg(feature = "xz")]
21mod xz;
22#[cfg(feature = "lzma")]
23mod xz2;
24#[cfg(feature = "zlib")]
25mod zlib;
26#[cfg(feature = "zstd")]
27mod zstd;
28
29#[cfg(feature = "brotli")]
30pub(crate) use self::brotli::{BrotliDecoder, BrotliEncoder};
31#[cfg(feature = "bzip2")]
32pub(crate) use self::bzip2::{BzDecoder, BzEncoder};
33#[cfg(feature = "deflate")]
34pub(crate) use self::deflate::{DeflateDecoder, DeflateEncoder};
35#[cfg(feature = "deflate64")]
36pub(crate) use self::deflate64::Deflate64Decoder;
37#[cfg(feature = "flate2")]
38pub(crate) use self::flate::{FlateDecoder, FlateEncoder};
39#[cfg(feature = "gzip")]
40pub(crate) use self::gzip::{GzipDecoder, GzipEncoder};
41#[cfg(feature = "lz4")]
42pub(crate) use self::lz4::{Lz4Decoder, Lz4Encoder};
43#[cfg(feature = "lzma")]
44pub(crate) use self::lzma::{LzmaDecoder, LzmaEncoder};
45#[cfg(feature = "xz")]
46pub(crate) use self::xz::{XzDecoder, XzEncoder};
47#[cfg(feature = "lzma")]
48pub(crate) use self::xz2::{Xz2Decoder, Xz2Encoder, Xz2FileFormat};
49#[cfg(feature = "zlib")]
50pub(crate) use self::zlib::{ZlibDecoder, ZlibEncoder};
51#[cfg(feature = "zstd")]
52pub(crate) use self::zstd::{ZstdDecoder, ZstdEncoder};
53
54pub trait Encode {
55 fn encode(
56 &mut self,
57 input: &mut PartialBuffer<impl AsRef<[u8]>>,
58 output: &mut PartialBuffer<impl AsRef<[u8]> + AsMut<[u8]>>,
59 ) -> Result<()>;
60
61 fn flush(&mut self, output: &mut PartialBuffer<impl AsRef<[u8]> + AsMut<[u8]>>)
63 -> Result<bool>;
64
65 fn finish(
67 &mut self,
68 output: &mut PartialBuffer<impl AsRef<[u8]> + AsMut<[u8]>>,
69 ) -> Result<bool>;
70}
71
72pub trait Decode {
73 fn reinit(&mut self) -> Result<()>;
75
76 fn decode(
78 &mut self,
79 input: &mut PartialBuffer<impl AsRef<[u8]>>,
80 output: &mut PartialBuffer<impl AsRef<[u8]> + AsMut<[u8]>>,
81 ) -> Result<bool>;
82
83 fn flush(&mut self, output: &mut PartialBuffer<impl AsRef<[u8]> + AsMut<[u8]>>)
85 -> Result<bool>;
86
87 fn finish(
89 &mut self,
90 output: &mut PartialBuffer<impl AsRef<[u8]> + AsMut<[u8]>>,
91 ) -> Result<bool>;
92}