tracexec_core/
export.rs

1use std::{
2  io::Write,
3  sync::Arc,
4};
5
6use tokio::sync::mpsc::UnboundedReceiver;
7
8use crate::{
9  cli::args::ExporterArgs,
10  event::TracerMessage,
11  proc::BaselineInfo,
12};
13
14pub struct ExporterMetadata {
15  pub baseline: Arc<BaselineInfo>,
16  pub exporter_args: ExporterArgs,
17}
18
19pub trait Exporter: Sized {
20  type Error;
21
22  fn new(
23    output: Box<dyn Write + Send + Sync + 'static>,
24    meta: ExporterMetadata,
25    stream: UnboundedReceiver<TracerMessage>,
26  ) -> Result<Self, Self::Error>;
27
28  #[allow(async_fn_in_trait)]
29  async fn run(self) -> Result<i32, Self::Error>;
30}