Safe DDS
eprosima::safedds::protocol::rtps::Reader Class Reference

RTPS Reader implementation. More...

#include <Reader.hpp>

Public Member Functions

 Reader (const GUID &reader_guid, const ReaderProperties &properties, ICacheChangeDatabaseUpdater &database_updater, IMessageSink &message_sink, memory::IMap< GUID, ProxyWriter > &proxy_map, IReaderObserver &observer) noexcept
 Reader constructor with message sink. More...
 
 Reader (const GUID &reader_guid, const ReaderProperties &properties, ICacheChangeDatabaseUpdater &database_updater, memory::IMap< GUID, ProxyWriter > &proxy_map, IReaderObserver &observer) noexcept
 Reader constructor without message sink. More...
 
virtual ~Reader () noexcept=default
 Virtual destructor. More...
 
 Reader (const Reader &) noexcept=delete
 Copy deleted. More...
 
 Reader (Reader &&) noexcept=delete
 Movement deleted. More...
 
Readeroperator= (const Reader &) noexcept=delete
 Copy operator deleted. More...
 
Readeroperator= (Reader &&) noexcept=delete
 Movement operator deleted. More...
 
void process_heartbeat (const ProcessorState &processor_state, const Submessage< Heartbeat > &heartbeat) noexcept override
 
void process_data (const ProcessorState &processor_state, const Submessage< Data > &data, const memory::IConstByteArrayView &inline_qos, const memory::IConstByteArrayView &payload) noexcept override
 
void process_datafrag (const ProcessorState &processor_state, const Submessage< DataFrag > &data_frag, const memory::IConstByteArrayView &inline_qos, const memory::IConstByteArrayView &payload) noexcept override
 
void process_gap (const ProcessorState &processor_state, const Submessage< Gap > &gap) noexcept override
 
void acknowledge_change (const GUID &writer_guid, const SequenceNumber &seq) noexcept override
 
void acknowledge_up_to_change (const GUID &writer_guid, const SequenceNumber &to) noexcept override
 
void request_change (const GUID &writer_guid, const SequenceNumber &seq) noexcept override
 
void request_multiple_changes (const GUID &writer_guid, const SequenceNumberSet &sequence_numbers) noexcept override
 
ReturnCode matched_writer_add (const GUID &writer_guid, const Reliability &writer_reliability) noexcept override
 
void matched_writer_remove (const GUID &writer_guid) noexcept override
 
bool matched_writer_exists (const GUID &writer_guid) const noexcept override
 
GUID guid () const noexcept override
 
Reliability reliability () const noexcept override
 
void spin (const execution::TimePoint &timepoint) noexcept override
 
bool has_pending_work () const noexcept override
 
execution::TimePoint get_next_work_timepoint () const noexcept override
 

Static Public Attributes

constexpr static uint32_t MAX_MESSAGE_ELEMENT = 4
 Reader max submessages for protocol::MessageElement arrays: RTPS Header + HeaderExtension + AckNack + NackFrag. More...
 

Protected Member Functions

ReturnCode check_guid_prefix (const GUIDPrefix &target_guid_prefix) const noexcept
 Checks prefix. More...
 
ReturnCode check_entity_id (const EntityId &target_entity_id) const noexcept
 Checks entity. More...
 

Static Protected Member Functions

static void acknowledge_proxywriter_sn (ProxyWriter &writer, const SequenceNumber &seq) noexcept
 Internal method for acknoledge a sequence number of a writer. More...
 

Protected Attributes

GUID guid_ {}
 Reader guid. More...
 
ReaderProperties properties_ {}
 Reader properties. More...
 
ICacheChangeDatabaseUpdaterdatabase_updater_
 CacheChange Database updater. More...
 
VoidMessageSink void_message_sink_
 Void Data Sink. More...
 
OutputIntegritySink integrity_sink_
 Output Integrity Sink. More...
 
IMessageSinkmessage_sink_
 Message sink. More...
 
memory::IMap< GUID, ProxyWriter > & matched_writers_
 Matched Writers. More...
 
IReaderObserverobserver_
 Reader Observer. More...
 
int32_t last_sent_acknack_count_ {0}
 Sent acknack counter. More...
 
int32_t last_sent_nackfrag_count_ {0}
 Sent nackfrag counter. More...
 
ProxyWriter * proxywriter_with_work_ {nullptr}
 ProxyWriter with work cache. More...
 
