metrics_datadog_exporter/
recorder.rs

1use std::sync::Arc;
2
3use metrics::{Counter, Gauge, Histogram, Key, KeyName, Recorder, SharedString, Unit};
4use metrics_util::registry::{AtomicStorage, Registry};
5
6/// Metric recorder
7pub struct DataDogRecorder {
8    registry: Arc<Registry<Key, AtomicStorage>>,
9}
10
11impl DataDogRecorder {
12    pub(crate) fn new(registry: Arc<Registry<Key, AtomicStorage>>) -> Self {
13        DataDogRecorder { registry }
14    }
15}
16
17impl Recorder for DataDogRecorder {
18    fn describe_counter(&self, _key: KeyName, _unit: Option<Unit>, _description: SharedString) {
19        unimplemented!()
20    }
21
22    fn describe_gauge(&self, _key: KeyName, _unit: Option<Unit>, _description: SharedString) {
23        unimplemented!()
24    }
25
26    fn describe_histogram(&self, _key: KeyName, _unit: Option<Unit>, _description: SharedString) {
27        unimplemented!()
28    }
29
30    fn register_counter(&self, key: &Key) -> Counter {
31        self.registry
32            .get_or_create_counter(key, |c| c.clone().into())
33    }
34
35    fn register_gauge(&self, key: &Key) -> Gauge {
36        self.registry.get_or_create_gauge(key, |c| c.clone().into())
37    }
38
39    fn register_histogram(&self, key: &Key) -> Histogram {
40        self.registry
41            .get_or_create_histogram(key, |c| c.clone().into())
42    }
43}