use std::sync::{
atomic::{AtomicU64, Ordering},
Arc,
};
#[cfg_attr(docsrs, doc(cfg(feature = "stats")))]
#[derive(Debug, Clone)]
pub struct Stats {
active_clones: Arc<AtomicU64>,
}
impl Stats {
pub(crate) fn new() -> Self {
Self {
active_clones: Arc::new(AtomicU64::new(1)),
}
}
pub(crate) fn increment(&self) {
self.active_clones.fetch_add(1, Ordering::Relaxed);
}
pub(crate) fn decrement(&self) {
self.active_clones.fetch_sub(1, Ordering::Relaxed);
}
pub fn active_clones(&self) -> u64 {
self.active_clones.load(Ordering::Relaxed)
}
}