use std::sync::atomic::{AtomicU64, Ordering};
#[derive(Clone, Debug, Default, serde::Serialize)]
pub struct Statistics {
pub allocations: u64,
pub imports: u64,
pub submissions: u64,
pub completions: u64,
pub copied_bytes: u64,
pub cache_maintenance_bytes: u64,
pub live_bytes: u64,
pub peak_bytes: u64,
}
#[derive(Default)]
pub(super) struct Counters {
pub allocations: AtomicU64,
pub imports: AtomicU64,
pub submissions: AtomicU64,
pub completions: AtomicU64,
pub copied_bytes: AtomicU64,
pub cache_maintenance_bytes: AtomicU64,
pub live_bytes: AtomicU64,
pub peak_bytes: AtomicU64,
}
impl Counters {
pub fn snapshot(&self) -> Statistics {
Statistics {
allocations: self.allocations.load(Ordering::Relaxed),
imports: self.imports.load(Ordering::Relaxed),
submissions: self.submissions.load(Ordering::Relaxed),
completions: self.completions.load(Ordering::Relaxed),
copied_bytes: self.copied_bytes.load(Ordering::Relaxed),
cache_maintenance_bytes: self.cache_maintenance_bytes.load(Ordering::Relaxed),
live_bytes: self.live_bytes.load(Ordering::Relaxed),
peak_bytes: self.peak_bytes.load(Ordering::Relaxed),
}
}
}