Skip to main content

CommandPipeline

Struct CommandPipeline 

Source
pub struct CommandPipeline<C>
where C: Command + 'static,
{ /* private fields */ }
Expand description

Ordered middleware pipeline ending in one typed command handler.

Middleware runs in registration order before the handler and unwinds in reverse order after it. The pipeline also implements CommandHandler<C>, so existing application services and saga processors can receive it without depending on a new abstraction.

Implementations§

Source§

impl<C> CommandPipeline<C>
where C: Command + 'static,

Source

pub fn new(handler: Arc<dyn CommandHandler<C>>) -> Self

Creates an empty pipeline ending in handler.

Source

pub fn with_middleware(self, middleware: Arc<dyn CommandMiddleware<C>>) -> Self

Appends middleware and returns the updated pipeline.

Source

pub fn push_middleware(&mut self, middleware: Arc<dyn CommandMiddleware<C>>)

Appends middleware after every previously registered layer.

Source

pub fn middleware_count(&self) -> usize

Returns the number of registered middleware layers.

Trait Implementations§

Source§

impl<C> CommandHandler<C> for CommandPipeline<C>
where C: Command + 'static,

Source§

fn command(&self, command: C) -> BoxFuture<'_, SoapResult<C::Output>>

Handles the command.
Source§

impl<C> Debug for CommandPipeline<C>
where C: Command + 'static,

Source§

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

Formats the value using the given formatter. 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<C, H> CommandDispatcher<C> for H
where C: Command, H: CommandHandler<C> + ?Sized,

Source§

fn dispatch( &self, command: C, ) -> Pin<Box<dyn Future<Output = Result<<C as Command>::Output, SoapError>> + Send + '_>>

Dispatches the command to its typed handler or pipeline.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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, 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.