psocks/src/stats.rs

28 lines
649 B
Rust

mod snap;
use std::sync::atomic::{AtomicU64, Ordering};
pub use snap::{Rules, Snap};
#[derive(Default)]
pub struct Total {
blocked: AtomicU64,
request: AtomicU64,
}
impl Total {
pub fn snap(&self, rules: Rules, seconds_from_startup: f32) -> Snap {
Snap::shot(
rules,
self.request.load(Ordering::Relaxed),
self.blocked.load(Ordering::Relaxed),
seconds_from_startup,
)
}
pub fn increase_blocked(&self) {
self.blocked.fetch_add(1, Ordering::Relaxed);
}
pub fn increase_request(&self) {
self.request.fetch_add(1, Ordering::Relaxed);
}
}