mirror of
https://codeberg.org/YGGverse/psocks.git
synced 2026-03-31 08:25:27 +00:00
41 lines
1,014 B
Rust
41 lines
1,014 B
Rust
use rocket::serde::Serialize;
|
|
use std::sync::atomic::{AtomicU64, Ordering};
|
|
|
|
#[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 with_entries(entries: u64) -> Self {
|
|
Self {
|
|
entries: entries.into(),
|
|
..Self::default()
|
|
}
|
|
}
|
|
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);
|
|
}
|
|
}
|