scouter_tracing/exporter/
noop.rs

1use crate::exporter::ExporterType;
2use crate::exporter::SpanExporterBuilder;
3use crate::exporter::TraceError;
4use opentelemetry_sdk::error::OTelSdkResult;
5use opentelemetry_sdk::trace::SpanData;
6use opentelemetry_sdk::trace::SpanExporter;
7use opentelemetry_stdout::SpanExporter as OTelStdoutSpanExporter;
8#[derive(Debug, Default)]
9pub struct NoopSpanExporter {
10    _private: (),
11}
12
13impl NoopSpanExporter {
14    /// Create a new noop span exporter
15    pub fn new() -> Self {
16        NoopSpanExporter { _private: () }
17    }
18}
19
20impl SpanExporter for NoopSpanExporter {
21    async fn export(&self, _: Vec<SpanData>) -> OTelSdkResult {
22        Ok(())
23    }
24}
25
26impl SpanExporterBuilder for NoopSpanExporter {
27    type Exporter = OTelStdoutSpanExporter;
28
29    fn export_type(&self) -> ExporterType {
30        ExporterType::Noop
31    }
32
33    fn sample_ratio(&self) -> Option<f64> {
34        None
35    }
36
37    fn batch_export(&self) -> bool {
38        true
39    }
40
41    fn build_exporter(&self) -> Result<Self::Exporter, TraceError> {
42        // Reconstruct the OtlpExportConfig each time
43        Ok(OTelStdoutSpanExporter::default())
44    }
45}