uint32_t next_proxywriter_index_ {0}
 Next proxywriter index for round-robin processing. More...
 

Detailed Description

RTPS Reader implementation.

Constructor & Destructor Documentation

◆ Reader() [1/4]

eprosima::safedds::protocol::rtps::Reader::Reader ( const GUID reader_guid,
const ReaderProperties &  properties,
ICacheChangeDatabaseUpdater database_updater,
IMessageSink message_sink,
memory::IMap< GUID, ProxyWriter > &  proxy_map,
IReaderObserver observer 
)
explicitnoexcept

Reader constructor with message sink.

message sink for reliable behaviour, if you are not interested on it, you can use overloaded version of contructor with no message_sink.

Parameters
[in]reader_guidReader unique identificator.
[in]propertiesProperties of the reader.
[in,out]database_updaterReference to database updater. Ownership is not taken
[in,out]message_sinkMessage sink necessary for reliable behaviour. Ownership is not taken
[in,out]proxy_mapStorage map for handling proxy writers. Ownership is not taken
[in,out]observerReader observer. Ownership is not taken

◆ Reader() [2/4]

eprosima::safedds::protocol::rtps::Reader::Reader ( const GUID reader_guid,
const ReaderProperties &  properties,
ICacheChangeDatabaseUpdater database_updater,
memory::IMap< GUID, ProxyWriter > &  proxy_map,
IReaderObserver observer 
)
explicitnoexcept

Reader constructor without message sink.

Reader constructor oriented to no reliable behaviour.

Parameters
reader_guidReader unique identificator.
propertiesProperties of the reader.
database_updaterReference to database updater.
proxy_mapStorage map for handling proxy writers.
[in,out]observerReader observer. Ownership is not taken

◆ ~Reader()

virtual eprosima::safedds::protocol::rtps::Reader::~Reader ( )
virtualdefaultnoexcept

Virtual destructor.

◆ Reader() [3/4]

eprosima::safedds::protocol::rtps::Reader::Reader ( const Reader )
deletenoexcept

Copy deleted.

◆ Reader() [4/4]

eprosima::safedds::protocol::rtps::Reader::Reader ( Reader &&  )
deletenoexcept

Movement deleted.

Member Function Documentation

◆ acknowledge_change()

void eprosima::safedds::protocol::rtps::Reader::acknowledge_change ( const GUID writer_guid,
const SequenceNumber &  seq 
)
overridenoexcept

◆ acknowledge_proxywriter_sn()

static void eprosima::safedds::protocol::rtps::Reader::acknowledge_proxywriter_sn ( ProxyWriter &  writer,
const SequenceNumber &  seq 
)
staticprotectednoexcept

Internal method for acknoledge a sequence number of a writer.

Parameters
writerWriter to acknowledge a change
seqsequence number.

◆ acknowledge_up_to_change()

void eprosima::safedds::protocol::rtps::Reader::acknowledge_up_to_change ( const GUID writer_guid,
const SequenceNumber &  to 
)
overridenoexcept

◆ check_entity_id()

ReturnCode eprosima::safedds::protocol::rtps::Reader::check_entity_id ( const EntityId &  target_entity_id) const
protectednoexcept

Checks entity.

Parameters
target_entity_idmessage target entity id.
Returns
ReturnCode.

◆ check_guid_prefix()

ReturnCode eprosima::safedds::protocol::rtps::Reader::check_guid_prefix ( const GUIDPrefix target_guid_prefix) const
protectednoexcept

Checks prefix.

Parameters
target_guid_prefixmessage target prefix.
Returns
ReturnCode.

◆ get_next_work_timepoint()

execution::TimePoint eprosima::safedds::protocol::rtps::Reader::get_next_work_timepoint ( ) const
overridenoexcept

◆ guid()

GUID eprosima::safedds::protocol::rtps::Reader::guid ( ) const
overridenoexcept

◆ has_pending_work()

bool eprosima::safedds::protocol::rtps::Reader::has_pending_work ( ) const
overridenoexcept

◆ matched_writer_add()

ReturnCode eprosima::safedds::protocol::rtps::Reader::matched_writer_add ( const GUID writer_guid,
const Reliability &  writer_reliability 
)
overridenoexcept

◆ matched_writer_exists()

bool eprosima::safedds::protocol::rtps::Reader::matched_writer_exists ( const GUID writer_guid) const
overridenoexcept

◆ matched_writer_remove()

void eprosima::safedds::protocol::rtps::Reader::matched_writer_remove ( const GUID writer_guid)
overridenoexcept

