Struct FlowCtrl

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

Control the flow of execute handlers.

When a request is coming, Router will detect it and get the matched router. And then salvo will collect all handlers (including added as middlewares) from the matched router tree. All handlers in this list will executed one by one.

Each handler can use FlowCtrl to control execute flow, let the flow call next handler or skip all rest handlers.

NOTE: When Response’s status code is set, and the status code Response::is_stamped() is returns false, all remaining handlers will be skipped.

Implementations§

Source§

impl FlowCtrl

Source

pub fn new(handlers: Vec<Arc<dyn Handler>>) -> Self

Create new FlowCtrl.

Source

pub fn has_next(&self) -> bool

Has next handler.

Source

pub async fn call_next( &mut self, req: &mut Request, depot: &mut Depot, res: &mut Response, ) -> bool

Call next handler. If get next handler and executed, returns true``, otherwise returns false`.

NOTE: If response status code is error or is redirection, all reset handlers will be skipped.

Source

pub fn skip_rest(&mut self)

Skip all reset handlers.

Source

pub fn is_ceased(&self) -> bool

Check is FlowCtrl ceased.

NOTE: If handler is used as middleware, it should use is_ceased to check is flow ceased. If is_ceased returns true, the handler should skip the following logic.

Source

pub fn cease(&mut self)

Cease all following logic.

NOTE: This function will mark is_ceased as true, but whether the subsequent logic can be skipped depends on whether the middleware correctly checks is_ceased and skips the subsequent logic.

Trait Implementations§

Source§

impl Default for FlowCtrl

Source§

fn default() -> FlowCtrl

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<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

Source§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

Source§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where T: 'a,

Source§

fn implicit( self, class: Class, constructed: bool, tag: u32, ) -> TaggedParser<'a, Implicit, Self, E>

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> Same for T

Source§

type Output = T

Should always be Self
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
Source§

impl<T> ErasedDestructor for T
where T: 'static,