Skip to main content

flwrs_plugin/source/
plugin.rs

1use tokio::sync::Mutex;
2use crate::plugin::core::InitializeRequest;
3use crate::plugin::error::{InitializeError, ShutdownError, SourceError};
4use crate::schema::common::log_level::Enum as LogLevel;
5use crate::source::local_sink::LocalSink;
6
7pub trait Source<'a> {
8    fn initialize(
9        &mut self,
10        plugin_id: String,
11        log_level: LogLevel,
12        sink: &'a Mutex<LocalSink>,
13    ) -> Result<InitializeRequest, InitializeError>;
14
15    fn shutdown(&mut self) -> Result<(), ShutdownError>;
16
17    fn version(&self) -> String;
18
19    fn run(&self) -> Result<(), SourceError>;
20}