zvault/src/repository/info.rs

46 lines
1.4 KiB
Rust
Raw Normal View History

2017-03-21 10:28:11 +00:00
use ::prelude::*;
2017-03-15 07:27:27 +00:00
pub struct RepositoryInfo {
pub bundle_count: usize,
pub encoded_data_size: u64,
pub raw_data_size: u64,
pub compression_ratio: f32,
pub chunk_count: usize,
2017-03-15 20:53:05 +00:00
pub avg_chunk_size: f32,
pub index_size: usize,
pub index_capacity: usize,
pub index_entries: usize
2017-03-15 07:27:27 +00:00
}
impl Repository {
#[inline]
pub fn list_bundles(&self) -> Vec<&BundleInfo> {
2017-03-22 11:27:17 +00:00
self.bundles.list_bundles()
2017-03-15 07:27:27 +00:00
}
2017-03-24 11:52:01 +00:00
#[inline]
pub fn get_bundle(&self, bundle: &BundleId) -> Option<&BundleInfo> {
self.bundles.get_bundle_info(bundle)
}
2017-03-15 07:27:27 +00:00
pub fn info(&self) -> RepositoryInfo {
let bundles = self.list_bundles();
let encoded_data_size = bundles.iter().map(|b| b.encoded_size as u64).sum();
let raw_data_size = bundles.iter().map(|b| b.raw_size as u64).sum();
let chunk_count = bundles.iter().map(|b| b.chunk_count).sum();
RepositoryInfo {
bundle_count: bundles.len(),
chunk_count: chunk_count,
encoded_data_size: encoded_data_size,
raw_data_size: raw_data_size,
compression_ratio: encoded_data_size as f32 / raw_data_size as f32,
2017-03-15 20:53:05 +00:00
avg_chunk_size: raw_data_size as f32 / chunk_count as f32,
index_size: self.index.size(),
index_capacity: self.index.capacity(),
index_entries: self.index.len()
2017-03-15 07:27:27 +00:00
}
}
}