compression_codecs/zlib/
encoder.rs

1use crate::{flate::params::FlateEncoderParams, EncodeV2, FlateEncoder};
2use compression_core::util::{PartialBuffer, WriteBuffer};
3use std::io::Result;
4
5#[derive(Debug)]
6pub struct ZlibEncoder {
7    inner: FlateEncoder,
8}
9
10impl ZlibEncoder {
11    pub fn new(level: FlateEncoderParams) -> Self {
12        Self {
13            inner: FlateEncoder::new(level, true),
14        }
15    }
16
17    pub fn get_ref(&self) -> &FlateEncoder {
18        &self.inner
19    }
20}
21
22impl EncodeV2 for ZlibEncoder {
23    fn encode(
24        &mut self,
25        input: &mut PartialBuffer<&[u8]>,
26        output: &mut WriteBuffer<'_>,
27    ) -> Result<()> {
28        self.inner.encode(input, output)
29    }
30
31    fn flush(&mut self, output: &mut WriteBuffer<'_>) -> Result<bool> {
32        self.inner.flush(output)
33    }
34
35    fn finish(&mut self, output: &mut WriteBuffer<'_>) -> Result<bool> {
36        self.inner.finish(output)
37    }
38}