◆ operator=() [1/2]

Reader& eprosima::safedds::protocol::rtps::Reader::operator= ( const Reader )
deletenoexcept

Copy operator deleted.

◆ operator=() [2/2]

Reader& eprosima::safedds::protocol::rtps::Reader::operator= ( Reader &&  )
deletenoexcept

Movement operator deleted.

◆ process_data()

void eprosima::safedds::protocol::rtps::Reader::process_data ( const ProcessorState &  processor_state,
const Submessage< Data > &  data,
const memory::IConstByteArrayView inline_qos,
const memory::IConstByteArrayView payload 
)
overridenoexcept

◆ process_datafrag()

void eprosima::safedds::protocol::rtps::Reader::process_datafrag ( const ProcessorState &  processor_state,
const Submessage< DataFrag > &  data_frag,
const memory::IConstByteArrayView inline_qos,
const memory::IConstByteArrayView payload 
)
overridenoexcept

◆ process_gap()

void eprosima::safedds::protocol::rtps::Reader::process_gap ( const ProcessorState &  processor_state,
const Submessage< Gap > &  gap 
)
overridenoexcept

◆ process_heartbeat()

void eprosima::safedds::protocol::rtps::Reader::process_heartbeat ( const ProcessorState &  processor_state,
const Submessage< Heartbeat > &  heartbeat 
)
overridenoexcept

◆ reliability()

Reliability eprosima::safedds::protocol::rtps::Reader::reliability ( ) const
overridenoexcept

◆ request_change()

void eprosima::safedds::protocol::rtps::Reader::request_change ( const GUID writer_guid,
const SequenceNumber &  seq 
)
overridenoexcept

◆ request_multiple_changes()

void eprosima::safedds::protocol::rtps::Reader::request_multiple_changes ( const GUID writer_guid,
const SequenceNumberSet &  sequence_numbers 
)
overridenoexcept

◆ spin()

void eprosima::safedds::protocol::rtps::Reader::spin ( const execution::TimePoint timepoint)
overridenoexcept

Member Data Documentation

◆ database_updater_

ICacheChangeDatabaseUpdater& eprosima::safedds::protocol::rtps::Reader::database_updater_
protected

CacheChange Database updater.

◆ guid_

GUID eprosima::safedds::protocol::rtps::Reader::guid_ {}
protected

Reader guid.

◆ integrity_sink_

OutputIntegritySink eprosima::safedds::protocol::rtps::Reader::integrity_sink_
protected

Output Integrity Sink.

◆ last_sent_acknack_count_

int32_t eprosima::safedds::protocol::rtps::Reader::last_sent_acknack_count_ {0}
protected

Sent acknack counter.

◆ last_sent_nackfrag_count_

int32_t eprosima::safedds::protocol::rtps::Reader::last_sent_nackfrag_count_ {0}
protected

Sent nackfrag counter.

◆ matched_writers_

memory::IMap<GUID, ProxyWriter>& eprosima::safedds::protocol::rtps::Reader::matched_writers_
protected

Matched Writers.

◆ MAX_MESSAGE_ELEMENT

constexpr static uint32_t eprosima::safedds::protocol::rtps::Reader::MAX_MESSAGE_ELEMENT = 4
staticconstexpr

Reader max submessages for protocol::MessageElement arrays: RTPS Header + HeaderExtension + AckNack + NackFrag.

◆ message_sink_

IMessageSink& eprosima::safedds::protocol::rtps::Reader::message_sink_
protected

Message sink.

◆ next_proxywriter_index_

uint32_t eprosima::safedds::protocol::rtps::Reader::next_proxywriter_index_ {0}
mutableprotected

Next proxywriter index for round-robin processing.

◆ observer_

IReaderObserver& eprosima::safedds::protocol::rtps::Reader::observer_
protected

Reader Observer.

◆ properties_

ReaderProperties eprosima::safedds::protocol::rtps::Reader::properties_ {}
protected

Reader properties.

◆ proxywriter_with_work_

ProxyWriter* eprosima::safedds::protocol::rtps::Reader::proxywriter_with_work_ {nullptr}
mutableprotected

ProxyWriter with work cache.

Note
mutable justification: Used for optimization of proxy writers with work

◆ void_message_sink_

VoidMessageSink eprosima::safedds::protocol::rtps::Reader::void_message_sink_
protected

Void Data Sink.


The documentation for this class was generated from the following file: