helios_subscriptions/channels/
mod.rs1pub mod email;
7pub mod messaging;
8pub mod rest_hook;
9pub mod websocket;
10pub mod ws_manager;
11pub mod ws_token;
12
13use async_trait::async_trait;
14
15use crate::error::SubscriptionError;
16use crate::manager::ActiveSubscription;
17
18#[derive(Debug)]
20pub enum DispatchResult {
21 Success,
23 RetryableError(String),
25 PermanentError(String),
27}
28
29#[async_trait]
31pub trait ChannelDispatcher: Send + Sync {
32 async fn dispatch(
34 &self,
35 subscription: &ActiveSubscription,
36 notification_bundle: &serde_json::Value,
37 ) -> Result<DispatchResult, SubscriptionError>;
38
39 async fn handshake(
41 &self,
42 subscription: &ActiveSubscription,
43 handshake_bundle: &serde_json::Value,
44 ) -> Result<DispatchResult, SubscriptionError>;
45}