Struct rustdds::dds::no_key::DataWriter
source · pub struct DataWriter<D, SA: SerializerAdapter<D> = CDRSerializerAdapter<D>> { /* private fields */ }
Expand description
DDS DataWriter for no key topics
§Examples
use serde::{Serialize, Deserialize};
use rustdds::*;
use rustdds::no_key::DataWriter;
use rustdds::serialization::CDRSerializerAdapter;
let domain_participant = DomainParticipant::new(0).unwrap();
let qos = QosPolicyBuilder::new().build();
let publisher = domain_participant.create_publisher(&qos).unwrap();
#[derive(Serialize, Deserialize, Debug)]
struct SomeType {}
// NoKey is important
let topic = domain_participant.create_topic("some_topic".to_string(), "SomeType".to_string(), &qos, TopicKind::NoKey).unwrap();
let data_writer = publisher.create_datawriter_no_key::<SomeType, CDRSerializerAdapter<_>>(&topic, None);
Implementations§
source§impl<D, SA> DataWriter<D, SA>where
SA: SerializerAdapter<D>,
impl<D, SA> DataWriter<D, SA>where
SA: SerializerAdapter<D>,
sourcepub fn write(
&self,
data: D,
source_timestamp: Option<Timestamp>
) -> WriteResult<(), D>
pub fn write( &self, data: D, source_timestamp: Option<Timestamp> ) -> WriteResult<(), D>
Writes single data instance to a topic.
§Examples
let domain_participant = DomainParticipant::new(0).unwrap();
let qos = QosPolicyBuilder::new().build();
let publisher = domain_participant.create_publisher(&qos).unwrap();
// NoKey is important
let topic = domain_participant.create_topic("some_topic".to_string(), "SomeType".to_string(), &qos, TopicKind::NoKey).unwrap();
let data_writer = publisher.create_datawriter_no_key::<SomeType, CDRSerializerAdapter<_>>(&topic, None).unwrap();
let some_data = SomeType {};
data_writer.write(some_data, None).unwrap();
pub fn write_with_options( &self, data: D, write_options: WriteOptions ) -> WriteResult<SampleIdentity, D>
sourcepub fn wait_for_acknowledgments(
&self,
max_wait: Duration
) -> WriteResult<bool, ()>
pub fn wait_for_acknowledgments( &self, max_wait: Duration ) -> WriteResult<bool, ()>
Waits for all acknowledgements to finish
§Examples
let domain_participant = DomainParticipant::new(0).unwrap();
let qos = QosPolicyBuilder::new().build();
let publisher = domain_participant.create_publisher(&qos).unwrap();
// NoKey is important
let topic = domain_participant.create_topic("some_topic".to_string(), "SomeType".to_string(), &qos, TopicKind::NoKey).unwrap();
let data_writer = publisher.create_datawriter_no_key::<SomeType, CDRSerializerAdapter<_>>(&topic, None).unwrap();
data_writer.wait_for_acknowledgments(Duration::from_millis(100));
sourcepub fn topic(&self) -> &Topic
pub fn topic(&self) -> &Topic
Topic this DataWriter is connected to.
§Examples
let domain_participant = DomainParticipant::new(0).unwrap();
let qos = QosPolicyBuilder::new().build();
let publisher = domain_participant.create_publisher(&qos).unwrap();
// NoKey is important
let topic = domain_participant.create_topic("some_topic".to_string(), "SomeType".to_string(), &qos, TopicKind::NoKey).unwrap();
let data_writer = publisher.create_datawriter_no_key::<SomeType, CDRSerializerAdapter<_>>(&topic, None).unwrap();
assert_eq!(&topic, data_writer.topic());
sourcepub fn publisher(&self) -> &Publisher
pub fn publisher(&self) -> &Publisher
Publisher this DataWriter is connected to.
§Examples
let domain_participant = DomainParticipant::new(0).unwrap();
let qos = QosPolicyBuilder::new().build();
let publisher = domain_participant.create_publisher(&qos).unwrap();
// NoKey is important
let topic = domain_participant.create_topic("some_topic".to_string(), "SomeType".to_string(), &qos, TopicKind::NoKey).unwrap();
let data_writer = publisher.create_datawriter_no_key::<SomeType, CDRSerializerAdapter<_>>(&topic, None).unwrap();
assert_eq!(&publisher, data_writer.publisher());
sourcepub fn assert_liveliness(&self) -> WriteResult<(), ()>
pub fn assert_liveliness(&self) -> WriteResult<(), ()>
Manually asserts liveliness if QoS agrees
§Examples
let domain_participant = DomainParticipant::new(0).unwrap();
let qos = QosPolicyBuilder::new().build();
let publisher = domain_participant.create_publisher(&qos).unwrap();
// NoKey is important
let topic = domain_participant.create_topic("some_topic".to_string(), "SomeType".to_string(), &qos, TopicKind::NoKey).unwrap();
let data_writer = publisher.create_datawriter_no_key::<SomeType, CDRSerializerAdapter<_>>(&topic, None).unwrap();
data_writer.assert_liveliness();
sourcepub fn get_matched_subscriptions(&self) -> Vec<SubscriptionBuiltinTopicData>
pub fn get_matched_subscriptions(&self) -> Vec<SubscriptionBuiltinTopicData>
Unimplemented. Do not use.
§Examples
ⓘ
let domain_participant = DomainParticipant::new(0).unwrap();
let qos = QosPolicyBuilder::new().build();
let publisher = domain_participant.create_publisher(&qos).unwrap();
// NoKey is important
let topic = domain_participant.create_topic("some_topic".to_string(), "SomeType".to_string(), &qos, TopicKind::NoKey).unwrap();
let data_writer = publisher.create_datawriter_no_key::<SomeType, CDRSerializerAdapter<_>>(topic, None).unwrap();
for sub in data_writer.get_matched_subscriptions().iter() {
// handle subscriptions
}
source§impl<D, SA> DataWriter<D, SA>where
SA: SerializerAdapter<D>,
impl<D, SA> DataWriter<D, SA>where
SA: SerializerAdapter<D>,
pub async fn async_write( &self, data: D, source_timestamp: Option<Timestamp> ) -> WriteResult<(), D>
pub async fn async_write_with_options( &self, data: D, write_options: WriteOptions ) -> WriteResult<SampleIdentity, D>
pub async fn async_wait_for_acknowledgments(&self) -> WriteResult<bool, ()>
Trait Implementations§
source§impl<D, SA: SerializerAdapter<D>> HasQoSPolicy for DataWriter<D, SA>
impl<D, SA: SerializerAdapter<D>> HasQoSPolicy for DataWriter<D, SA>
fn qos(&self) -> QosPolicies
source§impl<D, SA: SerializerAdapter<D>> RTPSEntity for DataWriter<D, SA>
impl<D, SA: SerializerAdapter<D>> RTPSEntity for DataWriter<D, SA>
source§impl<'a, D, SA> StatusEvented<'a, DataWriterStatus, StatusReceiverStream<'a, DataWriterStatus>> for DataWriter<D, SA>where
SA: SerializerAdapter<D>,
impl<'a, D, SA> StatusEvented<'a, DataWriterStatus, StatusReceiverStream<'a, DataWriterStatus>> for DataWriter<D, SA>where
SA: SerializerAdapter<D>,
WARNING! UNTESTED
fn as_status_evented(&mut self) -> &dyn Evented
fn as_status_source(&mut self) -> &mut dyn Source
fn as_async_status_stream( &'a self ) -> StatusReceiverStream<'a, DataWriterStatus>
fn try_recv_status(&self) -> Option<DataWriterStatus>
Auto Trait Implementations§
impl<D, SA = CDRSerializerAdapter<D>> !Freeze for DataWriter<D, SA>
impl<D, SA = CDRSerializerAdapter<D>> !RefUnwindSafe for DataWriter<D, SA>
impl<D, SA> Send for DataWriter<D, SA>
impl<D, SA> Sync for DataWriter<D, SA>
impl<D, SA> Unpin for DataWriter<D, SA>
impl<D, SA = CDRSerializerAdapter<D>> !UnwindSafe for DataWriter<D, SA>
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