use std::sync::atomic::{AtomicUsize, Ordering};
#[derive(Debug, Default)]
pub struct PoolStats {
pub hits: AtomicUsize,
pub misses: AtomicUsize,
pub checked_out: AtomicUsize,
pub peak_checked_out: AtomicUsize,
pub bytes_checked_out: AtomicUsize,
pub peak_bytes_checked_out: AtomicUsize,
}
impl PoolStats {
#[must_use]
pub fn snapshot(&self) -> PoolStatsSnapshot {
PoolStatsSnapshot {
hits: self.hits.load(Ordering::Relaxed),
misses: self.misses.load(Ordering::Relaxed),
checked_out: self.checked_out.load(Ordering::Relaxed),
peak_checked_out: self.peak_checked_out.load(Ordering::Relaxed),
bytes_checked_out: self.bytes_checked_out.load(Ordering::Relaxed),
peak_bytes_checked_out: self.peak_bytes_checked_out.load(Ordering::Relaxed),
}
}
}
#[derive(Debug, Clone, Copy)]
pub struct PoolStatsSnapshot {
pub hits: usize,
pub misses: usize,
pub checked_out: usize,
pub peak_checked_out: usize,
pub bytes_checked_out: usize,
pub peak_bytes_checked_out: usize,
}