add changelog and missing file
This commit is contained in:
25
veilid-core/src/veilid_api/serialize_helpers/compression.rs
Normal file
25
veilid-core/src/veilid_api/serialize_helpers/compression.rs
Normal file
@@ -0,0 +1,25 @@
|
||||
use super::*;
|
||||
use lz4_flex::block;
|
||||
|
||||
use crate::apibail_generic;
|
||||
|
||||
pub fn compress_prepend_size(input: &[u8]) -> Vec<u8> {
|
||||
block::compress_prepend_size(input)
|
||||
}
|
||||
|
||||
pub fn decompress_size_prepended(
|
||||
input: &[u8],
|
||||
max_size: Option<usize>,
|
||||
) -> VeilidAPIResult<Vec<u8>> {
|
||||
let (uncompressed_size, input) =
|
||||
block::uncompressed_size(input).map_err(VeilidAPIError::generic)?;
|
||||
if let Some(max_size) = max_size {
|
||||
if uncompressed_size > max_size {
|
||||
apibail_generic!(format!(
|
||||
"decompression exceeded maximum size: {} > {}",
|
||||
uncompressed_size, max_size
|
||||
));
|
||||
}
|
||||
}
|
||||
Ok(block::decompress(input, uncompressed_size).map_err(VeilidAPIError::generic)?)
|
||||
}
|
Reference in New Issue
Block a user