in src/metrics/meter.rs [151:178]
fn transform(&self, metricer: &Metricer) -> MeterData {
MeterData {
service: metricer.service_name().to_owned(),
service_instance: metricer.instance_name().to_owned(),
timestamp: fetch_time(TimePeriod::Metric),
metric: Some(Metric::SingleValue(MeterSingleValue {
name: self.id.name.to_owned(),
labels: self
.id
.labels
.iter()
.map(|(name, value)| Label {
name: name.clone(),
value: value.clone(),
})
.collect(),
value: match self.mode {
CounterMode::INCREMENT => self.get(),
CounterMode::RATE => {
let current_count = self.get();
let previous_count =
self.previous_count.swap(current_count, Ordering::Acquire);
current_count - previous_count
}
},
})),
}
}