Skip to main content

lean_ctx/proxy/
metrics.rs

1use std::sync::atomic::{AtomicU64, Ordering};
2
3static REQUESTS_TOTAL: AtomicU64 = AtomicU64::new(0);
4static TOKENS_SAVED_TOTAL: AtomicU64 = AtomicU64::new(0);
5static BYTES_COMPRESSED: AtomicU64 = AtomicU64::new(0);
6
7pub fn record_request(tokens_saved: u64, bytes_compressed: u64) {
8    REQUESTS_TOTAL.fetch_add(1, Ordering::Relaxed);
9    TOKENS_SAVED_TOTAL.fetch_add(tokens_saved, Ordering::Relaxed);
10    BYTES_COMPRESSED.fetch_add(bytes_compressed, Ordering::Relaxed);
11}
12
13pub struct ProxyMetrics {
14    pub requests_total: u64,
15    pub tokens_saved_total: u64,
16    pub bytes_compressed: u64,
17}
18
19pub fn snapshot() -> ProxyMetrics {
20    ProxyMetrics {
21        requests_total: REQUESTS_TOTAL.load(Ordering::Relaxed),
22        tokens_saved_total: TOKENS_SAVED_TOTAL.load(Ordering::Relaxed),
23        bytes_compressed: BYTES_COMPRESSED.load(Ordering::Relaxed),
24    }
25}