pub struct ProxyMetrics {
pub requests_total: AtomicU64,
pub successes: AtomicU64,
pub failures: AtomicU64,
pub total_latency_ms: AtomicU64,
}Expand description
Per-proxy runtime metrics using lock-free atomic counters.
Intended to be shared via Arc<ProxyMetrics>.
§Example
use stygian_proxy::types::ProxyMetrics;
let m = ProxyMetrics::default();
assert_eq!(m.success_rate(), 0.0);
assert_eq!(m.avg_latency_ms(), 0.0);Fields§
§requests_total: AtomicU64§successes: AtomicU64§failures: AtomicU64§total_latency_ms: AtomicU64Implementations§
Source§impl ProxyMetrics
impl ProxyMetrics
Sourcepub fn success_rate(&self) -> f64
pub fn success_rate(&self) -> f64
Returns the fraction of requests that succeeded, in [0.0, 1.0].
Returns 0.0 when no requests have been recorded.
§Example
use stygian_proxy::types::ProxyMetrics;
use std::sync::atomic::Ordering;
let m = ProxyMetrics::default();
m.requests_total.store(10, Ordering::Relaxed);
m.successes.store(8, Ordering::Relaxed);
assert!((m.success_rate() - 0.8).abs() < f64::EPSILON);Sourcepub fn avg_latency_ms(&self) -> f64
pub fn avg_latency_ms(&self) -> f64
Returns the average request latency in milliseconds.
Returns 0.0 when no requests have been recorded.
§Example
use stygian_proxy::types::ProxyMetrics;
use std::sync::atomic::Ordering;
let m = ProxyMetrics::default();
m.requests_total.store(4, Ordering::Relaxed);
m.total_latency_ms.store(400, Ordering::Relaxed);
assert!((m.avg_latency_ms() - 100.0).abs() < f64::EPSILON);Trait Implementations§
Source§impl Debug for ProxyMetrics
impl Debug for ProxyMetrics
Source§impl Default for ProxyMetrics
impl Default for ProxyMetrics
Source§fn default() -> ProxyMetrics
fn default() -> ProxyMetrics
Returns the “default value” for a type. Read more
Auto Trait Implementations§
impl !Freeze for ProxyMetrics
impl RefUnwindSafe for ProxyMetrics
impl Send for ProxyMetrics
impl Sync for ProxyMetrics
impl Unpin for ProxyMetrics
impl UnsafeUnpin for ProxyMetrics
impl UnwindSafe for ProxyMetrics
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more