RTPS Writer implementation.
More...
#include <Writer.hpp>
|
| | Writer (const GUID &writer_guid, const WriterProperties &properties, ICacheChangeDatabaseQuerier &database_querier, IMessageSink &message_sink, ICacheChangeRelevanceQuerier &relevance_querier, IWriterObserver &writer_observer, memory::IMap< GUID, ProxyReader > &proxy_map) noexcept |
| | Writer constructor. More...
|
| |
| virtual | ~Writer () noexcept=default |
| | Virtual destructor. More...
|
| |
| | Writer (const Writer &) noexcept=delete |
| | Copy deleted. More...
|
| |
| | Writer (Writer &&) noexcept=delete |
| | Movement deleted. More...
|
| |
| Writer & | operator= (const Writer &) noexcept=delete |
| | Copy operator deleted. More...
|
| |
| Writer & | operator= (Writer &&) noexcept=delete |
| | Movement operator deleted. More...
|
| |
| virtual void | assert_protocol_liveliness () noexcept |
| | Trigger manual liveliness assertion. More...
|
| |
| void | process_nackfrag (const ProcessorState &processor_state, const Submessage< NackFrag > &nackfrag) noexcept override |
| |
| void | process_acknack (const ProcessorState &processor_state, const Submessage< AckNack > &acknack) noexcept override |
| |
| ReturnCode | set_last_sequence_number (const SequenceNumber &sn) noexcept override |
| |
| SequenceNumber | get_last_sequence_number () const noexcept override |
| |
| ReturnCode | matched_reader_add (const GUID &reader_guid, const Reliability &reader_reliability, bool send_historical_data) noexcept override |
| |
| void | matched_reader_remove (const GUID &reader_guid) noexcept override |
| |
| bool | matched_reader_exists (const GUID &reader_guid) const noexcept override |
| |
| void | matched_reader_set_group (const GUID &reader_guid, const EndpointGroup &group) noexcept override |
| |
| GUID | guid () const noexcept override |
| |
| Reliability | reliability () const noexcept override |
| |
| void | request_remote_acknowledgements () 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 |
| |
|
| constexpr static uint32_t | MAX_MESSAGE_ELEMENTS = 8 |
| | Writer max submessages for protocol::MessageElement arrays: RTPS Header + HeaderExtension + InfoTimestamp + Data + InlineQoS + Payload + Padding + HeartBeat. More...
|
| |
|
| void | handle_heartbeat_timer () noexcept |
| | Handle internal heartbeat timer. More...
|
| |
| void | stop_timer_if_required () noexcept |
| | Stop internal heartbeat timer if required. More...
|
| |
| ProxyReader * | get_first_proxyreader_with_work () const noexcept |
| | retrieves a ProxyReader with pending work. More...
|
| |
| void | process_proxyreader (ProxyReader &reader, const execution::TimePoint &timepoint) noexcept |
| | process communication with a certain ProxyReader. More...
|
| |
| ReturnCode | check_guid (const GUID &target_guid) const noexcept |
| | Checks GUID target for an incoming submsg. More...
|
| |
| void | notify_acknowledged_sequence_numbers () noexcept |
| | Notify if corresponds that a sequence number has been acknowledged by all readers. More...
|
| |
| bool | is_reliable_communication (const ProxyReader &proxy_reader) const noexcept |
| | Checks if communication with a proxy reader is reliable. More...
|
| |
| void | add_data_submsg (const SequenceNumber &sn, const CacheChangeInfo &change_info, const memory::IConstByteArrayView &payload, const memory::IConstByteArrayView &inline_qos, Submessage< Data > &data, MessageHandler< MAX_MESSAGE_ELEMENTS > &message_handler) const noexcept |
| | Fills and includes a Data submessage into a MessageHandler. More...
|
| |
| void | add_datafrag_submsg (const CacheChangeInfo &change_info, const SequenceNumber &sn, const FragmentNumber &fragment_number, bool is_last_fragment, const memory::IConstByteArrayView &payload, const memory::IConstByteArrayView &inline_qos, Submessage< DataFrag > &datafrag, MessageHandler< MAX_MESSAGE_ELEMENTS > &message_handler) const noexcept |
| | Fills and includes a Data submessage into a MessageHandler. More...
|
| |
| void | add_heartbeat_submsg (Submessage< Heartbeat > &heartbeat, MessageHandler< MAX_MESSAGE_ELEMENTS > &message_handler, bool final_flag, bool liveliness_flag, const SequenceNumber &first_available_sn) noexcept |
| | Fills and includes a Heartbeat submessage into a MessageHandler. More...
|
| |
| void | add_gap_submsg (const SequenceNumber &first_irrelevant, const SequenceNumber &first_relevant, Submessage< Gap > &gap, MessageHandler< MAX_MESSAGE_ELEMENTS > &message_handler) const noexcept |
| | Fills and includes a Gap submessage into a MessageHandler. More...
|
| |
RTPS Writer implementation.
◆ Writer() [1/3]
Writer constructor.
- Parameters
-
| [in] | writer_guid | writer GUID. |
| [in] | properties | writer properties. |
| [in,out] | database_querier | reference to database querier. Ownership is not taken. |
| [in,out] | message_sink | sink for messages. Ownership is not taken. |
| [in,out] | relevance_querier | reference to cache change relevance querier. Ownership is not taken. |
| [in,out] | writer_observer | reference to writer observer. Ownership is not taken. |
| [in,out] | proxy_map | storage for ProxyReaders. Ownership is not taken. |
◆ ~Writer()
| virtual eprosima::safedds::protocol::rtps::Writer::~Writer |
( |
| ) |
|
|
virtualdefaultnoexcept |
◆ Writer() [2/3]
| eprosima::safedds::protocol::rtps::Writer::Writer |
( |
const Writer & |
| ) |
|
|
deletenoexcept |
◆ Writer() [3/3]
| eprosima::safedds::protocol::rtps::Writer::Writer |
( |
Writer && |
| ) |
|
|
deletenoexcept |
◆ add_data_submsg()
Fills and includes a Data submessage into a MessageHandler.
- Parameters
-
| sn | sequence number of the cache change. |
| change_info | cache change information. |
| payload | cache change fragmented payload. |
| inline_qos | cache change inline qos values. |
| [out] | data | reference to Data submessage to fill. |
| [in,out] | message_handler | reference to RTPS message handler. |
◆ add_datafrag_submsg()
Fills and includes a Data submessage into a MessageHandler.
- Parameters
-
| change_info | cache change information. |
| sn | sequence number of the cache change. |
| fragment_number | cache change information. |
| is_last_fragment | is last fragment flag. |
| payload | cache change complete payload. |
| inline_qos | cache change inline qos values. |
| [out] | datafrag | reference to DataFrag submessage to fill. |
| [in,out] | message_handler | reference to RTPS message handler. |
◆ add_gap_submsg()
| void eprosima::safedds::protocol::rtps::Writer::add_gap_submsg |
( |
const SequenceNumber & |
first_irrelevant, |
|
|
const SequenceNumber & |
first_relevant, |
|
|
Submessage< Gap > & |
gap, |
|
|
MessageHandler< MAX_MESSAGE_ELEMENTS > & |
message_handler |
|
) |
| const |
|
protectednoexcept |
Fills and includes a Gap submessage into a MessageHandler.
- Parameters
-
| first_irrelevant | first sequence number of the irrelevant cache changes. |
| first_relevant | first relevant change found after first_irrelevant. |
| [out] | gap | reference to Gap submessage to fill. |
| [in,out] | message_handler | reference to RTPS message handler. |
◆ add_heartbeat_submsg()
| void eprosima::safedds::protocol::rtps::Writer::add_heartbeat_submsg |
( |
Submessage< Heartbeat > & |
heartbeat, |
|
|
MessageHandler< MAX_MESSAGE_ELEMENTS > & |
message_handler, |
|
|
bool |
final_flag, |
|
|
bool |
liveliness_flag, |
|
|
const SequenceNumber & |
first_available_sn |
|
) |
| |
|
protectednoexcept |
Fills and includes a Heartbeat submessage into a MessageHandler.
- Parameters
-
| [out] | heartbeat | reference to Heartbeat submessage to fill. |
| [in,out] | message_handler | reference to RTPS message handler. |
| final_flag | Heartbeat final flag. |
| liveliness_flag | Heartbeat liveliness flag. |
| [in] | first_available_sn | First available sequence number in database. |
◆ assert_protocol_liveliness()
| virtual void eprosima::safedds::protocol::rtps::Writer::assert_protocol_liveliness |
( |
| ) |
|
|
virtualnoexcept |
Trigger manual liveliness assertion.
This method will trigger output liveliness heartbeats to matched readers on the next spin
◆ check_guid()
| ReturnCode eprosima::safedds::protocol::rtps::Writer::check_guid |
( |
const GUID & |
target_guid | ) |
const |
|
protectednoexcept |
Checks GUID target for an incoming submsg.
- Parameters
-
| target_guid | message target guid. |
- Returns
- ReturnCode.
◆ get_first_proxyreader_with_work()
| ProxyReader* eprosima::safedds::protocol::rtps::Writer::get_first_proxyreader_with_work |
( |
| ) |
const |
|
protectednoexcept |
retrieves a ProxyReader with pending work.
- Returns
- ProxyReader*.
◆ get_last_sequence_number()
| SequenceNumber eprosima::safedds::protocol::rtps::Writer::get_last_sequence_number |
( |
| ) |
const |
|
overridenoexcept |
◆ get_next_work_timepoint()
◆ guid()
| GUID eprosima::safedds::protocol::rtps::Writer::guid |
( |
| ) |
const |
|
overridenoexcept |
◆ handle_heartbeat_timer()
| void eprosima::safedds::protocol::rtps::Writer::handle_heartbeat_timer |
( |
| ) |
|
|
protectednoexcept |
Handle internal heartbeat timer.
◆ has_pending_work()
| bool eprosima::safedds::protocol::rtps::Writer::has_pending_work |
( |
| ) |
const |
|
overridenoexcept |
◆ is_reliable_communication()
| bool eprosima::safedds::protocol::rtps::Writer::is_reliable_communication |
( |
const ProxyReader & |
proxy_reader | ) |
const |
|
protectednoexcept |
Checks if communication with a proxy reader is reliable.
- Parameters
-
| proxy_reader | reference to proxyreader. |
- Returns
- true if reliable, false otherwise.
◆ matched_reader_add()
| ReturnCode eprosima::safedds::protocol::rtps::Writer::matched_reader_add |
( |
const GUID & |
reader_guid, |
|
|
const Reliability & |
reader_reliability, |
|
|
bool |
send_historical_data |
|
) |
| |
|
overridenoexcept |
◆ matched_reader_exists()
| bool eprosima::safedds::protocol::rtps::Writer::matched_reader_exists |
( |
const GUID & |
reader_guid | ) |
const |
|
overridenoexcept |
◆ matched_reader_remove()
| void eprosima::safedds::protocol::rtps::Writer::matched_reader_remove |
( |
const GUID & |
reader_guid | ) |
|
|
overridenoexcept |
◆ matched_reader_set_group()
| void eprosima::safedds::protocol::rtps::Writer::matched_reader_set_group |
( |
const GUID & |
reader_guid, |
|
|
const EndpointGroup & |
group |
|
) |
| |
|
overridenoexcept |
◆ notify_acknowledged_sequence_numbers()
| void eprosima::safedds::protocol::rtps::Writer::notify_acknowledged_sequence_numbers |
( |
| ) |
|
|
protectednoexcept |
Notify if corresponds that a sequence number has been acknowledged by all readers.
◆ operator=() [1/2]
| Writer& eprosima::safedds::protocol::rtps::Writer::operator= |
( |
const Writer & |
| ) |
|
|
deletenoexcept |
◆ operator=() [2/2]
| Writer& eprosima::safedds::protocol::rtps::Writer::operator= |
( |
Writer && |
| ) |
|
|
deletenoexcept |
Movement operator deleted.
◆ process_acknack()
| void eprosima::safedds::protocol::rtps::Writer::process_acknack |
( |
const ProcessorState & |
processor_state, |
|
|
const Submessage< AckNack > & |
acknack |
|
) |
| |
|
overridenoexcept |
◆ process_nackfrag()
| void eprosima::safedds::protocol::rtps::Writer::process_nackfrag |
( |
const ProcessorState & |
processor_state, |
|
|
const Submessage< NackFrag > & |
nackfrag |
|
) |
| |
|
overridenoexcept |
◆ process_proxyreader()
| void eprosima::safedds::protocol::rtps::Writer::process_proxyreader |
( |
ProxyReader & |
reader, |
|
|
const execution::TimePoint & |
timepoint |
|
) |
| |
|
protectednoexcept |
process communication with a certain ProxyReader.
- Parameters
-
| reader | SequenceNumberSet to update. |
| timepoint | Maximum TimePoint to execute this method. |
◆ reliability()
| Reliability eprosima::safedds::protocol::rtps::Writer::reliability |
( |
| ) |
const |
|
overridenoexcept |
◆ request_remote_acknowledgements()
| void eprosima::safedds::protocol::rtps::Writer::request_remote_acknowledgements |
( |
| ) |
|
|
overridenoexcept |
◆ set_last_sequence_number()
| ReturnCode eprosima::safedds::protocol::rtps::Writer::set_last_sequence_number |
( |
const SequenceNumber & |
sn | ) |
|
|
overridenoexcept |
◆ spin()
◆ stop_timer_if_required()
| void eprosima::safedds::protocol::rtps::Writer::stop_timer_if_required |
( |
| ) |
|
|
protectednoexcept |
Stop internal heartbeat timer if required.
◆ ProcessProxyReaderStatus
| friend struct ProcessProxyReaderStatus |
|
friend |
◆ database_querier_
CacheChange Database querier.
◆ first_unacknowledged_sn_
| SequenceNumber eprosima::safedds::protocol::rtps::Writer::first_unacknowledged_sn_ {0, 1} |
|
protected |
first acknowledge by all sequence number.
◆ fragment_max_size_
| uint16_t eprosima::safedds::protocol::rtps::Writer::fragment_max_size_ = 0 |
|
protected |
Max allowed DATAFRAG payload size.
◆ guid_
| GUID eprosima::safedds::protocol::rtps::Writer::guid_ {} |
|
protected |
◆ heartbeat_timer_
◆ integrity_sink_
| OutputIntegritySink eprosima::safedds::protocol::rtps::Writer::integrity_sink_ |
|
protected |
◆ last_sent_heartbeat_count_
| int32_t eprosima::safedds::protocol::rtps::Writer::last_sent_heartbeat_count_ {0} |
|
protected |
◆ last_sequence_number_
| SequenceNumber eprosima::safedds::protocol::rtps::Writer::last_sequence_number_ {0, 0} |
|
protected |
last generated sequence number.
◆ matched_readers_
| memory::IMap<GUID, ProxyReader>& eprosima::safedds::protocol::rtps::Writer::matched_readers_ |
|
protected |
◆ MAX_MESSAGE_ELEMENTS
| constexpr static uint32_t eprosima::safedds::protocol::rtps::Writer::MAX_MESSAGE_ELEMENTS = 8 |
|
staticconstexpr |
Writer max submessages for protocol::MessageElement arrays: RTPS Header + HeaderExtension + InfoTimestamp + Data + InlineQoS + Payload + Padding + HeartBeat.
◆ message_sink_
| IMessageSink& eprosima::safedds::protocol::rtps::Writer::message_sink_ |
|
protected |
◆ need_confirmation_check_
| bool eprosima::safedds::protocol::rtps::Writer::need_confirmation_check_ = false |
|
protected |
Flag to indicate a required confirmation status.
◆ payload_max_size_
| uint32_t eprosima::safedds::protocol::rtps::Writer::payload_max_size_ = 0 |
|
protected |
Max allowed DATA payload size.
◆ properties_
| WriterProperties eprosima::safedds::protocol::rtps::Writer::properties_ |
|
protected |
◆ proxyreader_with_work_
| ProxyReader* eprosima::safedds::protocol::rtps::Writer::proxyreader_with_work_ {nullptr} |
|
mutableprotected |
ProxyReader with work cache.
- Note
- mutable justification: Used for optimization of proxy readers with work
◆ relevance_querier_
CacheChange relevance querier.
◆ writer_observer_
| IWriterObserver& eprosima::safedds::protocol::rtps::Writer::writer_observer_ |
|
protected |
WriterObserver to acknowledge sn.
The documentation for this class was generated from the following file:
- build/docs/user_manual/v3.0.0/tmp/include/safedds/protocol/rtps/Writer.hpp