pub struct Listener { /* private fields */ }Expand description
Listener attached to a Participant.
In the DDS entity hierarchy this composes SubscriberListener,
PublisherListener, and TopicListener. When attached to a
participant, entities created under it inherit any of the configured
callbacks that apply to that entity type.
§Examples
use cyclonedds::{Domain, Listener, Participant, Subscriber};
let domain = Domain::default();
let listener = Listener::new().with_subscriber(|subscriber_listener| {
subscriber_listener
.with_data_on_readers(|subscriber| println!("{subscriber:?} has data on readers"))
});
let participant = Participant::builder(&domain)
.with_listener(&listener)
.build()?;
// This subscriber inherits the callbacks set on the `participant` via the `listener`.
let subscriber = Subscriber::new(&participant)?;
// This subscriber will have the subscriber subset associated with the `listener` directly
// applied to it.
let subscriber = Subscriber::builder(&participant)
.with_listener(&listener)
.build()?;Implementations§
Source§impl Listener
impl Listener
Sourcepub fn with_subscriber(
self,
setter: fn(SubscriberListener) -> SubscriberListener,
) -> Self
pub fn with_subscriber( self, setter: fn(SubscriberListener) -> SubscriberListener, ) -> Self
Configures the SubscriberListener via a setter callback.
§Examples
use cyclonedds::Listener;
let listener = Listener::new().with_subscriber(|s| {
s.with_data_on_readers(|subscriber| {
println!("data available on a reader");
})
});Sourcepub fn with_publisher(
self,
setter: fn(PublisherListener) -> PublisherListener,
) -> Self
pub fn with_publisher( self, setter: fn(PublisherListener) -> PublisherListener, ) -> Self
Configures the PublisherListener via a setter callback.
§Examples
This example does not compile because the PublisherListener does not
have its with_writer::<T> setter yet. This is due to the fact that
the higher-level listeners are untyped in <T> but the lower-level
listeners are typed in <T> and a solution for crossing this boundary
still needs to be worked out.
See the module-level warning for more detail.
ⓘ
use cyclonedds::Listener;
let listener = Listener::new().with_publisher(|p| {
p.with_writer(|w| {
w.with_publication_matched(|writer, publication_matched| {
println!("{writer:?} has publication match: {publication_matched:?}")
})
})
});Trait Implementations§
Source§impl AsRef<PublisherListener> for Listener
impl AsRef<PublisherListener> for Listener
Source§fn as_ref(&self) -> &PublisherListener
fn as_ref(&self) -> &PublisherListener
Converts this type into a shared reference of the (usually inferred) input type.
Source§impl AsRef<SubscriberListener> for Listener
impl AsRef<SubscriberListener> for Listener
Source§fn as_ref(&self) -> &SubscriberListener
fn as_ref(&self) -> &SubscriberListener
Converts this type into a shared reference of the (usually inferred) input type.
impl Copy for Listener
Auto Trait Implementations§
impl Freeze for Listener
impl RefUnwindSafe for Listener
impl Send for Listener
impl Sync for Listener
impl Unpin for Listener
impl UnsafeUnpin for Listener
impl UnwindSafe for Listener
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