async_compression/codec/
mod.rs
1use 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 = "lzma")]
17mod lzma;
18#[cfg(feature = "xz")]
19mod xz;
20#[cfg(feature = "xz2")]
21mod xz2;
22#[cfg(feature = "zlib")]
23mod zlib;
24#[cfg(feature = "zstd")]
25mod zstd;
26
27#[cfg(feature = "brotli")]
28pub(crate) use self::brotli::{BrotliDecoder, BrotliEncoder};
29#[cfg(feature = "bzip2")]
30pub(crate) use self::bzip2::{BzDecoder, BzEncoder};
31#[cfg(feature = "deflate")]
32pub(crate) use self::deflate::{DeflateDecoder, DeflateEncoder};
33#[cfg(feature = "deflate64")]
34pub(crate) use self::deflate64::Deflate64Decoder;
35#[cfg(feature = "flate2")]
36pub(crate) use self::flate::{FlateDecoder, FlateEncoder};
37#[cfg(feature = "gzip")]
38pub(crate) use self::gzip::{GzipDecoder, GzipEncoder};
39#[cfg(feature = "lzma")]
40pub(crate) use self::lzma::{LzmaDecoder, LzmaEncoder};
41#[cfg(feature = "xz")]
42pub(crate) use self::xz::{XzDecoder, XzEncoder};
43#[cfg(feature = "xz2")]
44pub(crate) use self::xz2::{Xz2Decoder, Xz2Encoder, Xz2FileFormat};
45#[cfg(feature = "zlib")]
46pub(crate) use self::zlib::{ZlibDecoder, ZlibEncoder};
47#[cfg(feature = "zstd")]
48pub(crate) use self::zstd::{ZstdDecoder, ZstdEncoder};
49
50pub trait Encode {
51 fn encode(
52 &mut self,
53 input: &mut PartialBuffer<impl AsRef<[u8]>>,
54 output: &mut PartialBuffer<impl AsRef<[u8]> + AsMut<[u8]>>,
55 ) -> Result<()>;
56
57 fn flush(&mut self, output: &mut PartialBuffer<impl AsRef<[u8]> + AsMut<[u8]>>)
59 -> Result<bool>;
60
61 fn finish(
63 &mut self,
64 output: &mut PartialBuffer<impl AsRef<[u8]> + AsMut<[u8]>>,
65 ) -> Result<bool>;
66}
67
68pub trait Decode {
69 fn reinit(&mut self) -> Result<()>;
71
72 fn decode(
74 &mut self,
75 input: &mut PartialBuffer<impl AsRef<[u8]>>,
76 output: &mut PartialBuffer<impl AsRef<[u8]> + AsMut<[u8]>>,
77 ) -> Result<bool>;
78
79 fn flush(&mut self, output: &mut PartialBuffer<impl AsRef<[u8]> + AsMut<[u8]>>)
81 -> Result<bool>;
82
83 fn finish(
85 &mut self,
86 output: &mut PartialBuffer<impl AsRef<[u8]> + AsMut<[u8]>>,
87 ) -> Result<bool>;
88}