use crate::kernel::lsm::version::edit::EditType;
use crate::kernel::KernelResult;
use itertools::Itertools;
#[derive(Clone, Copy, Eq, PartialEq, Debug)]
pub(crate) struct VersionMeta {
pub(crate) size_of_disk: u64,
pub(crate) len: usize,
}
impl VersionMeta {
pub(crate) fn statistical_process(
&mut self,
vec_statistics_sst_meta: Vec<EditType>,
) -> KernelResult<()> {
for event_type in vec_statistics_sst_meta.into_iter().sorted() {
match event_type {
EditType::Add(meta) => {
self.size_of_disk += meta.size_of_disk;
self.len += meta.len;
}
EditType::Del(meta) => {
self.size_of_disk -= meta.size_of_disk;
self.len -= meta.len;
}
}
}
Ok(())
}
}