use crate::OxiArcCodec;
use parquet::errors::ParquetError;
impl parquet::compression::Codec for OxiArcCodec {
fn compress(
&mut self,
input_buf: &[u8],
output_buf: &mut Vec<u8>,
) -> parquet::errors::Result<()> {
let compressed = OxiArcCodec::compress(self, input_buf)
.map_err(|e| ParquetError::General(e.to_string()))?;
output_buf.extend_from_slice(&compressed);
Ok(())
}
fn decompress(
&mut self,
input_buf: &[u8],
output_buf: &mut Vec<u8>,
uncompress_size: Option<usize>,
) -> parquet::errors::Result<usize> {
if let Some(hint) = uncompress_size {
output_buf.reserve(hint);
}
let decompressed = OxiArcCodec::decompress(self, input_buf)
.map_err(|e| ParquetError::General(e.to_string()))?;
let len = decompressed.len();
output_buf.extend_from_slice(&decompressed);
Ok(len)
}
}