micromegas_tracing/event/
sink.rs1use std::{fmt, sync::Arc};
2
3#[cfg(not(target_arch = "wasm32"))]
4use crate::images::{ImageBlock, ImageStream};
5use crate::{
6 logs::{LogBlock, LogMetadata, LogStream},
7 metrics::{MetricsBlock, MetricsStream},
8 prelude::*,
9 property_set::Property,
10 spans::{ThreadBlock, ThreadStream},
11};
12
13pub type BoxedEventSink = Box<dyn EventSink>;
14
15pub trait EventSink: Send + Sync {
17 fn on_startup(&self, process_info: Arc<ProcessInfo>);
18 fn on_shutdown(&self);
19
20 fn on_log_enabled(&self, metadata: &LogMetadata) -> bool;
21 fn on_log(
22 &self,
23 desc: &LogMetadata,
24 properties: &[Property],
25 time: i64,
26 args: fmt::Arguments<'_>,
27 );
28 fn on_init_log_stream(&self, log_stream: &LogStream);
29 fn on_process_log_block(&self, log_block: Arc<LogBlock>);
30
31 fn on_init_metrics_stream(&self, metrics_stream: &MetricsStream);
32 fn on_process_metrics_block(&self, metrics_block: Arc<MetricsBlock>);
33
34 fn on_init_thread_stream(&self, thread_stream: &ThreadStream);
35 fn on_process_thread_block(&self, thread_block: Arc<ThreadBlock>);
36
37 fn is_busy(&self) -> bool; #[cfg(not(target_arch = "wasm32"))]
40 fn on_init_image_stream(&self, _stream: &ImageStream) {}
41 #[cfg(not(target_arch = "wasm32"))]
42 fn on_process_image_block(&self, _block: Arc<ImageBlock>) {}
43}
44
45pub struct NullEventSink {}
47
48impl EventSink for NullEventSink {
49 fn on_startup(&self, _: Arc<ProcessInfo>) {}
50 fn on_shutdown(&self) {}
51
52 fn on_log_enabled(&self, _: &LogMetadata) -> bool {
53 false
54 }
55 fn on_log(
56 &self,
57 _desc: &LogMetadata,
58 _properties: &[Property],
59 _time: i64,
60 _args: fmt::Arguments<'_>,
61 ) {
62 }
63 fn on_init_log_stream(&self, _: &LogStream) {}
64 fn on_process_log_block(&self, _: Arc<LogBlock>) {}
65
66 fn on_init_metrics_stream(&self, _: &MetricsStream) {}
67 fn on_process_metrics_block(&self, _: Arc<MetricsBlock>) {}
68
69 fn on_init_thread_stream(&self, _: &ThreadStream) {}
70 fn on_process_thread_block(&self, _: Arc<ThreadBlock>) {}
71
72 fn is_busy(&self) -> bool {
73 false
74 }
75}