MiddlewareChain

Struct MiddlewareChain 

Source
pub struct MiddlewareChain { /* private fields */ }
Expand description

Chain of middleware for sequential execution

The MiddlewareChain manages the execution of multiple middleware components in a defined order. It provides error handling and short-circuiting behavior.

§Examples

use turbomcp_client::plugins::middleware::{MiddlewareChain, RequestMiddleware};
use std::sync::Arc;

let mut chain = MiddlewareChain::new();
// chain.add_request_middleware(Arc::new(some_middleware));
// chain.add_response_middleware(Arc::new(other_middleware));

Implementations§

Source§

impl MiddlewareChain

Source

pub fn new() -> Self

Create a new empty middleware chain

Source

pub fn add_request_middleware(&mut self, middleware: Arc<dyn RequestMiddleware>)

Add request middleware to the chain

Middleware will be executed in the order they are added.

§Arguments
  • middleware - The request middleware to add
Source

pub fn add_response_middleware( &mut self, middleware: Arc<dyn ResponseMiddleware>, )

Add response middleware to the chain

Middleware will be executed in the order they are added.

§Arguments
  • middleware - The response middleware to add
Source

pub async fn execute_request_chain( &self, context: &mut RequestContext, ) -> MiddlewareResult<()>

Execute the request middleware chain

Processes the request context through all registered request middleware in order. If any middleware returns an error, processing is aborted and the error is returned.

§Arguments
  • context - Mutable request context
§Returns

Returns Ok(()) if all middleware succeed, or the first error encountered.

Source

pub async fn execute_response_chain( &self, context: &mut ResponseContext, ) -> MiddlewareResult<()>

Execute the response middleware chain

Processes the response context through all registered response middleware in order. Unlike request middleware, this continues execution even if a middleware fails, logging errors but not aborting the chain.

§Arguments
  • context - Mutable response context
§Returns

Returns Ok(()) unless all middleware fail, in which case returns the last error.

Source

pub fn request_middleware_count(&self) -> usize

Get the number of request middleware

Source

pub fn response_middleware_count(&self) -> usize

Get the number of response middleware

Source

pub fn get_request_middleware_names(&self) -> Vec<String>

Get names of all request middleware

Source

pub fn get_response_middleware_names(&self) -> Vec<String>

Get names of all response middleware

Source

pub fn clear(&mut self)

Clear all middleware

Trait Implementations§

Source§

impl Debug for MiddlewareChain

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for MiddlewareChain

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more