#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub(crate) struct CategoryCounts {
hits: u64,
misses: u64,
evictions: u64,
}
impl CategoryCounts {
pub(crate) fn new(hits: u64, misses: u64, evictions: u64) -> Self {
Self {
hits,
misses,
evictions,
}
}
}
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub struct GraphCacheStats {
source_projections: CategoryCounts,
exact_graphs: CategoryCounts,
selected_indexes: CategoryCounts,
derived_products: CategoryCounts,
}
impl GraphCacheStats {
pub(crate) fn new(
source_projections: CategoryCounts,
exact_graphs: CategoryCounts,
selected_indexes: CategoryCounts,
derived_products: CategoryCounts,
) -> Self {
Self {
source_projections,
exact_graphs,
selected_indexes,
derived_products,
}
}
pub fn source_projection_hits(self) -> u64 {
self.source_projections.hits
}
pub fn source_projection_misses(self) -> u64 {
self.source_projections.misses
}
pub fn source_projection_evictions(self) -> u64 {
self.source_projections.evictions
}
pub fn exact_graph_hits(self) -> u64 {
self.exact_graphs.hits
}
pub fn exact_graph_misses(self) -> u64 {
self.exact_graphs.misses
}
pub fn exact_graph_evictions(self) -> u64 {
self.exact_graphs.evictions
}
pub fn selected_index_hits(self) -> u64 {
self.selected_indexes.hits
}
pub fn selected_index_misses(self) -> u64 {
self.selected_indexes.misses
}
pub fn selected_index_evictions(self) -> u64 {
self.selected_indexes.evictions
}
pub fn derived_product_hits(self) -> u64 {
self.derived_products.hits
}
pub fn derived_product_misses(self) -> u64 {
self.derived_products.misses
}
pub fn derived_product_evictions(self) -> u64 {
self.derived_products.evictions
}
}