use std::sync::atomic::{AtomicU64, Ordering};
#[derive(Debug)]
pub struct ActorMetrics {
messages_received: AtomicU64,
messages_sent: AtomicU64,
recoveries: AtomicU64,
panics: AtomicU64,
}
impl ActorMetrics {
pub fn new() -> Self {
Self {
messages_received: AtomicU64::new(0),
messages_sent: AtomicU64::new(0),
recoveries: AtomicU64::new(0),
panics: AtomicU64::new(0),
}
}
pub fn inc_received(&self) { self.messages_received.fetch_add(1, Ordering::Relaxed); }
pub fn inc_sent(&self) { self.messages_sent.fetch_add(1, Ordering::Relaxed); }
pub fn inc_recovery(&self) { self.recoveries.fetch_add(1, Ordering::Relaxed); }
pub fn inc_panic(&self) { self.panics.fetch_add(1, Ordering::Relaxed); }
pub fn messages_received(&self) -> u64 { self.messages_received.load(Ordering::Relaxed) }
pub fn messages_sent(&self) -> u64 { self.messages_sent.load(Ordering::Relaxed) }
pub fn recoveries(&self) -> u64 { self.recoveries.load(Ordering::Relaxed) }
pub fn panics(&self) -> u64 { self.panics.load(Ordering::Relaxed) }
}
impl Default for ActorMetrics {
fn default() -> Self { Self::new() }
}