Skip to main content

kojin_core/middleware/
mod.rs

1mod metrics;
2mod tracing_mw;
3
4pub use metrics::MetricsMiddleware;
5pub use tracing_mw::TracingMiddleware;
6
7use async_trait::async_trait;
8
9use crate::error::KojinError;
10use crate::message::TaskMessage;
11
12/// Middleware hook for task execution pipeline.
13#[async_trait]
14pub trait Middleware: Send + Sync + 'static {
15    /// Called before task execution. Return `Err` to abort.
16    async fn before(&self, message: &TaskMessage) -> Result<(), KojinError> {
17        let _ = message;
18        Ok(())
19    }
20
21    /// Called after successful task execution.
22    async fn after(
23        &self,
24        message: &TaskMessage,
25        result: &serde_json::Value,
26    ) -> Result<(), KojinError> {
27        let _ = (message, result);
28        Ok(())
29    }
30
31    /// Called when task execution fails.
32    async fn on_error(&self, message: &TaskMessage, error: &KojinError) -> Result<(), KojinError> {
33        let _ = (message, error);
34        Ok(())
35    }
36}