Skip to main content

synaptic_callbacks/
composite.rs

1use std::sync::Arc;
2
3use async_trait::async_trait;
4use synaptic_core::{CallbackHandler, RunEvent, SynapticError};
5
6pub struct CompositeCallback {
7    handlers: Vec<Arc<dyn CallbackHandler>>,
8}
9
10impl CompositeCallback {
11    pub fn new(handlers: Vec<Arc<dyn CallbackHandler>>) -> Self {
12        Self { handlers }
13    }
14}
15
16#[async_trait]
17impl CallbackHandler for CompositeCallback {
18    async fn on_event(&self, event: RunEvent) -> Result<(), SynapticError> {
19        for handler in &self.handlers {
20            handler.on_event(event.clone()).await?;
21        }
22        Ok(())
23    }
24}