rama_core/inspect/
request.rs1use crate::{Context, Service};
2
3pub trait RequestInspector<StateIn, RequestIn>: Send + Sync + 'static {
10 type Error: Send + 'static;
12 type RequestOut: Send + 'static;
13 type StateOut: Clone + Send + Sync + 'static;
14
15 fn inspect_request(
17 &self,
18 ctx: Context<StateIn>,
19 req: RequestIn,
20 ) -> impl Future<Output = Result<(Context<Self::StateOut>, Self::RequestOut), Self::Error>> + Send + '_;
21}
22
23impl<S, StateIn, StateOut, RequestIn, RequestOut> RequestInspector<StateIn, RequestIn> for S
24where
25 S: Service<StateIn, RequestIn, Response = (Context<StateOut>, RequestOut)>,
26 RequestIn: Send + 'static,
27 RequestOut: Send + 'static,
28 StateIn: Clone + Send + Sync + 'static,
29 StateOut: Clone + Send + Sync + 'static,
30{
31 type Error = S::Error;
32 type RequestOut = RequestOut;
33 type StateOut = StateOut;
34
35 fn inspect_request(
36 &self,
37 ctx: Context<StateIn>,
38 req: RequestIn,
39 ) -> impl Future<Output = Result<(Context<Self::StateOut>, Self::RequestOut), Self::Error>> + Send + '_
40 {
41 self.serve(ctx, req)
42 }
43}