use std::time::SystemTime;
#[derive(Debug, Clone)]
pub enum MetricsEvent {
CounterIncremented {
name: String,
delta: u64,
new_value: u64,
timestamp: SystemTime,
},
CounterReset {
name: String,
timestamp: SystemTime,
},
GaugeSet {
name: String,
value: f64,
timestamp: SystemTime,
},
HistogramRecorded {
name: String,
value: u64,
timestamp: SystemTime,
},
SummaryObserved {
name: String,
value: f64,
timestamp: SystemTime,
},
}
impl MetricsEvent {
pub fn timestamp(&self) -> SystemTime {
match self {
MetricsEvent::CounterIncremented { timestamp, .. } => *timestamp,
MetricsEvent::CounterReset { timestamp, .. } => *timestamp,
MetricsEvent::GaugeSet { timestamp, .. } => *timestamp,
MetricsEvent::HistogramRecorded { timestamp, .. } => *timestamp,
MetricsEvent::SummaryObserved { timestamp, .. } => *timestamp,
}
}
pub fn metric_name(&self) -> &str {
match self {
MetricsEvent::CounterIncremented { name, .. } => name,
MetricsEvent::CounterReset { name, .. } => name,
MetricsEvent::GaugeSet { name, .. } => name,
MetricsEvent::HistogramRecorded { name, .. } => name,
MetricsEvent::SummaryObserved { name, .. } => name,
}
}
}