metrics_datadog_exporter/
recorder.rs1use std::sync::Arc;
2
3use metrics::{Counter, Gauge, Histogram, Key, KeyName, Recorder, SharedString, Unit};
4use metrics_util::registry::{AtomicStorage, Registry};
5
6pub 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}