compression_codecs/zlib/
decoder.rs

1use crate::{Decode, FlateDecoder};
2use compression_core::util::PartialBuffer;
3use std::io::Result;
4
5#[derive(Debug)]
6pub struct ZlibDecoder {
7    inner: FlateDecoder,
8}
9impl Default for ZlibDecoder {
10    fn default() -> Self {
11        Self {
12            inner: FlateDecoder::new(true),
13        }
14    }
15}
16impl ZlibDecoder {
17    pub fn new() -> Self {
18        Self::default()
19    }
20}
21
22impl Decode for ZlibDecoder {
23    fn reinit(&mut self) -> Result<()> {
24        self.inner.reinit()?;
25        Ok(())
26    }
27
28    fn decode(
29        &mut self,
30        input: &mut PartialBuffer<impl AsRef<[u8]>>,
31        output: &mut PartialBuffer<impl AsRef<[u8]> + AsMut<[u8]>>,
32    ) -> Result<bool> {
33        self.inner.decode(input, output)
34    }
35
36    fn flush(
37        &mut self,
38        output: &mut PartialBuffer<impl AsRef<[u8]> + AsMut<[u8]>>,
39    ) -> Result<bool> {
40        self.inner.flush(output)
41    }
42
43    fn finish(
44        &mut self,
45        output: &mut PartialBuffer<impl AsRef<[u8]> + AsMut<[u8]>>,
46    ) -> Result<bool> {
47        self.inner.finish(output)
48    }
49}