hello_dds_subscriber/
hello_dds_subscriber.rs1#![allow(clippy::print_stdout, clippy::print_stderr)]
19
20use std::time::Duration;
21
22use zerodds_dcps::{
23 DataReaderQos, DdsError, DomainParticipantFactory, DomainParticipantQos, RawBytes,
24 SubscriberQos, TopicQos,
25};
26
27fn main() -> Result<(), Box<dyn std::error::Error>> {
28 let factory = DomainParticipantFactory::instance();
29 let participant = factory.create_participant(0, DomainParticipantQos::default())?;
30
31 let topic = participant.create_topic::<RawBytes>("Chatter", TopicQos::default())?;
32 let subscriber = participant.create_subscriber(SubscriberQos::default());
33 let reader = subscriber.create_datareader::<RawBytes>(&topic, DataReaderQos::default())?;
34
35 println!("hello_dds_subscriber: reading on Domain 0 Topic 'Chatter' โ Ctrl-C to stop");
36
37 loop {
38 match reader.wait_for_data(Duration::from_secs(1)) {
39 Ok(()) => {
40 for sample in reader.take()? {
41 match std::str::from_utf8(&sample.data) {
42 Ok(s) => println!(" <- {s}"),
43 Err(_) => println!(" <- <{} bytes of non-UTF8>", sample.data.len()),
44 }
45 }
46 }
47 Err(DdsError::Timeout) => {} Err(e) => return Err(e.into()),
49 }
50 }
51}