use AtomicU64 for stats, rename some members

This commit is contained in:
postscriptum 2026-03-22 04:34:19 +02:00
parent fcd59fd306
commit b03bdd0e3a
2 changed files with 48 additions and 28 deletions

View file

@ -1,9 +1,35 @@
use rocket::serde::Serialize;
use std::sync::atomic::{AtomicU64, Ordering};
#[derive(Debug, Default, Clone, Copy, Serialize)]
#[serde(crate = "rocket::serde")]
pub struct Stats {
pub entries: usize,
pub blocked: usize,
pub request: usize,
#[derive(Serialize)]
pub struct Snapshot {
pub request: u64,
pub blocked: u64,
pub entries: u64,
}
#[derive(Default)]
pub struct Total {
entries: AtomicU64,
blocked: AtomicU64,
request: AtomicU64,
}
impl Total {
pub fn snapshot(&self) -> Snapshot {
Snapshot {
request: self.request.load(Ordering::Relaxed),
blocked: self.blocked.load(Ordering::Relaxed),
entries: self.entries.load(Ordering::Relaxed),
}
}
pub fn set_entries(&self, value: u64) {
self.entries.store(value, Ordering::Relaxed);
}
pub fn increase_blocked(&self) {
self.blocked.fetch_add(1, Ordering::Relaxed);
}
pub fn increase_request(&self) {
self.request.fetch_add(1, Ordering::Relaxed);
}
}