Skip to main content

httpgenerator_cli/telemetry/
sink.rs

1use super::TelemetryEvent;
2
3pub trait TelemetrySink {
4    fn emit(&mut self, event: TelemetryEvent);
5}
6
7#[derive(Debug, Default)]
8pub struct NoopTelemetrySink;
9
10impl TelemetrySink for NoopTelemetrySink {
11    fn emit(&mut self, _event: TelemetryEvent) {}
12}
13
14#[derive(Debug, Default)]
15pub struct MemoryTelemetrySink {
16    events: Vec<TelemetryEvent>,
17}
18
19impl MemoryTelemetrySink {
20    pub fn events(&self) -> &[TelemetryEvent] {
21        &self.events
22    }
23}
24
25impl TelemetrySink for MemoryTelemetrySink {
26    fn emit(&mut self, event: TelemetryEvent) {
27        self.events.push(event);
28    }
29}