use crate::shard::Shard;
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CompressedShard {
pub shard_id: [u8; 32],
pub data: Vec<u8>,
pub stats: CompressionStats,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct CompressionStats {
pub original_size: usize,
pub compressed_size: usize,
pub patterns_found: usize,
pub patterns_applied: usize,
}
pub struct ZkcCompressor;
impl ZkcCompressor {
pub fn new() -> Self {
ZkcCompressor
}
pub fn compress(&self, shard: &Shard) -> crate::Result<CompressedShard> {
Ok(CompressedShard {
shard_id: shard.id,
data: shard.data.clone(),
stats: CompressionStats {
original_size: shard.data.len(),
compressed_size: shard.data.len(),
..Default::default()
},
})
}
}
impl Default for ZkcCompressor {
fn default() -> Self {
Self::new()
}
}