cardinal_proxy/
context_provider.rs1use crate::pingora::{BError, Error};
2use crate::req::ReqCtx;
3use crate::HealthCheckStatus;
4use cardinal_base::context::CardinalContext;
5use pingora::proxy::Session;
6use std::sync::Arc;
7
8#[async_trait::async_trait]
9pub trait CardinalContextProvider: Send + Sync {
10 fn ctx(&self) -> ReqCtx {
11 ReqCtx::default()
12 }
13
14 fn resolve(&self, session: &Session, ctx: &mut ReqCtx) -> Option<Arc<CardinalContext>>;
15 fn health_check(&self, _session: &Session) -> HealthCheckStatus {
16 HealthCheckStatus::None
17 }
18
19 fn logging(&self, _session: &mut Session, _e: Option<&Error>, _ctx: &mut ReqCtx) {}
20
21 async fn early_request_filter(
22 &self,
23 _session: &mut Session,
24 _ctx: &mut ReqCtx,
25 ) -> Result<(), BError>
26 where
27 Self: Send + Sync,
28 {
29 Ok(())
30 }
31}