Skip to main content

Dispatcher

Struct Dispatcher 

Source
pub struct Dispatcher<U, Err>
where U: Encoder + Decoder + 'static, Err: 'static,
{ /* private fields */ }
Expand description

Future that dispatches decoded transport frames to a service.

The service receives DispatchItem values and returns Option<U::Item>, where Some(item) is encoded and written to the transport and None produces no response.

Multiple service calls may be in flight concurrently. When the transport applies write backpressure, the dispatcher pauses normal reads and emits Control::WBackPressureEnabled. It emits Control::WBackPressureDisabled before resuming normal processing.

Before shutdown, transport and codec failures are delivered to the service as DispatchItem::Stop. The future resolves to Err only when the service itself fails. Graceful and protocol stops drain service calls before shutdown; transport failures abandon pending calls after delivering the stop notification so they cannot block teardown.

Implementations§

Source§

impl<U, Err> Dispatcher<U, Err>
where U: Decoder + Encoder + 'static, Err: 'static,

Source

pub fn new<Io>( io: Io, codec: U, service: Pipeline<DispatchItem<U>, Option<<U as Encoder>::Item>, Err>, ) -> Dispatcher<U, Err> ⓘ
where IoBoxed: From<Io>,

Creates a dispatcher for an I/O transport, codec, and service pipeline.

Keep-alive and frame-read timeout behavior is taken from the transport’s ntex_io::IoConfig.

Source

pub fn max_inflight(self, max: u32) -> Dispatcher<U, Err> ⓘ

Sets the maximum number of concurrent service calls.

The dispatcher stops reading frames while max calls are in flight and resumes once a call completes. By default the number of calls is not limited.

§Panics

Panics if max is zero.

Trait Implementations§

Source§

impl<U, Err> Debug for Dispatcher<U, Err>
where U: Encoder + Decoder,

Source§

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

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

impl<U, Err> Future for Dispatcher<U, Err>
where U: Decoder + Encoder + 'static, Err: 'static,

Source§

type Output = Result<(), Err>

The type of value produced on completion.
Source§

fn poll( self: Pin<&mut Dispatcher<U, Err>>, cx: &mut Context<'_>, ) -> Poll<<Dispatcher<U, Err> as Future>::Output>

Attempts to resolve the future to a final value, registering the current task for wakeup if the value is not yet available. Read more
Source§

impl<U, Err> Unpin for Dispatcher<U, Err>
where U: Encoder + Decoder,

Auto Trait Implementations§

§

impl<U, Err> !RefUnwindSafe for Dispatcher<U, Err>

§

impl<U, Err> !Send for Dispatcher<U, Err>

§

impl<U, Err> !Sync for Dispatcher<U, Err>

§

impl<U, Err> !UnwindSafe for Dispatcher<U, Err>

§

impl<U, Err> Freeze for Dispatcher<U, Err>
where Err: Freeze,

§

impl<U, Err> UnsafeUnpin for Dispatcher<U, Err>
where Err: UnsafeUnpin,

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, 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<F> IntoFuture for F
where F: Future,

Source§

type Output = <F as Future>::Output

The output that the future will produce on completion.
Source§

type IntoFuture = F

Which kind of future are we turning this into?
Source§

fn into_future(self) -> <F as IntoFuture>::IntoFuture

Creates a future from a value. Read more
Source§

impl<F> OnDropFutureExt for F
where F: Future,

Source§

fn on_drop<F>(self, on_drop: F) -> OnDropFuture<Self, F> ⓘ
where F: FnOnce(),

Wraps this future so that on_drop is called if the future is dropped before it completes. The callback is cancelled once the future completes, whatever its output.
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.
§

impl<F, T, E> TryFuture for F
where F: Future<Output = Result<T, E>> + ?Sized,

§

type Ok = T

The type of successful values yielded by this future
§

type Error = E

The type of failures yielded by this future
§

fn try_poll( self: Pin<&mut F>, cx: &mut Context<'_>, ) -> Poll<<F as Future>::Output>

Poll this TryFuture as if it were a Future. Read more
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.