pub mod builder;
mod chain;
mod logging;
use crate::comm::{ExecuteContext, ExecuteResult};
use crate::errors::AkitaError;
use crate::interceptor::shared::InterceptorBase;
use akita_core::{InterceptorType, OperationType};
pub use builder::*;
pub use chain::*;
pub use logging::*;
pub trait AkitaInterceptor: InterceptorBase {
#[track_caller]
fn before_execute(&self, ctx: &mut ExecuteContext) -> crate::prelude::Result<()>;
#[track_caller]
fn after_execute(
&self,
ctx: &mut ExecuteContext,
result: &mut Result<ExecuteResult, AkitaError>,
) -> crate::prelude::Result<()> {
Ok(())
}
#[track_caller]
fn on_error(
&self,
_ctx: &ExecuteContext,
error: &mut AkitaError,
) -> crate::prelude::Result<()> {
tracing::error!("Interceptor '{}' encountered error: {}", self.name(), error);
Ok(())
}
#[track_caller]
fn init(&self) -> crate::prelude::Result<()> {
Ok(())
}
#[track_caller]
fn destroy(&self) -> crate::prelude::Result<()> {
Ok(())
}
}