OpenDDS
Snapshot(2023/04/07-19:43)
|
Adapt the TransportReceiveStrategy for RTPS's "sample" (submessage) Header. More...
#include <RtpsSampleHeader.h>
Public Member Functions | |
RtpsSampleHeader () | |
RtpsSampleHeader (ACE_Message_Block &mb) | |
RtpsSampleHeader & | operator= (ACE_Message_Block &mn) |
void | pdu_remaining (size_t size) |
size_t | get_serialized_size () |
ACE_UINT32 | message_length () |
bool | valid () const |
bool | into_received_data_sample (ReceivedDataSample &rds) |
bool | more_fragments () const |
Static Public Member Functions | |
static size_t | get_max_serialized_size () |
static bool | partial (const ACE_Message_Block &) |
static SequenceRange | split (const ACE_Message_Block &orig, size_t size, Message_Block_Ptr &head, Message_Block_Ptr &tail) |
static bool | payload_byte_order (const ReceivedDataSample &rds) |
static void | populate_data_sample_submessages (RTPS::SubmessageSeq &subm, const DataSampleElement &dsle, bool requires_inline_qos) |
static void | populate_data_control_submessages (RTPS::SubmessageSeq &subm, const TransportSendControlElement &tsce, bool requires_inline_qos) |
static void | populate_inline_qos (const TransportSendListener::InlineQosData &qos_data, RTPS::ParameterList &plist) |
static bool | control_message_supported (char message_id) |
Public Attributes | |
RTPS::Submessage | submessage_ |
Static Public Attributes | |
static const ACE_CDR::UShort | FRAG_SIZE = 1024 |
Private Member Functions | |
void | init (ACE_Message_Block &mb) |
Static Private Member Functions | |
static void | process_iqos (DataSampleHeader &opendds, const OpenDDS::RTPS::ParameterList &iqos) |
Private Attributes | |
bool | valid_ |
bool | frag_ |
bool | data_ |
size_t | serialized_size_ |
size_t | message_length_ |
Adapt the TransportReceiveStrategy for RTPS's "sample" (submessage) Header.
Definition at line 32 of file RtpsSampleHeader.h.
ACE_INLINE OpenDDS::DCPS::RtpsSampleHeader::RtpsSampleHeader | ( | ) |
Definition at line 14 of file RtpsSampleHeader.inl.
References ACE_INLINE.
|
explicit |
Definition at line 24 of file RtpsSampleHeader.inl.
References ACE_INLINE, and init().
|
static |
Definition at line 77 of file RtpsSampleHeader.inl.
References OpenDDS::DCPS::DISPOSE_INSTANCE, OpenDDS::DCPS::DISPOSE_UNREGISTER_INSTANCE, OpenDDS::DCPS::INSTANCE_REGISTRATION, OPENDDS_END_VERSIONED_NAMESPACE_DECL, and OpenDDS::DCPS::UNREGISTER_INSTANCE.
Referenced by OpenDDS::DCPS::RtpsUdpDataLink::RtpsWriter::customize_queue_element_helper(), and OpenDDS::DCPS::RtpsUdpDataLink::customize_queue_element_non_reliable_i().
|
inlinestatic |
Definition at line 39 of file RtpsSampleHeader.h.
ACE_INLINE size_t OpenDDS::DCPS::RtpsSampleHeader::get_serialized_size | ( | ) |
Definition at line 59 of file RtpsSampleHeader.inl.
References ACE_INLINE, and serialized_size_.
Referenced by OpenDDS::DCPS::RtpsUdpReceiveStrategy::handle_input().
|
private |
Definition at line 59 of file RtpsSampleHeader.cpp.
References OpenDDS::RTPS::ACKNACK, CASE_SMKIND, ACE_Message_Block::cont(), OpenDDS::RTPS::DATA, OpenDDS::RTPS::DATA_FRAG, OpenDDS::DCPS::ENDIAN_BIG, OpenDDS::DCPS::ENDIAN_LITTLE, OpenDDS::RTPS::FLAG_D, OpenDDS::RTPS::FLAG_E, OpenDDS::RTPS::FLAG_K_IN_DATA, OpenDDS::RTPS::GAP, OpenDDS::RTPS::HEARTBEAT, OpenDDS::RTPS::HEARTBEAT_FRAG, OpenDDS::RTPS::INFO_DST, OpenDDS::RTPS::INFO_REPLY, OpenDDS::RTPS::INFO_REPLY_IP4, OpenDDS::RTPS::INFO_SRC, OpenDDS::RTPS::INFO_TS, OpenDDS::DCPS::Encoding::KIND_XCDR1, ACE_Message_Block::length(), OpenDDS::RTPS::NACK_FRAG, OpenDDS::RTPS::PAD, ACE_Message_Block::rd_ptr(), OpenDDS::RTPS::SEC_BODY, OpenDDS::RTPS::SEC_POSTFIX, OpenDDS::RTPS::SEC_PREFIX, OpenDDS::DCPS::Serializer::skip(), OpenDDS::RTPS::SMHDR_SZ, OpenDDS::RTPS::SecuritySubmessage::smHeader, OpenDDS::RTPS::SRTPS_POSTFIX, OpenDDS::RTPS::SRTPS_PREFIX, OpenDDS::RTPS::SubmessageHeader::submessageLength, and ACE_Message_Block::total_length().
Referenced by operator=(), and RtpsSampleHeader().
bool OpenDDS::DCPS::RtpsSampleHeader::into_received_data_sample | ( | ReceivedDataSample & | rds | ) |
Definition at line 237 of file RtpsSampleHeader.cpp.
References ACE_DEBUG, OpenDDS::DCPS::ReceivedDataSample::append(), OpenDDS::DCPS::DataSampleHeader::byte_order_, OpenDDS::DCPS::DataSampleHeader::cdr_encapsulation_, OpenDDS::RTPS::DATA, OpenDDS::RTPS::DATA_FRAG, OpenDDS::DCPS::GUID_t::entityId, OpenDDS::DCPS::EntityId_t::entityKind, OpenDDS::RTPS::FLAG_D, OpenDDS::RTPS::FLAG_K_IN_DATA, OpenDDS::RTPS::FLAG_K_IN_FRAG, OpenDDS::RTPS::FLAG_Q, OpenDDS::RTPS::SubmessageHeader::flags, OpenDDS::RTPS::DataFragSubmessage::fragmentsInSubmessage, OpenDDS::RTPS::DataFragSubmessage::fragmentSize, OpenDDS::RTPS::DataFragSubmessage::fragmentStartingNum, OpenDDS::DCPS::ReceivedDataSample::has_data(), OpenDDS::DCPS::ReceivedDataSample::header_, OpenDDS::RTPS::DataSubmessage::inlineQos, OpenDDS::RTPS::DataFragSubmessage::inlineQos, OpenDDS::DCPS::DataSampleHeader::key_fields_only_, LM_DEBUG, LM_WARNING, OpenDDS::DCPS::DataSampleHeader::message_id_, OpenDDS::DCPS::DataSampleHeader::message_length_, OpenDDS::DCPS::DataSampleHeader::more_fragments_, OpenDDS::RTPS::PID_KEY_HASH, OpenDDS::DCPS::DataSampleHeader::publication_id_, OpenDDS::DCPS::ReceivedDataSample::replace(), OpenDDS::DCPS::SAMPLE_DATA, OpenDDS::RTPS::DataFragSubmessage::sampleSize, OpenDDS::DCPS::DataSampleHeader::sequence_, OpenDDS::DCPS::serialized_size(), OpenDDS::RTPS::DataSubmessage::smHeader, OpenDDS::RTPS::DataFragSubmessage::smHeader, OpenDDS::RTPS::to_opendds_seqnum(), OpenDDS::DCPS::Transport_debug_level, OpenDDS::RTPS::FragmentNumber_t::value, OpenDDS::RTPS::DataSubmessage::writerId, OpenDDS::RTPS::DataFragSubmessage::writerId, OpenDDS::RTPS::DataSubmessage::writerSN, and OpenDDS::RTPS::DataFragSubmessage::writerSN.
Referenced by OpenDDS::DCPS::RtpsUdpReceiveStrategy::deliver_from_secure(), and OpenDDS::DCPS::RtpsUdpReceiveStrategy::handle_input().
ACE_INLINE ACE_UINT32 OpenDDS::DCPS::RtpsSampleHeader::message_length | ( | void | ) |
Definition at line 65 of file RtpsSampleHeader.inl.
References ACE_INLINE, and message_length_.
Referenced by OpenDDS::DCPS::RtpsUdpReceiveStrategy::handle_input().
ACE_INLINE bool OpenDDS::DCPS::RtpsSampleHeader::more_fragments | ( | void | ) | const |
Definition at line 71 of file RtpsSampleHeader.inl.
References ACE_INLINE, and frag_.
Referenced by OpenDDS::DCPS::RtpsUdpReceiveStrategy::deliver_from_secure(), and OpenDDS::DCPS::RtpsUdpReceiveStrategy::handle_input().
ACE_INLINE RtpsSampleHeader & OpenDDS::DCPS::RtpsSampleHeader::operator= | ( | ACE_Message_Block & | mn | ) |
Definition at line 35 of file RtpsSampleHeader.inl.
References ACE_INLINE, data_, frag_, init(), and valid_.
|
inlinestatic |
Definition at line 44 of file RtpsSampleHeader.h.
|
static |
Definition at line 326 of file RtpsSampleHeader.cpp.
References OpenDDS::RTPS::FLAG_E, OpenDDS::DCPS::grow(), header, OpenDDS::RTPS::INFO_TS, OpenDDS::RTPS::INFO_TS_SZ, DDS::Time_t::nanosec, OpenDDS::DCPS::nanoseconds_to_uint32_fractional_seconds(), OpenDDS::DCPS::ReceivedDataSample::peek(), DDS::Time_t::sec, OpenDDS::DCPS::DataSampleHeader::source_timestamp_nanosec_, and OpenDDS::DCPS::DataSampleHeader::source_timestamp_sec_.
Referenced by OpenDDS::DCPS::RtpsUdpReceiveStrategy::decode_payload().
ACE_INLINE void OpenDDS::DCPS::RtpsSampleHeader::pdu_remaining | ( | size_t | size | ) |
Definition at line 53 of file RtpsSampleHeader.inl.
References ACE_INLINE, and message_length_.
Referenced by OpenDDS::DCPS::RtpsUdpReceiveStrategy::handle_input().
|
static |
Definition at line 440 of file RtpsSampleHeader.cpp.
References ACE_DEBUG, OpenDDS::DCPS::DataSampleHeader::byte_order_, OpenDDS::RTPS::DATA, OpenDDS::RTPS::DATA_OCTETS_TO_IQOS, OpenDDS::DCPS::DISPOSE_INSTANCE, OpenDDS::DCPS::DISPOSE_UNREGISTER_INSTANCE, OpenDDS::DCPS::GUID_t::entityId, OpenDDS::DCPS::ENTITYID_UNKNOWN, OpenDDS::DCPS::EntityId_t::entityKind, OpenDDS::RTPS::FLAG_K_IN_DATA, OpenDDS::RTPS::FLAG_Q, OpenDDS::RTPS::SubmessageHeader::flags, OpenDDS::DCPS::grow(), header, OpenDDS::DCPS::TransportSendControlElement::header(), OpenDDS::RTPS::DataSubmessage::inlineQos, OpenDDS::DCPS::INSTANCE_REGISTRATION, OpenDDS::DCPS::TransportSendControlElement::listener(), LM_INFO, OpenDDS::DCPS::DataSampleHeader::message_id_, OpenDDS::DCPS::TransportSendControlElement::msg_payload(), OpenDDS::DCPS::DataSampleHeader::publication_id_, OpenDDS::DCPS::TransportSendListener::retrieve_inline_qos_data(), OpenDDS::DCPS::DataSampleHeader::sequence_, OpenDDS::RTPS::DataSubmessage::smHeader, OpenDDS::RTPS::to_rtps_seqnum(), and OpenDDS::DCPS::UNREGISTER_INSTANCE.
Referenced by OpenDDS::DCPS::RtpsUdpDataLink::RtpsWriter::customize_queue_element_helper(), and OpenDDS::DCPS::RtpsUdpDataLink::customize_queue_element_non_reliable_i().
|
static |
Definition at line 348 of file RtpsSampleHeader.cpp.
References ACE_DEBUG, OpenDDS::DCPS::DataSampleHeader::byte_order_, OpenDDS::RTPS::DATA, OpenDDS::RTPS::DATA_OCTETS_TO_IQOS, OpenDDS::DCPS::GUID_t::entityId, OpenDDS::DCPS::ENTITYID_UNKNOWN, OpenDDS::RTPS::FLAG_D, OpenDDS::RTPS::FLAG_Q, OpenDDS::RTPS::SubmessageHeader::flags, OpenDDS::DCPS::DataSampleElement::get_header(), OpenDDS::DCPS::DataSampleElement::get_num_subs(), OpenDDS::DCPS::DataSampleElement::get_pub_id(), OpenDDS::DCPS::DataSampleElement::get_send_listener(), OpenDDS::DCPS::DataSampleElement::get_sub_id(), OpenDDS::DCPS::grow(), OpenDDS::DCPS::GUID_t::guidPrefix, OpenDDS::RTPS::InfoDestinationSubmessage::guidPrefix, OpenDDS::DCPS::GUIDPREFIX_UNKNOWN, OpenDDS::RTPS::INFO_DST, OpenDDS::RTPS::INFO_DST_SZ, OpenDDS::RTPS::DataSubmessage::inlineQos, OpenDDS::RTPS::Parameter::key_hash, LM_INFO, OpenDDS::DCPS::DataSampleHeader::message_id_, OpenDDS::DCPS::push_back(), ACE_Message_Block::rd_ptr(), OpenDDS::DCPS::TransportSendListener::retrieve_inline_qos_data(), OpenDDS::DCPS::SAMPLE_DATA, OpenDDS::DCPS::DataSampleHeader::sequence_, OpenDDS::RTPS::DataSubmessage::smHeader, OpenDDS::RTPS::InfoDestinationSubmessage::smHeader, OpenDDS::RTPS::SubmessageHeader::submessageId, OpenDDS::RTPS::SubmessageHeader::submessageLength, OpenDDS::RTPS::to_rtps_seqnum(), and OpenDDS::RTPS::KeyHash_t::value.
Referenced by OpenDDS::DCPS::RtpsUdpDataLink::RtpsWriter::customize_queue_element_helper(), and OpenDDS::DCPS::RtpsUdpDataLink::customize_queue_element_non_reliable_i().
|
static |
Definition at line 531 of file RtpsSampleHeader.cpp.
References OpenDDS::RTPS::BEST_EFFORT, DDS::BEST_EFFORT_RELIABILITY_QOS, ACE_Message_Block::copy(), OpenDDS::DCPS::TransportSendListener::InlineQosData::dw_qos, OpenDDS::DCPS::grow(), OpenDDS::RTPS::ReliabilityQosPolicyRtps::kind, DDS::ReliabilityQosPolicy::kind, OpenDDS::RTPS::ReliabilityQosPolicyRtps::max_blocking_time, DDS::ReliabilityQosPolicy::max_blocking_time, OpenDDS::RTPS::PID_TOPIC_NAME, PROCESS_INLINE_QOS, OpenDDS::DCPS::TransportSendListener::InlineQosData::pub_qos, DDS::DataWriterQos::reliability, OpenDDS::RTPS::RELIABLE, ACE_CDR::swap_2(), ACE_CDR::swap_4(), TheServiceParticipant, OpenDDS::DCPS::TransportSendListener::InlineQosData::topic_name, OpenDDS::RTPS::ReliabilityKind_t::value, ACE_Message_Block::wr_ptr(), and write().
|
staticprivate |
Definition at line 187 of file RtpsSampleHeader.cpp.
References DDS::PresentationQosPolicy::access_scope, ACE_DEBUG, DDS::PresentationQosPolicy::coherent_access, OpenDDS::DCPS::DISPOSE_INSTANCE, OpenDDS::DCPS::DISPOSE_UNREGISTER_INSTANCE, OpenDDS::DCPS::DataSampleHeader::historic_sample_, OpenDDS::DCPS::INSTANCE_REGISTRATION, LM_DEBUG, OpenDDS::DCPS::DataSampleHeader::message_id_, DDS::PartitionQosPolicy::name, OPENDDS_STRING, DDS::PresentationQosPolicy::ordered_access, OpenDDS::RTPS::PID_ORIGINAL_WRITER_INFO, OpenDDS::RTPS::PID_PARTITION, OpenDDS::RTPS::PID_PRESENTATION, OpenDDS::RTPS::PID_STATUS_INFO, OpenDDS::RTPS::PID_TOPIC_NAME, OpenDDS::DCPS::to_dds_string(), and OpenDDS::DCPS::UNREGISTER_INSTANCE.
|
static |
Create two new serialized headers (owned by caller), the "head" having at most "size" bytes (header + data) and the "tail" having the rest. Returns a pair containing the largest fragment number in each new header.
Definition at line 629 of file RtpsSampleHeader.cpp.
References ACE_CDR_BYTE_ORDER, ACE_ERROR, ACE_Message_Block::cont(), ACE_Message_Block::copy(), OpenDDS::RTPS::DATA, OpenDDS::RTPS::DATA_FRAG, OpenDDS::RTPS::DATA_FRAG_OCTETS_TO_IQOS, OpenDDS::RTPS::FLAG_D, OpenDDS::RTPS::FLAG_E, OpenDDS::RTPS::FLAG_K_IN_DATA, OpenDDS::RTPS::FLAG_K_IN_FRAG, OpenDDS::RTPS::FLAG_N_IN_DATA, OpenDDS::RTPS::FLAG_N_IN_FRAG, OpenDDS::RTPS::FLAG_Q, ACE_Message_Block::length(), LM_ERROR, OPENDDS_END_VERSIONED_NAMESPACE_DECL, ACE_Message_Block::rd_ptr(), OpenDDS::DCPS::unique_ptr< T, Deleter >::release(), OpenDDS::DCPS::unique_ptr< T, Deleter >::reset(), OpenDDS::RTPS::SMHDR_SZ, ACE_Message_Block::total_length(), OpenDDS::DCPS::Transport_debug_level, OpenDDS::DCPS::unknown_sequence_range, ACE_Message_Block::wr_ptr(), and write().
Referenced by OpenDDS::DCPS::RtpsCustomizedElement::fragment().
ACE_INLINE bool OpenDDS::DCPS::RtpsSampleHeader::valid | ( | void | ) | const |
Definition at line 47 of file RtpsSampleHeader.inl.
References ACE_INLINE, and valid_.
Referenced by OpenDDS::DCPS::RtpsUdpReceiveStrategy::check_header().
|
private |
Definition at line 74 of file RtpsSampleHeader.h.
Referenced by operator=().
|
private |
Definition at line 74 of file RtpsSampleHeader.h.
Referenced by more_fragments(), and operator=().
|
static |
Definition at line 98 of file RtpsSampleHeader.h.
|
private |
Definition at line 75 of file RtpsSampleHeader.h.
Referenced by message_length(), and pdu_remaining().
|
private |
Definition at line 75 of file RtpsSampleHeader.h.
Referenced by get_serialized_size().
RTPS::Submessage OpenDDS::DCPS::RtpsSampleHeader::submessage_ |
|
private |
Definition at line 74 of file RtpsSampleHeader.h.
Referenced by operator=(), and valid().