llm_cost_ops/compression/
mod.rs

1// Compression module for supporting gzip/brotli encoding
2
3pub mod types;
4pub mod codec;
5pub mod middleware;
6pub mod config;
7pub mod metrics;
8
9pub use types::{CompressionAlgorithm, CompressionLevel, ContentEncoding, CompressionStats};
10pub use codec::{Compressor, compress, decompress};
11pub use middleware::{CompressionLayer, compression_layer};
12pub use config::CompressionConfig;
13pub use metrics::CompressionMetrics;
14
15/// Compression error types
16#[derive(Debug, thiserror::Error)]
17pub enum CompressionError {
18    #[error("Compression failed: {0}")]
19    CompressionFailed(String),
20
21    #[error("Decompression failed: {0}")]
22    DecompressionFailed(String),
23
24    #[error("Unsupported algorithm: {0}")]
25    UnsupportedAlgorithm(String),
26
27    #[error("Invalid compression level: {0}")]
28    InvalidLevel(String),
29
30    #[error("IO error: {0}")]
31    IoError(#[from] std::io::Error),
32
33    #[error("Invalid encoding: {0}")]
34    InvalidEncoding(String),
35
36    #[error("Size limit exceeded: {0}")]
37    SizeLimitExceeded(String),
38}
39
40impl From<CompressionError> for crate::domain::CostOpsError {
41    fn from(err: CompressionError) -> Self {
42        crate::domain::CostOpsError::Internal(err.to_string())
43    }
44}
45
46pub type CompressionResult<T> = Result<T, CompressionError>;