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); } }