use crate::codec::Codec;
use crate::error::CoreError;
use omnizip_codecs::Codec as OmnizipCodec;
pub struct SnappyCodec;
impl Codec for SnappyCodec {
fn id(&self) -> u8 {
super::CODEC_SNAPPY
}
fn name(&self) -> &'static str {
"snappy"
}
fn compress(&self, plaintext: &[u8]) -> Result<Vec<u8>, CoreError> {
let inner = omnizip_snappy::SnappyCodec;
inner
.compress(plaintext, omnizip_codecs::CompressionLevel::default())
.map_err(|e| CoreError::Corrupt {
reason: format!("snappy compress failed: {e}"),
})
}
fn decompress(&self, compressed: &[u8], expected_len: u32) -> Result<Vec<u8>, CoreError> {
let inner = omnizip_snappy::SnappyCodec;
inner
.decompress(compressed, expected_len)
.map_err(|e| CoreError::Corrupt {
reason: format!("snappy decompress failed: {e}"),
})
}
}