use std::fmt::Debug;
use crate::protocol::buf::{ByteBuf, ByteBufMut};
use crate::protocol::{DecodeError, EncodeError};
mod gzip;
mod none;
mod snappy;
mod zstd;
mod lz4;
pub use gzip::Gzip;
pub use none::None;
pub use snappy::Snappy;
pub use zstd::Zstd;
pub use lz4::Lz4;
pub(crate) fn compression_err<Error: Debug>(e: Error) -> EncodeError {
error!("Error whilst compressing data: {:?}", e);
EncodeError
}
pub(crate) fn decompression_err<Error: Debug>(e: Error) -> DecodeError {
error!("Error whilst decompressing data: {:?}", e);
DecodeError
}
pub trait Compressor<B: ByteBufMut> {
type BufMut: ByteBufMut;
fn compress<R, F>(buf: &mut B, f: F) -> Result<R, EncodeError>
where
F: FnOnce(&mut Self::BufMut) -> Result<R, EncodeError>;
}
pub trait Decompressor<B: ByteBuf> {
type Buf: ByteBuf;
fn decompress<R, F>(buf: &mut B, f: F) -> Result<R, DecodeError>
where
F: FnOnce(&mut Self::Buf) -> Result<R, DecodeError>;
}