pub struct Selector<Err, InitErr> { /* private fields */ }
Expand description
Mqtt server selector
Selector allows to choose different mqtt server impls depends on connectt packet.
Implementations§
source§impl<Err, InitErr> Selector<Err, InitErr>where
Err: 'static,
InitErr: 'static,
impl<Err, InitErr> Selector<Err, InitErr>where Err: 'static, InitErr: 'static,
sourcepub fn connect_timeout(self, timeout: Seconds) -> Self
pub fn connect_timeout(self, timeout: Seconds) -> Self
Set client timeout for first Connect
frame.
Defines a timeout for reading Connect
frame. If a client does not transmit
the entire frame within this time, the connection is terminated with
Mqtt::Handshake(HandshakeError::Timeout) error.
By default, connect timeout is disabled.
sourcepub fn max_size(self, size: u32) -> Self
pub fn max_size(self, size: u32) -> Self
Set max inbound frame size.
If max size is set to 0
, size is unlimited.
By default max size is set to 0
sourcepub fn variant<F, R, St, C, Cn, P>(
self,
check: F,
server: MqttServer<St, C, Cn, P>
) -> Selfwhere
F: Fn(&Handshake) -> R + 'static,
R: Future<Output = Result<bool, Err>> + 'static,
St: 'static,
C: ServiceFactory<Handshake, Response = HandshakeAck<St>, Error = Err, InitError = InitErr> + 'static,
C::Error: From<Cn::Error> + From<Cn::InitError> + From<P::Error> + From<P::InitError> + Debug,
Cn: ServiceFactory<ControlMessage<Err>, Session<St>, Response = ControlResult> + 'static,
P: ServiceFactory<Publish, Session<St>, Response = PublishAck> + 'static,
P::Error: Debug,
PublishAck: TryFrom<P::Error, Error = C::Error>,
pub fn variant<F, R, St, C, Cn, P>( self, check: F, server: MqttServer<St, C, Cn, P> ) -> Selfwhere F: Fn(&Handshake) -> R + 'static, R: Future<Output = Result<bool, Err>> + 'static, St: 'static, C: ServiceFactory<Handshake, Response = HandshakeAck<St>, Error = Err, InitError = InitErr> + 'static, C::Error: From<Cn::Error> + From<Cn::InitError> + From<P::Error> + From<P::InitError> + Debug, Cn: ServiceFactory<ControlMessage<Err>, Session<St>, Response = ControlResult> + 'static, P: ServiceFactory<Publish, Session<St>, Response = PublishAck> + 'static, P::Error: Debug, PublishAck: TryFrom<P::Error, Error = C::Error>,
Add server variant
Trait Implementations§
source§impl<Err, InitErr> ServiceFactory<(IoBoxed, Deadline)> for Selector<Err, InitErr>where
Err: 'static,
InitErr: 'static,
impl<Err, InitErr> ServiceFactory<(IoBoxed, Deadline)> for Selector<Err, InitErr>where Err: 'static, InitErr: 'static,
§type Future<'f> = Pin<Box<dyn Future<Output = Result<<Selector<Err, InitErr> as ServiceFactory<(IoBoxed, Deadline)>>::Service, <Selector<Err, InitErr> as ServiceFactory<(IoBoxed, Deadline)>>::InitError>> + 'f>>
type Future<'f> = Pin<Box<dyn Future<Output = Result<<Selector<Err, InitErr> as ServiceFactory<(IoBoxed, Deadline)>>::Service, <Selector<Err, InitErr> as ServiceFactory<(IoBoxed, Deadline)>>::InitError>> + 'f>>
The future of the
ServiceFactory
instance.source§fn create(&self, _: ()) -> Self::Future<'_>
fn create(&self, _: ()) -> Self::Future<'_>
Create and return a new service value asynchronously.
§fn pipeline(&self, cfg: Cfg) -> CreatePipeline<'_, Self, Req, Cfg>where
Self: Sized,
fn pipeline(&self, cfg: Cfg) -> CreatePipeline<'_, Self, Req, Cfg>where Self: Sized,
Create and return a new service value asynchronously and wrap into a container
§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,
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
) -> 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,
Map this service’s error to a different error, returning a new service.
§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,
Map this factory’s init error to a different error, returning a new service.
source§impl<F, Err, InitErr> ServiceFactory<Io<F>> for Selector<Err, InitErr>where
F: Filter,
Err: 'static,
InitErr: 'static,
impl<F, Err, InitErr> ServiceFactory<Io<F>> for Selector<Err, InitErr>where F: Filter, Err: 'static, InitErr: 'static,
§type Future<'f> = Pin<Box<dyn Future<Output = Result<<Selector<Err, InitErr> as ServiceFactory<Io<F>>>::Service, <Selector<Err, InitErr> as ServiceFactory<Io<F>>>::InitError>> + 'f>>
type Future<'f> = Pin<Box<dyn Future<Output = Result<<Selector<Err, InitErr> as ServiceFactory<Io<F>>>::Service, <Selector<Err, InitErr> as ServiceFactory<Io<F>>>::InitError>> + 'f>>
The future of the
ServiceFactory
instance.source§fn create(&self, _: ()) -> Self::Future<'_>
fn create(&self, _: ()) -> Self::Future<'_>
Create and return a new service value asynchronously.
§fn pipeline(&self, cfg: Cfg) -> CreatePipeline<'_, Self, Req, Cfg>where
Self: Sized,
fn pipeline(&self, cfg: Cfg) -> CreatePipeline<'_, Self, Req, Cfg>where Self: Sized,
Create and return a new service value asynchronously and wrap into a container
§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,
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
) -> 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,
Map this service’s error to a different error, returning a new service.
§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,
Map this factory’s init error to a different error, returning a new service.
source§impl<Err, InitErr> ServiceFactory<IoBoxed> for Selector<Err, InitErr>where
Err: 'static,
InitErr: 'static,
impl<Err, InitErr> ServiceFactory<IoBoxed> for Selector<Err, InitErr>where Err: 'static, InitErr: 'static,
§type Future<'f> = Pin<Box<dyn Future<Output = Result<<Selector<Err, InitErr> as ServiceFactory<IoBoxed>>::Service, <Selector<Err, InitErr> as ServiceFactory<IoBoxed>>::InitError>> + 'f>>
type Future<'f> = Pin<Box<dyn Future<Output = Result<<Selector<Err, InitErr> as ServiceFactory<IoBoxed>>::Service, <Selector<Err, InitErr> as ServiceFactory<IoBoxed>>::InitError>> + 'f>>
The future of the
ServiceFactory
instance.source§fn create(&self, _: ()) -> Self::Future<'_>
fn create(&self, _: ()) -> Self::Future<'_>
Create and return a new service value asynchronously.
§fn pipeline(&self, cfg: Cfg) -> CreatePipeline<'_, Self, Req, Cfg>where
Self: Sized,
fn pipeline(&self, cfg: Cfg) -> CreatePipeline<'_, Self, Req, Cfg>where Self: Sized,
Create and return a new service value asynchronously and wrap into a container
§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,
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
) -> 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,
Map this service’s error to a different error, returning a new service.
§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,
Map this factory’s init error to a different error, returning a new service.
Auto Trait Implementations§
impl<Err, InitErr> !RefUnwindSafe for Selector<Err, InitErr>
impl<Err, InitErr> !Send for Selector<Err, InitErr>
impl<Err, InitErr> !Sync for Selector<Err, InitErr>
impl<Err, InitErr> Unpin for Selector<Err, InitErr>where Err: Unpin, InitErr: Unpin,
impl<Err, InitErr> !UnwindSafe for Selector<Err, InitErr>
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
Mutably borrows from an owned value. Read more
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
§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>,
§fn into_factory(self) -> T
fn into_factory(self) -> T
Convert
Self
to a ServiceFactory