pub mod packer;
pub mod stream_packer;
pub use packer::compress_dir;
pub use stream_packer::{compress_stream, ArchiveEntry, StreamCompressor};
pub(crate) enum Blob {
Owned(Vec<u8>),
Revolver { ptr: usize, len: usize, ring_nr: u8, chunk_nr: u64 },
}
unsafe impl Send for Blob {}
impl Blob {
pub(crate) fn as_slice(&self) -> &[u8] {
match self {
Blob::Owned(v) => v,
Blob::Revolver { ptr, len, .. } => unsafe {
std::slice::from_raw_parts(*ptr as *const u8, *len)
},
}
}
pub(crate) fn len(&self) -> usize {
match self {
Blob::Owned(v) => v.len(),
Blob::Revolver { len, .. } => *len,
}
}
}