Struct rustdds::dds::no_key::DataReader[][src]

pub struct DataReader<D: DeserializeOwned, DA: DeserializerAdapter<D> = CDRDeserializerAdapter<D>> { /* fields omitted */ }

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);
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, None);

Implementations

impl<D: 'static, DA> DataReader<D, DA> where
    D: DeserializeOwned,
    DA: DeserializerAdapter<D>, 
[src]

pub fn read(
    &mut self,
    max_samples: usize,
    read_condition: ReadCondition
) -> Result<Vec<DataSample<&D>>>
[src]

Reads amount of samples found with max_samples and read_condition parameters.

Arguments

  • max_samples - Limits maximum amount of samples read
  • read_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, 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>>>
[src]

Takes amount of sample found with max_samples and read_condition parameters.

Arguments

  • max_samples - Limits maximum amount of samples read
  • read_condition - Limits results by condition

Examples

let mut data_reader = subscriber.create_datareader_no_key::<SomeType, CDRDeserializerAdapter<_>>(topic, None, None).unwrap();
let data = data_reader.take(10, ReadCondition::not_read());

pub fn read_next_sample(&mut self) -> Result<Option<DataSample<&D>>>[src]

Reads next unread sample

Examples

let mut data_reader = subscriber.create_datareader_no_key::<SomeType, CDRDeserializerAdapter<_>>(topic, None, None).unwrap();
while let Ok(Some(data)) = data_reader.read_next_sample() {
  // Do something
}

pub fn take_next_sample(&mut self) -> Result<Option<DataSample<D>>>[src]

Takes next unread sample

Examples

let mut data_reader = subscriber.create_datareader_no_key::<SomeType, CDRDeserializerAdapter<_>>(topic, None, None).unwrap();
while let Ok(Some(data)) = data_reader.take_next_sample() {
  // Do something
}

pub fn iterator(&mut self) -> Result<impl Iterator<Item = &D>>[src]

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, None).unwrap();
for data in data_reader.iterator() {
  // Do something
}

pub fn conditional_iterator(
    &mut self,
    read_condition: ReadCondition
) -> Result<impl Iterator<Item = &D>>
[src]

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, None).unwrap();
for data in data_reader.conditional_iterator(ReadCondition::any()) {
  // Do something
}

pub fn into_iterator(&mut self) -> Result<impl Iterator<Item = D>>[src]

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, 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>>
[src]

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, None).unwrap();
for data in data_reader.into_conditional_iterator(ReadCondition::any()) {
  // Do something
}

Trait Implementations

impl<D, DA> Evented for DataReader<D, DA> where
    D: DeserializeOwned,
    DA: DeserializerAdapter<D>, 
[src]

impl<D, DA> HasQoSPolicy for DataReader<D, DA> where
    D: DeserializeOwned,
    DA: DeserializerAdapter<D>, 
[src]

impl<D, DA> RTPSEntity for DataReader<D, DA> where
    D: DeserializeOwned,
    DA: DeserializerAdapter<D>, 
[src]

Auto Trait Implementations

impl<D, DA = CDRDeserializerAdapter<D>> !RefUnwindSafe for DataReader<D, DA>[src]

impl<D, DA> Send for DataReader<D, DA> where
    D: Send,
    DA: Send
[src]

impl<D, DA = CDRDeserializerAdapter<D>> !Sync for DataReader<D, DA>[src]

impl<D, DA> Unpin for DataReader<D, DA> where
    DA: Unpin
[src]

impl<D, DA = CDRDeserializerAdapter<D>> !UnwindSafe for DataReader<D, DA>[src]

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

impl<V, T> VZip<V> for T where
    V: MultiLane<T>,