agentic_workflow/format/
compression.rs1#[cfg(feature = "format")]
2use lz4_flex::{compress_prepend_size, decompress_size_prepended};
3
4use crate::types::{WorkflowError, WorkflowResult};
5
6#[cfg(feature = "format")]
8pub fn compress(data: &[u8]) -> Vec<u8> {
9 compress_prepend_size(data)
10}
11
12#[cfg(feature = "format")]
14pub fn decompress(data: &[u8]) -> WorkflowResult<Vec<u8>> {
15 decompress_size_prepended(data)
16 .map_err(|e| WorkflowError::FormatError(format!("Decompression failed: {}", e)))
17}
18
19#[cfg(not(feature = "format"))]
21pub fn compress(data: &[u8]) -> Vec<u8> {
22 data.to_vec()
23}
24
25#[cfg(not(feature = "format"))]
27pub fn decompress(data: &[u8]) -> WorkflowResult<Vec<u8>> {
28 Ok(data.to_vec())
29}
30
31#[cfg(test)]
32mod tests {
33 use super::*;
34
35 #[test]
36 fn test_compress_decompress_roundtrip() {
37 let original = b"Hello, AgenticWorkflow! This is a test of compression.";
38 let compressed = compress(original);
39 let decompressed = decompress(&compressed).unwrap();
40 assert_eq!(decompressed, original);
41 }
42}