pub struct TransportEventsListenerBuilder<'a, Handler, const BACKGROUND: bool = false> { /* private fields */ }Available on crate feature
unstable only.Expand description
A builder returned by SessionInfo::transport_events_listener() that allows subscribing to transport lifecycle events.
This API has been marked as unstable: it works as advertised, but it may be changed in a future release.
§Examples
use zenoh::sample::SampleKind;
let session = zenoh::open(zenoh::Config::default()).await.unwrap();
let events = session.info()
.transport_events_listener()
.history(true)
.with(flume::bounded(32))
.await
.expect("Failed to declare transport events listener");
while let Ok(event) = events.recv_async().await {
match event.kind() {
SampleKind::Put => println!("Transport opened: {}", event.transport().zid()),
SampleKind::Delete => println!("Transport closed"),
}
}Implementations§
Source§impl<'a, Handler> TransportEventsListenerBuilder<'a, Handler>
impl<'a, Handler> TransportEventsListenerBuilder<'a, Handler>
Sourcepub fn history(self, enabled: bool) -> Self
pub fn history(self, enabled: bool) -> Self
Enable history.
Send events for existing transports before live events.
Sourcepub fn with<H>(self, handler: H) -> TransportEventsListenerBuilder<'a, H>where
H: IntoHandler<TransportEvent>,
pub fn with<H>(self, handler: H) -> TransportEventsListenerBuilder<'a, H>where
H: IntoHandler<TransportEvent>,
Use a custom handler (channel, callback, etc.)
Sourcepub fn callback<F>(
self,
callback: F,
) -> TransportEventsListenerBuilder<'a, Callback<TransportEvent>>
pub fn callback<F>( self, callback: F, ) -> TransportEventsListenerBuilder<'a, Callback<TransportEvent>>
Provide a callback to handle events
Sourcepub fn callback_mut<F>(
self,
callback: F,
) -> TransportEventsListenerBuilder<'a, Callback<TransportEvent>>
pub fn callback_mut<F>( self, callback: F, ) -> TransportEventsListenerBuilder<'a, Callback<TransportEvent>>
Provide a mutable callback which is never called concurrently. If the callback can be accepted by
callback, prefer using that instead for better performance.
Source§impl<'a> TransportEventsListenerBuilder<'a, Callback<TransportEvent>>
impl<'a> TransportEventsListenerBuilder<'a, Callback<TransportEvent>>
Sourcepub fn background(
self,
) -> TransportEventsListenerBuilder<'a, Callback<TransportEvent>, true>
pub fn background( self, ) -> TransportEventsListenerBuilder<'a, Callback<TransportEvent>, true>
Run the listener in the background, automatically dropping the handler when done.
§Examples
use zenoh::sample::SampleKind;
let session = zenoh::open(zenoh::Config::default()).await.unwrap();
// no need to assign and keep a variable for a background listener
session.info()
.transport_events_listener()
.callback(|event| {
match event.kind() {
SampleKind::Put => println!("Transport opened: {}", event.transport().zid()),
SampleKind::Delete => println!("Transport closed"),
}
})
.background()
.await
.unwrap();Trait Implementations§
Source§impl IntoFuture for TransportEventsListenerBuilder<'_, Callback<TransportEvent>, true>
impl IntoFuture for TransportEventsListenerBuilder<'_, Callback<TransportEvent>, true>
Source§type Output = <TransportEventsListenerBuilder<'_, Callback<TransportEvent>, true> as Resolvable>::To
type Output = <TransportEventsListenerBuilder<'_, Callback<TransportEvent>, true> as Resolvable>::To
The output that the future will produce on completion.
Source§type IntoFuture = Ready<<TransportEventsListenerBuilder<'_, Callback<TransportEvent>, true> as Resolvable>::To>
type IntoFuture = Ready<<TransportEventsListenerBuilder<'_, Callback<TransportEvent>, true> as Resolvable>::To>
Which kind of future are we turning this into?
Source§fn into_future(self) -> Self::IntoFuture
fn into_future(self) -> Self::IntoFuture
Creates a future from a value. Read more
Source§impl<Handler> IntoFuture for TransportEventsListenerBuilder<'_, Handler>
impl<Handler> IntoFuture for TransportEventsListenerBuilder<'_, Handler>
Source§type Output = <TransportEventsListenerBuilder<'_, Handler> as Resolvable>::To
type Output = <TransportEventsListenerBuilder<'_, Handler> as Resolvable>::To
The output that the future will produce on completion.
Source§type IntoFuture = Ready<<TransportEventsListenerBuilder<'_, Handler> as Resolvable>::To>
type IntoFuture = Ready<<TransportEventsListenerBuilder<'_, Handler> as Resolvable>::To>
Which kind of future are we turning this into?
Source§fn into_future(self) -> Self::IntoFuture
fn into_future(self) -> Self::IntoFuture
Creates a future from a value. Read more
Source§impl Resolvable for TransportEventsListenerBuilder<'_, Callback<TransportEvent>, true>
impl Resolvable for TransportEventsListenerBuilder<'_, Callback<TransportEvent>, true>
Source§impl<Handler> Resolvable for TransportEventsListenerBuilder<'_, Handler>
impl<Handler> Resolvable for TransportEventsListenerBuilder<'_, Handler>
type To = Result<TransportEventsListener<<Handler as IntoHandler<TransportEvent>>::Handler>, Box<dyn Error + Sync + Send>>
Source§impl Wait for TransportEventsListenerBuilder<'_, Callback<TransportEvent>, true>
impl Wait for TransportEventsListenerBuilder<'_, Callback<TransportEvent>, true>
Source§fn wait(self) -> <Self as Resolvable>::To
fn wait(self) -> <Self as Resolvable>::To
Synchronously execute and wait
Source§impl<Handler> Wait for TransportEventsListenerBuilder<'_, Handler>
impl<Handler> Wait for TransportEventsListenerBuilder<'_, Handler>
Auto Trait Implementations§
impl<'a, Handler, const BACKGROUND: bool> Freeze for TransportEventsListenerBuilder<'a, Handler, BACKGROUND>where
Handler: Freeze,
impl<'a, Handler, const BACKGROUND: bool = false> !RefUnwindSafe for TransportEventsListenerBuilder<'a, Handler, BACKGROUND>
impl<'a, Handler, const BACKGROUND: bool> Send for TransportEventsListenerBuilder<'a, Handler, BACKGROUND>where
Handler: Send,
impl<'a, Handler, const BACKGROUND: bool> Sync for TransportEventsListenerBuilder<'a, Handler, BACKGROUND>where
Handler: Sync,
impl<'a, Handler, const BACKGROUND: bool> Unpin for TransportEventsListenerBuilder<'a, Handler, BACKGROUND>where
Handler: Unpin,
impl<'a, Handler, const BACKGROUND: bool> UnsafeUnpin for TransportEventsListenerBuilder<'a, Handler, BACKGROUND>where
Handler: UnsafeUnpin,
impl<'a, Handler, const BACKGROUND: bool = false> !UnwindSafe for TransportEventsListenerBuilder<'a, Handler, BACKGROUND>
Blanket Implementations§
Source§impl<Source> AccessAs for Source
impl<Source> AccessAs for Source
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
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
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more