use std::sync::atomic::{AtomicU64, Ordering};
#[derive(Debug, Default)]
pub struct FiveSignalMetrics {
pub recall_total: AtomicU64,
pub consolidation_runs_total: AtomicU64,
pub promoted_total: AtomicU64,
pub demoted_total: AtomicU64,
}
impl FiveSignalMetrics {
#[inline]
pub fn inc_recall(&self) {
self.recall_total.fetch_add(1, Ordering::Relaxed);
}
#[inline]
pub fn inc_consolidation_run(&self) {
self.consolidation_runs_total
.fetch_add(1, Ordering::Relaxed);
}
#[inline]
pub fn add_promoted(&self, n: u64) {
self.promoted_total.fetch_add(n, Ordering::Relaxed);
}
#[inline]
pub fn add_demoted(&self, n: u64) {
self.demoted_total.fetch_add(n, Ordering::Relaxed);
}
#[must_use]
#[inline]
pub fn recall_count(&self) -> u64 {
self.recall_total.load(Ordering::Relaxed)
}
#[must_use]
#[inline]
pub fn promoted_count(&self) -> u64 {
self.promoted_total.load(Ordering::Relaxed)
}
#[must_use]
#[inline]
pub fn demoted_count(&self) -> u64 {
self.demoted_total.load(Ordering::Relaxed)
}
}