Struct ntex_service::dev::ServiceChainFactory
source · pub struct ServiceChainFactory<T, Req, C = ()> { /* private fields */ }Expand description
Service factory builder
Implementations§
source§impl<T: ServiceFactory<Req, C>, Req, C> ServiceChainFactory<T, Req, C>
impl<T: ServiceFactory<Req, C>, Req, C> ServiceChainFactory<T, Req, C>
sourcepub fn and_then<F, U>(
self,
factory: F
) -> ServiceChainFactory<AndThenFactory<T, U>, Req, C>where
Self: Sized,
F: IntoServiceFactory<U, T::Response, C>,
U: ServiceFactory<T::Response, C, Error = T::Error, InitError = T::InitError>,
pub fn and_then<F, U>( self, factory: F ) -> ServiceChainFactory<AndThenFactory<T, U>, Req, C>where Self: Sized, F: IntoServiceFactory<U, T::Response, C>, U: ServiceFactory<T::Response, C, Error = T::Error, InitError = T::InitError>,
Call another service after call to this one has resolved successfully.
sourcepub fn apply<U>(
self,
tr: U
) -> ServiceChainFactory<ApplyMiddleware<U, T, C>, Req, C>where
U: Middleware<T::Service>,
pub fn apply<U>( self, tr: U ) -> ServiceChainFactory<ApplyMiddleware<U, T, C>, Req, C>where U: Middleware<T::Service>,
Apply middleware to current service factory.
Short version of apply(middleware, chain_factory(...))
sourcepub fn apply_fn<F, R, In, Out, Err>(
self,
f: F
) -> ServiceChainFactory<ApplyFactory<T, Req, C, F, R, In, Out, Err>, In, C>where
F: Fn(In, Pipeline<T::Service>) -> R + Clone,
R: Future<Output = Result<Out, Err>>,
T: ServiceFactory<Req, C>,
Err: From<T::Error>,
pub fn apply_fn<F, R, In, Out, Err>( self, f: F ) -> ServiceChainFactory<ApplyFactory<T, Req, C, F, R, In, Out, Err>, In, C>where F: Fn(In, Pipeline<T::Service>) -> R + Clone, R: Future<Output = Result<Out, Err>>, T: ServiceFactory<Req, C>, Err: From<T::Error>,
Apply function middleware to current service factory.
Short version of apply_fn_factory(chain_factory(...), fn)
sourcepub fn then<F, U>(
self,
factory: F
) -> ServiceChainFactory<ThenFactory<T, U>, Req, C>where
Self: Sized,
C: Clone,
F: IntoServiceFactory<U, Result<T::Response, T::Error>, C>,
U: ServiceFactory<Result<T::Response, T::Error>, C, Error = T::Error, InitError = T::InitError>,
pub fn then<F, U>( self, factory: F ) -> ServiceChainFactory<ThenFactory<T, U>, Req, C>where Self: Sized, C: Clone, F: IntoServiceFactory<U, Result<T::Response, T::Error>, C>, U: ServiceFactory<Result<T::Response, T::Error>, C, Error = T::Error, InitError = T::InitError>,
Create NewService to chain on a computation for when a call to the
service finished, passing the result of the call to the next
service U.
Note that this function consumes the receiving pipeline and returns a wrapped version of it.
sourcepub fn map<F, Res>(
self,
f: F
) -> ServiceChainFactory<MapFactory<T, F, Req, Res, C>, Req, C>where
Self: Sized,
F: Fn(T::Response) -> Res + Clone,
pub fn map<F, Res>( self, f: F ) -> ServiceChainFactory<MapFactory<T, F, Req, Res, C>, Req, C>where Self: Sized, F: Fn(T::Response) -> Res + Clone,
Map this service’s output to a different type, returning a new service of the resulting type.
sourcepub fn map_err<F, E>(
self,
f: F
) -> ServiceChainFactory<MapErrFactory<T, Req, C, F, E>, Req, C>where
Self: Sized,
F: Fn(T::Error) -> E + Clone,
pub fn map_err<F, E>( self, f: F ) -> ServiceChainFactory<MapErrFactory<T, Req, C, F, E>, Req, C>where Self: Sized, F: Fn(T::Error) -> E + Clone,
Map this service’s error to a different error, returning a new service.
sourcepub fn map_init_err<F, E>(
self,
f: F
) -> ServiceChainFactory<MapInitErr<T, Req, C, F, E>, Req, C>where
Self: Sized,
F: Fn(T::InitError) -> E + Clone,
pub fn map_init_err<F, E>( self, f: F ) -> ServiceChainFactory<MapInitErr<T, Req, C, F, E>, Req, C>where Self: Sized, F: Fn(T::InitError) -> E + Clone,
Map this factory’s init error to a different error, returning a new service.
sourcepub fn pipeline(&self, cfg: C) -> CreatePipeline<'_, T, Req, C> ⓘwhere
Self: Sized,
pub fn pipeline(&self, cfg: C) -> CreatePipeline<'_, T, Req, C> ⓘwhere Self: Sized,
Create and return a new service value asynchronously and wrap into a container
Trait Implementations§
source§impl<T, R, C> Clone for ServiceChainFactory<T, R, C>where
T: Clone,
impl<T, R, C> Clone for ServiceChainFactory<T, R, C>where T: Clone,
source§impl<T, R, C> Debug for ServiceChainFactory<T, R, C>where
T: Debug,
impl<T, R, C> Debug for ServiceChainFactory<T, R, C>where T: Debug,
source§impl<T: ServiceFactory<R, C>, R, C> ServiceFactory<R, C> for ServiceChainFactory<T, R, C>
impl<T: ServiceFactory<R, C>, R, C> ServiceFactory<R, C> for ServiceChainFactory<T, R, C>
§type Response = <T as ServiceFactory<R, C>>::Response
type Response = <T as ServiceFactory<R, C>>::Response
§type Error = <T as ServiceFactory<R, C>>::Error
type Error = <T as ServiceFactory<R, C>>::Error
§type Service = <T as ServiceFactory<R, C>>::Service
type Service = <T as ServiceFactory<R, C>>::Service
Service created by this factory.§type InitError = <T as ServiceFactory<R, C>>::InitError
type InitError = <T as ServiceFactory<R, C>>::InitError
§type Future<'f> = <T as ServiceFactory<R, C>>::Future<'f>
where
Self: 'f
type Future<'f> = <T as ServiceFactory<R, C>>::Future<'f> where Self: 'f
ServiceFactory instance.source§fn create(&self, cfg: C) -> Self::Future<'_>
fn create(&self, cfg: C) -> Self::Future<'_>
source§fn pipeline(&self, cfg: Cfg) -> CreatePipeline<'_, Self, Req, Cfg> ⓘwhere
Self: Sized,
fn pipeline(&self, cfg: Cfg) -> CreatePipeline<'_, Self, Req, Cfg> ⓘwhere Self: Sized,
source§fn map<F, Res>(
self,
f: F
) -> ServiceChainFactory<MapFactory<Self, F, Req, Res, Cfg>, Req, Cfg>where
Self: Sized,
F: Fn(Self::Response) -> Res + Clone,
fn map<F, Res>( self, f: F ) -> ServiceChainFactory<MapFactory<Self, F, Req, Res, Cfg>, Req, Cfg>where Self: Sized, F: Fn(Self::Response) -> Res + Clone,
source§fn map_err<F, E>(
self,
f: F
) -> ServiceChainFactory<MapErrFactory<Self, Req, Cfg, F, E>, Req, Cfg>where
Self: Sized,
F: Fn(Self::Error) -> E + Clone,
fn map_err<F, E>( self, f: F ) -> ServiceChainFactory<MapErrFactory<Self, Req, Cfg, F, E>, Req, Cfg>where Self: Sized, F: Fn(Self::Error) -> E + Clone,
source§fn map_init_err<F, E>(
self,
f: F
) -> ServiceChainFactory<MapInitErr<Self, Req, Cfg, F, E>, Req, Cfg>where
Self: Sized,
F: Fn(Self::InitError) -> E + Clone,
fn map_init_err<F, E>( self, f: F ) -> ServiceChainFactory<MapInitErr<Self, Req, Cfg, F, E>, Req, Cfg>where Self: Sized, F: Fn(Self::InitError) -> E + Clone,
Auto Trait Implementations§
impl<T, Req, C> RefUnwindSafe for ServiceChainFactory<T, Req, C>where C: RefUnwindSafe, Req: RefUnwindSafe, T: RefUnwindSafe,
impl<T, Req, C> Send for ServiceChainFactory<T, Req, C>where C: Send, Req: Send, T: Send,
impl<T, Req, C> Sync for ServiceChainFactory<T, Req, C>where C: Sync, Req: Sync, T: Sync,
impl<T, Req, C> Unpin for ServiceChainFactory<T, Req, C>where C: Unpin, Req: Unpin, T: Unpin,
impl<T, Req, C> UnwindSafe for ServiceChainFactory<T, Req, C>where C: UnwindSafe, Req: UnwindSafe, T: UnwindSafe,
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<T, Req, Cfg> IntoServiceFactory<T, Req, Cfg> for Twhere
T: ServiceFactory<Req, Cfg>,
impl<T, Req, Cfg> IntoServiceFactory<T, Req, Cfg> for Twhere T: ServiceFactory<Req, Cfg>,
source§fn into_factory(self) -> T
fn into_factory(self) -> T
Self to a ServiceFactorysource§fn chain(self) -> ServiceChainFactory<T, Req, Cfg>where
Self: Sized,
fn chain(self) -> ServiceChainFactory<T, Req, Cfg>where Self: Sized,
Self to a ServiceChainFactory