use crate::{error::HandlerError, event::Event, id::MessageId};
use async_trait::async_trait;
use tracing::Span;
#[derive(Debug)]
pub struct HandlerCtx {
pub msg_id: MessageId,
pub stream_seq: u64,
pub delivered: u64,
pub subject: String,
pub span: Span,
}
#[async_trait]
pub trait EventHandler<E: Event>: Send + Sync + 'static {
async fn handle(&self, ctx: HandlerCtx, event: E) -> Result<(), HandlerError>;
}