tracexec_core/
export.rs

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