hyperi_rustlib/metrics/dfe_groups/
backpressure.rs1use metrics::Counter;
12
13use super::super::MetricsManager;
14
15#[derive(Clone)]
19pub struct BackpressureMetrics {
20 pub events: Counter,
21 pub duration: Counter,
22}
23
24impl BackpressureMetrics {
25 #[must_use]
26 pub fn new(manager: &MetricsManager) -> Self {
27 Self {
28 events: manager.counter_with_labels(
29 "backpressure_events_total",
30 "Backpressure activation events",
31 &[],
32 "backpressure",
33 ),
34 duration: manager.counter_with_labels(
35 "backpressure_duration_seconds_total",
36 "Cumulative time paused by backpressure",
37 &[],
38 "backpressure",
39 ),
40 }
41 }
42
43 #[inline]
44 pub fn record_event(&self) {
45 self.events.increment(1);
46 }
47
48 #[inline]
50 pub fn record_duration(&self, seconds: f64) {
51 #[allow(clippy::cast_sign_loss, clippy::cast_possible_truncation)]
53 self.duration.increment(seconds as u64);
54 }
55}