Skip to main content

rns_net/common/
compressor.rs

1use rns_core::buffer::types::Compressor;
2
3pub struct Bzip2Compressor;
4
5impl Compressor for Bzip2Compressor {
6    fn compress(&self, data: &[u8]) -> Option<Vec<u8>> {
7        use bzip2::read::BzEncoder;
8        use bzip2::Compression;
9        use std::io::Read;
10        let mut encoder = BzEncoder::new(data, Compression::default());
11        let mut compressed = Vec::new();
12        encoder.read_to_end(&mut compressed).ok()?;
13        Some(compressed)
14    }
15
16    fn decompress(&self, data: &[u8]) -> Option<Vec<u8>> {
17        use bzip2::read::BzDecoder;
18        use std::io::Read;
19        let mut decoder = BzDecoder::new(data);
20        let mut decompressed = Vec::new();
21        decoder.read_to_end(&mut decompressed).ok()?;
22        Some(decompressed)
23    }
24}