Trait ntex_service::ServiceFactory [−][src]
pub trait ServiceFactory { type Request; type Response; type Error; type Config; type Service: Service<Request = Self::Request, Response = Self::Response, Error = Self::Error>; type InitError; type Future: Future<Output = Result<Self::Service, Self::InitError>>; fn new_service(&self, cfg: Self::Config) -> Self::Future; fn map<F, R>(self, f: F) -> MapServiceFactory<Self, F, R>
where
Self: Sized,
F: FnMut(Self::Response) -> R + Clone, { ... } fn map_err<F, E>(self, f: F) -> MapErrServiceFactory<Self, F, E>
where
Self: Sized,
F: Fn(Self::Error) -> E + Clone, { ... } fn map_init_err<F, E>(self, f: F) -> MapInitErr<Self, F, E>
where
Self: Sized,
F: Fn(Self::InitError) -> E + Clone, { ... } }
Expand description
Creates new Service
values.
Acts as a service factory. This is useful for cases where new Service
values must be produced. One case is a TCP server listener. The listener
accepts new TCP streams, obtains a new Service
value using the
ServiceFactory
trait, and uses that new Service
value to process inbound
requests on that new TCP stream.
Config
is a service factory configuration type.
Associated Types
Required methods
fn new_service(&self, cfg: Self::Config) -> Self::Future
[src]
fn new_service(&self, cfg: Self::Config) -> Self::Future
[src]Create and return a new service value asynchronously.
Provided methods
fn map<F, R>(self, f: F) -> MapServiceFactory<Self, F, R> where
Self: Sized,
F: FnMut(Self::Response) -> R + Clone,
[src]
fn map<F, R>(self, f: F) -> MapServiceFactory<Self, F, R> where
Self: Sized,
F: FnMut(Self::Response) -> R + Clone,
[src]Map this service’s output to a different type, returning a new service of the resulting type.
fn map_err<F, E>(self, f: F) -> MapErrServiceFactory<Self, F, E> where
Self: Sized,
F: Fn(Self::Error) -> E + Clone,
[src]
fn map_err<F, E>(self, f: F) -> MapErrServiceFactory<Self, F, E> where
Self: Sized,
F: Fn(Self::Error) -> E + Clone,
[src]Map this service’s error to a different error, returning a new service.
fn map_init_err<F, E>(self, f: F) -> MapInitErr<Self, F, E> where
Self: Sized,
F: Fn(Self::InitError) -> E + Clone,
[src]
fn map_init_err<F, E>(self, f: F) -> MapInitErr<Self, F, E> where
Self: Sized,
F: Fn(Self::InitError) -> E + Clone,
[src]Map this factory’s init error to a different error, returning a new service.
Implementations on Foreign Types
impl<S> ServiceFactory for Rc<S> where
S: ServiceFactory,
[src]
impl<S> ServiceFactory for Rc<S> where
S: ServiceFactory,
[src]Implementors
impl<A, C> ServiceFactory for UnitConfig<A, C> where
A: ServiceFactory<Config = ()>,
[src]
impl<A, C> ServiceFactory for UnitConfig<A, C> where
A: ServiceFactory<Config = ()>,
[src]impl<A, F, C> ServiceFactory for MapConfig<A, F, C> where
A: ServiceFactory,
F: Fn(C) -> A::Config,
[src]
impl<A, F, C> ServiceFactory for MapConfig<A, F, C> where
A: ServiceFactory,
F: Fn(C) -> A::Config,
[src]impl<A, F, E> ServiceFactory for MapErrServiceFactory<A, F, E> where
A: ServiceFactory,
F: Fn(A::Error) -> E + Clone,
[src]
impl<A, F, E> ServiceFactory for MapErrServiceFactory<A, F, E> where
A: ServiceFactory,
F: Fn(A::Error) -> E + Clone,
[src]impl<A, F, E> ServiceFactory for MapInitErr<A, F, E> where
A: ServiceFactory,
F: Fn(A::InitError) -> E + Clone,
[src]
impl<A, F, E> ServiceFactory for MapInitErr<A, F, E> where
A: ServiceFactory,
F: Fn(A::InitError) -> E + Clone,
[src]impl<A, F, Res> ServiceFactory for MapServiceFactory<A, F, Res> where
A: ServiceFactory,
F: FnMut(A::Response) -> Res + Clone,
[src]
impl<A, F, Res> ServiceFactory for MapServiceFactory<A, F, Res> where
A: ServiceFactory,
F: FnMut(A::Response) -> Res + Clone,
[src]impl<C, Req, Res, Err, InitErr> ServiceFactory for BoxServiceFactory<C, Req, Res, Err, InitErr> where
Req: 'static,
Res: 'static,
Err: 'static,
InitErr: 'static,
[src]
impl<C, Req, Res, Err, InitErr> ServiceFactory for BoxServiceFactory<C, Req, Res, Err, InitErr> where
Req: 'static,
Res: 'static,
Err: 'static,
InitErr: 'static,
[src]impl<F, C, S, R, E> ServiceFactory for FnServiceNoConfig<F, C, S, R, E> where
F: Fn() -> R,
R: Future<Output = Result<S, E>>,
S: Service,
[src]
impl<F, C, S, R, E> ServiceFactory for FnServiceNoConfig<F, C, S, R, E> where
F: Fn() -> R,
R: Future<Output = Result<S, E>>,
S: Service,
[src]impl<F, Fut, Cfg, Srv, Err> ServiceFactory for FnServiceConfig<F, Fut, Cfg, Srv, Err> where
F: Fn(Cfg) -> Fut,
Fut: Future<Output = Result<Srv, Err>>,
Srv: Service,
[src]
impl<F, Fut, Cfg, Srv, Err> ServiceFactory for FnServiceConfig<F, Fut, Cfg, Srv, Err> where
F: Fn(Cfg) -> Fut,
Fut: Future<Output = Result<Srv, Err>>,
Srv: Service,
[src]impl<F, Fut, Req, Res, Err, Cfg, FShut> ServiceFactory for FnServiceFactory<F, Fut, Req, Res, Err, Cfg, FShut> where
F: Fn(Req) -> Fut + Clone,
FShut: FnOnce() + Clone,
Fut: Future<Output = Result<Res, Err>>,
[src]
impl<F, Fut, Req, Res, Err, Cfg, FShut> ServiceFactory for FnServiceFactory<F, Fut, Req, Res, Err, Cfg, FShut> where
F: Fn(Req) -> Fut + Clone,
FShut: FnOnce() + Clone,
Fut: Future<Output = Result<Res, Err>>,
[src]impl<T, F, R, In, Out, Err> ServiceFactory for ApplyServiceFactory<T, F, R, In, Out, Err> where
T: ServiceFactory<Error = Err>,
F: Fn(In, &T::Service) -> R + Clone,
R: Future<Output = Result<Out, Err>>,
[src]
impl<T, F, R, In, Out, Err> ServiceFactory for ApplyServiceFactory<T, F, R, In, Out, Err> where
T: ServiceFactory<Error = Err>,
F: Fn(In, &T::Service) -> R + Clone,
R: Future<Output = Result<Out, Err>>,
[src]impl<T, S> ServiceFactory for ApplyTransform<T, S> where
S: ServiceFactory,
T: Transform<S::Service, InitError = S::InitError>,
[src]
impl<T, S> ServiceFactory for ApplyTransform<T, S> where
S: ServiceFactory,
T: Transform<S::Service, InitError = S::InitError>,
[src]