reorganize snapshot stats, implement detailed summary

This commit is contained in:
postscriptum 2026-03-22 22:49:10 +02:00
parent 9b9c47cbb9
commit 4658e2c481
3 changed files with 47 additions and 24 deletions

View file

@ -1,13 +1,8 @@
use rocket::serde::Serialize;
mod snap;
use std::sync::atomic::{AtomicU64, Ordering};
#[derive(Serialize)]
pub struct Snapshot {
pub request: u64,
pub blocked: u64,
pub entries: u64,
pub percent: f32,
}
pub use snap::Snap;
#[derive(Default)]
pub struct Total {
@ -23,19 +18,12 @@ impl Total {
..Self::default()
}
}
pub fn snapshot(&self) -> Snapshot {
let request = self.request.load(Ordering::Relaxed);
let blocked = self.blocked.load(Ordering::Relaxed);
Snapshot {
request,
blocked,
entries: self.entries.load(Ordering::Relaxed),
percent: if request > 0 {
blocked as f32 * 100.0 / request as f32
} else {
0.0
},
}
pub fn snap(&self) -> Snap {
Snap::shot(
self.entries.load(Ordering::Relaxed),
self.request.load(Ordering::Relaxed),
self.blocked.load(Ordering::Relaxed),
)
}
pub fn set_entries(&self, value: u64) {
self.entries.store(value, Ordering::Relaxed);