saluki_core/components/forwarders/
builder.rs

1use async_trait::async_trait;
2use memory_accounting::MemoryBounds;
3use saluki_error::GenericError;
4
5use super::Forwarder;
6use crate::{components::ComponentContext, data_model::payload::PayloadType};
7
8/// A forwarder builder.
9///
10/// Forwarder builders are responsible for creating instances of [`Forwarder`]s, as well as describing high-level
11/// aspects of the built forwarder, such as the data types allowed for input events.
12#[async_trait]
13pub trait ForwarderBuilder: MemoryBounds {
14    /// Data types allowed as input payloads to this forwarder.
15    fn input_payload_type(&self) -> PayloadType;
16
17    /// Builds an instance of the forwarder.
18    ///
19    /// ## Errors
20    ///
21    /// If the forwarder cannot be built for any reason, an error is returned.
22    async fn build(&self, context: ComponentContext) -> Result<Box<dyn Forwarder + Send>, GenericError>;
23}