kojin_core/middleware/
mod.rs1mod 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#[async_trait]
14pub trait Middleware: Send + Sync + 'static {
15 async fn before(&self, message: &TaskMessage) -> Result<(), KojinError> {
17 let _ = message;
18 Ok(())
19 }
20
21 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 async fn on_error(&self, message: &TaskMessage, error: &KojinError) -> Result<(), KojinError> {
33 let _ = (message, error);
34 Ok(())
35 }
36}