Struct rustdds::dds::no_key::DataReader

source ·
pub struct DataReader<D, DA: DeserializerAdapter<D> = CDRDeserializerAdapter<D>> { /* private fields */ }
Expand description

DDS DataReader for no key topics.

§Examples

use serde::{Serialize, Deserialize};
use rustdds::*;
use rustdds::no_key::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".to_string(), "SomeType".to_string(), &qos, TopicKind::NoKey).unwrap();
let data_reader = subscriber.create_datareader_no_key::<SomeType, CDRDeserializerAdapter<_>>(&topic, None);

Implementations§

source§

impl<D: 'static, DA> DataReader<D, DA>
where DA: DeserializerAdapter<D>,

source

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

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

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

pub fn take( &mut self, max_samples: usize, read_condition: ReadCondition ) -> ReadResult<Vec<DataSample<D>>>

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).unwrap();
let data = data_reader.take(10, ReadCondition::not_read());
source

pub fn read_next_sample(&mut self) -> ReadResult<Option<DataSample<&D>>>

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
}
source

pub fn take_next_sample(&mut self) -> ReadResult<Option<DataSample<D>>>

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
}
source

pub fn iterator(&mut self) -> ReadResult<impl Iterator<Item = &D>>

Produces an iterator 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
}
source

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

Produces an iterator over the samples filtered by given 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
}
source

pub fn into_iterator(&mut self) -> ReadResult<impl Iterator<Item = D>>

Produces an iterator 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
}
source

pub fn into_conditional_iterator( &mut self, read_condition: ReadCondition ) -> ReadResult<impl Iterator<Item = D>>

Produces an iterator over the samples filtered by given 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
}
source

pub fn async_sample_stream(self) -> DataReaderStream<D, DA>

An async stream for reading the (bare) data samples

Trait Implementations§

source§

impl<D, DA> Evented for DataReader<D, DA>
where DA: DeserializerAdapter<D>,

WARNING! UNTESTED

source§

fn register( &self, poll: &Poll, token: Token, interest: Ready, opts: PollOpt ) -> Result<()>

Register self with the given Poll instance. Read more
source§

fn reregister( &self, poll: &Poll, token: Token, interest: Ready, opts: PollOpt ) -> Result<()>

Re-register self with the given Poll instance. Read more
source§

fn deregister(&self, poll: &Poll) -> Result<()>

Deregister self from the given Poll instance Read more
source§

impl<D, DA> HasQoSPolicy for DataReader<D, DA>
where D: 'static, DA: DeserializerAdapter<D>,

source§

impl<D, DA> RTPSEntity for DataReader<D, DA>
where D: 'static, DA: DeserializerAdapter<D>,

source§

fn guid(&self) -> GUID

source§

fn entity_id(&self) -> EntityId

source§

fn guid_prefix(&self) -> GuidPrefix

source§

impl<D, DA> Source for DataReader<D, DA>
where DA: DeserializerAdapter<D>,

WARNING! UNTESTED

source§

fn register( &mut self, registry: &Registry, token: Token, interests: Interest ) -> Result<()>

Register self with the given Registry instance. Read more
source§

fn reregister( &mut self, registry: &Registry, token: Token, interests: Interest ) -> Result<()>

Re-register self with the given Registry instance. Read more
source§

fn deregister(&mut self, registry: &Registry) -> Result<()>

Deregister self from the given Registry instance. Read more
source§

impl<'a, D, DA> StatusEvented<'a, DataReaderStatus, SimpleDataReaderEventStream<'a, NoKeyWrapper<D>, DAWrapper<DA>>> for DataReader<D, DA>
where D: 'static, DA: DeserializerAdapter<D>,

source§

fn as_status_evented(&mut self) -> &dyn Evented

source§

fn as_status_source(&mut self) -> &mut dyn Source

source§

fn as_async_status_stream( &'a self ) -> SimpleDataReaderEventStream<'a, NoKeyWrapper<D>, DAWrapper<DA>>

source§

fn try_recv_status(&self) -> Option<DataReaderStatus>

Auto Trait Implementations§

§

impl<D, DA = CDRDeserializerAdapter<D>> !Freeze for DataReader<D, DA>

§

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

§

impl<D, DA> Send for DataReader<D, DA>
where D: Send, DA: Send,

§

impl<D, DA> Sync for DataReader<D, DA>
where D: Sync, DA: Sync,

§

impl<D, DA> Unpin for DataReader<D, DA>
where DA: Unpin,

§

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

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

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

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

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

source§

fn vzip(self) -> V