Struct rustdds::dds::no_key::DataReader [−][src]
pub struct DataReader<D: DeserializeOwned, DA: DeserializerAdapter<D> = CDRDeserializerAdapter<D>> { /* fields omitted */ }
Expand description
DDS DataReader for no key topics.
Examples
use serde::{Serialize, Deserialize};
use rustdds::dds::DomainParticipant;
use rustdds::dds::qos::QosPolicyBuilder;
use rustdds::dds::data_types::TopicKind;
use rustdds::dds::No_Key_DataReader as DataReader;
use rustdds::serialization::CDRDeserializerAdapter;
let domain_participant = DomainParticipant::new(0).unwrap();
let qos = QosPolicyBuilder::new().build();
let subscriber = domain_participant.create_subscriber(&qos).unwrap();
#[derive(Serialize, Deserialize)]
struct SomeType {}
// NoKey is important
let topic = domain_participant.create_topic("some_topic", "SomeType", &qos, TopicKind::NoKey).unwrap();
let data_reader = subscriber.create_datareader_no_key::<SomeType, CDRDeserializerAdapter<_>>(topic, None);
Implementations
pub fn read(
&mut self,
max_samples: usize,
read_condition: ReadCondition
) -> Result<Vec<DataSample<&D>>>
pub fn read(
&mut self,
max_samples: usize,
read_condition: ReadCondition
) -> Result<Vec<DataSample<&D>>>
Reads amount of samples found with max_samples
and read_condition
parameters.
Arguments
max_samples
- Limits maximum amount of samples readread_condition
- Limits results by condition
Examples
use rustdds::dds::data_types::ReadCondition;
let mut data_reader = subscriber.create_datareader_no_key::<SomeType, CDRDeserializerAdapter<_>>(topic, None).unwrap();
let data = data_reader.read(10, ReadCondition::not_read());
pub fn take(
&mut self,
max_samples: usize,
read_condition: ReadCondition
) -> Result<Vec<DataSample<D>>>
pub fn take(
&mut self,
max_samples: usize,
read_condition: ReadCondition
) -> Result<Vec<DataSample<D>>>
Takes amount of sample found with max_samples
and read_condition
parameters.
Arguments
max_samples
- Limits maximum amount of samples readread_condition
- Limits results by condition
Examples
let mut data_reader = subscriber.create_datareader_no_key::<SomeType, CDRDeserializerAdapter<_>>(topic, None).unwrap();
let data = data_reader.take(10, ReadCondition::not_read());
Reads next unread sample
Examples
let mut data_reader = subscriber.create_datareader_no_key::<SomeType, CDRDeserializerAdapter<_>>(topic, None).unwrap();
while let Ok(Some(data)) = data_reader.read_next_sample() {
// Do something
}
Takes next unread sample
Examples
let mut data_reader = subscriber.create_datareader_no_key::<SomeType, CDRDeserializerAdapter<_>>(topic, None).unwrap();
while let Ok(Some(data)) = data_reader.take_next_sample() {
// Do something
}
Produces an interator over the currently available NOT_READ samples.
Yields only payload data, not SampleInfo metadata
This is not called iter()
because it takes a mutable reference to self.
Examples
let mut data_reader = subscriber.create_datareader_no_key::<SomeType, CDRDeserializerAdapter<_>>(topic, None).unwrap();
for data in data_reader.iterator() {
// Do something
}
pub fn conditional_iterator(
&mut self,
read_condition: ReadCondition
) -> Result<impl Iterator<Item = &D>>
pub fn conditional_iterator(
&mut self,
read_condition: ReadCondition
) -> Result<impl Iterator<Item = &D>>
Produces an interator over the samples filtered b ygiven condition. Yields only payload data, not SampleInfo metadata
Examples
let mut data_reader = subscriber.create_datareader_no_key::<SomeType, CDRDeserializerAdapter<_>>(topic, None).unwrap();
for data in data_reader.conditional_iterator(ReadCondition::any()) {
// Do something
}
Produces an interator over the currently available NOT_READ samples.
Yields only payload data, not SampleInfo metadata
Removes samples from DataReader
.
Note! If the iterator is only partially consumed, all the samples it could have provided
are still removed from the Datareader
.
Examples
let mut data_reader = subscriber.create_datareader_no_key::<SomeType, CDRDeserializerAdapter<_>>(topic, None).unwrap();
for data in data_reader.into_iterator() {
// Do something
}
pub fn into_conditional_iterator(
&mut self,
read_condition: ReadCondition
) -> Result<impl Iterator<Item = D>>
pub fn into_conditional_iterator(
&mut self,
read_condition: ReadCondition
) -> Result<impl Iterator<Item = D>>
Produces an interator over the samples filtered b ygiven condition.
Yields only payload data, not SampleInfo metadata
Note! If the iterator is only partially consumed, all the samples it could have provided
are still removed from the Datareader
.
Examples
let mut data_reader = subscriber.create_datareader_no_key::<SomeType, CDRDeserializerAdapter<_>>(topic, None).unwrap();
for data in data_reader.into_conditional_iterator(ReadCondition::any()) {
// Do something
}