ciab_core/traits/
stream.rs1use async_trait::async_trait;
2use tokio::sync::broadcast;
3use uuid::Uuid;
4
5use crate::error::CiabResult;
6use crate::types::stream::StreamEvent;
7
8#[async_trait]
9pub trait StreamHandler: Send + Sync {
10 async fn publish(&self, event: StreamEvent) -> CiabResult<()>;
12
13 async fn subscribe(&self, sandbox_id: &Uuid) -> CiabResult<broadcast::Receiver<StreamEvent>>;
15
16 async fn subscribe_with_replay(
22 &self,
23 sandbox_id: &Uuid,
24 last_event_id: Option<&str>,
25 ) -> CiabResult<(Vec<StreamEvent>, broadcast::Receiver<StreamEvent>)>;
26
27 async fn unsubscribe(&self, sandbox_id: &Uuid) -> CiabResult<()>;
29}