1use metrics::{counter, gauge};
2
3#[derive(Clone, Debug, PartialEq)]
4pub struct ForwardMetrics {
5 pub(crate) name: String,
6}
7
8impl ForwardMetrics {
9 pub fn new(name: String) -> Self {
10 Self { name }
11 }
12
13 pub fn record_connection_attempt(&self) {
14 counter!("port_forward_connection_attempts_total", 1, "forward" => self.name.clone());
15 }
16
17 pub fn record_connection_success(&self) {
18 counter!("port_forward_connection_successes_total", 1, "forward" => self.name.clone());
19 }
20
21 pub fn record_connection_failure(&self) {
22 counter!("port_forward_connection_failures_total", 1, "forward" => self.name.clone());
23 }
24
25 pub fn set_connection_status(&self, connected: bool) {
26 gauge!("port_forward_connected", if connected { 1.0 } else { 0.0 }, "forward" => self.name.clone());
27 }
28}