oauth2_broker/flows/refresh/
metrics.rs

1// std
2use std::sync::atomic::{AtomicU64, Ordering};
3
4/// Thread-safe counters for refresh attempts.
5#[derive(Debug, Default)]
6pub struct RefreshMetrics {
7	attempts: AtomicU64,
8	success: AtomicU64,
9	failure: AtomicU64,
10}
11impl RefreshMetrics {
12	/// Returns the total number of refresh attempts.
13	pub fn attempts(&self) -> u64 {
14		self.attempts.load(Ordering::Relaxed)
15	}
16
17	/// Returns the number of successful refresh calls (including cache reuses).
18	pub fn successes(&self) -> u64 {
19		self.success.load(Ordering::Relaxed)
20	}
21
22	/// Returns the number of failed refresh calls.
23	pub fn failures(&self) -> u64 {
24		self.failure.load(Ordering::Relaxed)
25	}
26
27	pub(crate) fn record_attempt(&self) {
28		self.attempts.fetch_add(1, Ordering::Relaxed);
29	}
30
31	pub(crate) fn record_success(&self) {
32		self.success.fetch_add(1, Ordering::Relaxed);
33	}
34
35	pub(crate) fn record_failure(&self) {
36		self.failure.fetch_add(1, Ordering::Relaxed);
37	}
38}