Trait Middleware

Source
pub trait Middleware<M: Metadata>:
    Send
    + Sync
    + 'static {
    type Future: Future<Item = Option<Response>, Error = ()> + Send + 'static;

    // Required method
    fn on_request<F, X>(
        &self,
        request: Request,
        meta: M,
        next: F,
    ) -> Self::Future
       where F: FnOnce(Request, M) -> X + Send,
             X: Future<Item = Option<Response>, Error = ()> + Send + 'static;
}
Expand description

RPC middleware

Required Associated Types§

Source

type Future: Future<Item = Option<Response>, Error = ()> + Send + 'static

A returned future.

Required Methods§

Source

fn on_request<F, X>(&self, request: Request, meta: M, next: F) -> Self::Future
where F: FnOnce(Request, M) -> X + Send, X: Future<Item = Option<Response>, Error = ()> + Send + 'static,

Msod invoked on each request. Allows you to either respond directly (without executing RPC call) or do any additional work before and/or after processing the request.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

Source§

impl<M: Metadata, A: Middleware<M>, B: Middleware<M>> Middleware<M> for (A, B)

Source§

type Future = <A as Middleware<M>>::Future

Source§

fn on_request<F, X>( &self, request: Request, meta: M, process: F, ) -> Self::Future
where F: FnOnce(Request, M) -> X + Send, X: Future<Item = Option<Response>, Error = ()> + Send + 'static,

Source§

impl<M: Metadata, A: Middleware<M>, B: Middleware<M>, C: Middleware<M>> Middleware<M> for (A, B, C)

Source§

type Future = <A as Middleware<M>>::Future

Source§

fn on_request<F, X>( &self, request: Request, meta: M, process: F, ) -> Self::Future
where F: FnOnce(Request, M) -> X + Send, X: Future<Item = Option<Response>, Error = ()> + Send + 'static,

Source§

impl<M: Metadata, A: Middleware<M>, B: Middleware<M>, C: Middleware<M>, D: Middleware<M>> Middleware<M> for (A, B, C, D)

Source§

type Future = <A as Middleware<M>>::Future

Source§

fn on_request<F, X>( &self, request: Request, meta: M, process: F, ) -> Self::Future
where F: FnOnce(Request, M) -> X + Send, X: Future<Item = Option<Response>, Error = ()> + Send + 'static,

Implementors§

Source§

impl<M: Metadata> Middleware<M> for Noop

Source§

type Future = Box<dyn Future<Item = Option<Response>, Error = ()> + Send>