msg_wire/compression/
snappy.rs1use bytes::Bytes;
2use snap::raw::{Decoder, Encoder};
3use std::io;
4
5use super::{CompressionType, Compressor, Decompressor};
6
7#[derive(Default)]
9pub struct SnappyCompressor;
10
11impl Compressor for SnappyCompressor {
12 fn compression_type(&self) -> CompressionType {
13 CompressionType::Snappy
14 }
15
16 fn compress(&self, data: &[u8]) -> Result<Bytes, io::Error> {
17 let mut encoder = Encoder::new();
18
19 let bytes = encoder.compress_vec(data)?;
20
21 Ok(Bytes::from(bytes))
22 }
23}
24
25#[derive(Debug, Default)]
26pub struct SnappyDecompressor;
27
28impl Decompressor for SnappyDecompressor {
29 fn decompress(&self, data: &[u8]) -> Result<Bytes, io::Error> {
30 let mut decoder = Decoder::new();
31
32 let bytes = decoder.decompress_vec(data)?;
33
34 Ok(Bytes::from(bytes))
35 }
36}