pub struct MiddlewareChain { /* private fields */ }Expand description
Middleware chain - composes multiple middleware into a single handler.
The chain processes requests through middleware in the order they were added, with optimizations for conditional execution and early termination.
Implementations§
Source§impl MiddlewareChain
impl MiddlewareChain
Sourcepub fn new(handler: Arc<dyn Handler>) -> Self
pub fn new(handler: Arc<dyn Handler>) -> Self
Creates a new middleware chain with the given handler.
§Examples
use reinhardt_http::{MiddlewareChain, Handler, Request, Response};
use std::sync::Arc;
struct MyHandler;
#[async_trait::async_trait]
impl Handler for MyHandler {
async fn handle(&self, _request: Request) -> reinhardt_core::exception::Result<Response> {
Ok(Response::ok())
}
}
let handler = Arc::new(MyHandler);
let chain = MiddlewareChain::new(handler);Sourcepub fn with_middleware(self, middleware: Arc<dyn Middleware>) -> Self
pub fn with_middleware(self, middleware: Arc<dyn Middleware>) -> Self
Adds a middleware to the chain using builder pattern.
§Examples
use reinhardt_http::{MiddlewareChain, Handler, Middleware, Request, Response};
use std::sync::Arc;
let handler = Arc::new(MyHandler);
let middleware = Arc::new(MyMiddleware);
let chain = MiddlewareChain::new(handler)
.with_middleware(middleware);Sourcepub fn add_middleware(&mut self, middleware: Arc<dyn Middleware>)
pub fn add_middleware(&mut self, middleware: Arc<dyn Middleware>)
Adds a middleware to the chain.
§Examples
use reinhardt_http::{MiddlewareChain, Handler, Middleware, Request, Response};
use std::sync::Arc;
let handler = Arc::new(MyHandler);
let middleware = Arc::new(MyMiddleware);
let mut chain = MiddlewareChain::new(handler);
chain.add_middleware(middleware);Trait Implementations§
Auto Trait Implementations§
impl Freeze for MiddlewareChain
impl !RefUnwindSafe for MiddlewareChain
impl Send for MiddlewareChain
impl Sync for MiddlewareChain
impl Unpin for MiddlewareChain
impl UnsafeUnpin for MiddlewareChain
impl !UnwindSafe for MiddlewareChain
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more