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