OpenDDS
Snapshot(2023/04/07-19:43)
|
#include <RtpsUdpReceiveStrategy.h>
Classes | |
struct | MessageReceiver |
Public Types | |
typedef std::pair< SequenceNumber, RTPS::FragmentNumberSet > | SeqFragPair |
![]() | |
typedef long | Reference_Count |
Public Member Functions | |
RtpsUdpReceiveStrategy (RtpsUdpDataLink *link, const GuidPrefix_t &local_prefix, ThreadStatusManager &thread_status_manager) | |
virtual int | handle_input (ACE_HANDLE fd) |
bool | remove_frags_from_bitmap (CORBA::Long bitmap[], CORBA::ULong num_bits, const SequenceNumber &base, const GUID_t &pub_id, ACE_CDR::ULong &samples_requested) |
void | remove_fragments (const SequenceRange &range, const GUID_t &pub_id) |
typedef | OPENDDS_VECTOR (SeqFragPair) FragmentInfo |
void | clear_completed_fragments (const GUID_t &pub_id) |
bool | has_fragments (const SequenceRange &range, const GUID_t &pub_id, FragmentInfo *frag_info=0) |
const ReceivedDataSample * | withhold_data_from (const GUID_t &sub_id) |
void | do_not_withhold_data_from (const GUID_t &sub_id) |
virtual void | begin_transport_header_processing () |
Begin Current Transport Header Processing. More... | |
virtual void | end_transport_header_processing () |
End Current Transport Header Processing. More... | |
![]() | |
virtual | ~TransportReceiveStrategy () |
int | start () |
void | stop () |
int | handle_dds_input (ACE_HANDLE fd) |
virtual void | relink (bool do_suspend=true) |
const RtpsTransportHeader & | received_header () const |
RtpsTransportHeader & | received_header () |
const RtpsSampleHeader & | received_sample_header () const |
RtpsSampleHeader & | received_sample_header () |
ACE_Message_Block * | to_msgblock (const ReceivedDataSample &sample) |
![]() | |
virtual | ~TransportStrategy () |
![]() | |
virtual | ~RcObject () |
virtual void | _add_ref () |
virtual void | _remove_ref () |
long | ref_count () const |
WeakObject * | _get_weak_object () const |
![]() | |
RcEventHandler () | |
ACE_Event_Handler::Reference_Count | add_reference () |
ACE_Event_Handler::Reference_Count | remove_reference () |
![]() | |
virtual | ~ACE_Event_Handler (void) |
virtual ACE_HANDLE | get_handle (void) const |
virtual void | set_handle (ACE_HANDLE) |
virtual int | priority (void) const |
virtual void | priority (int priority) |
virtual int | handle_output (ACE_HANDLE fd=ACE_INVALID_HANDLE) |
virtual int | handle_exception (ACE_HANDLE fd=ACE_INVALID_HANDLE) |
virtual int | handle_timeout (const ACE_Time_Value ¤t_time, const void *act=0) |
virtual int | handle_exit (ACE_Process *) |
virtual int | handle_close (ACE_HANDLE handle, ACE_Reactor_Mask close_mask) |
virtual int | handle_signal (int signum, siginfo_t *=0, ucontext_t *=0) |
virtual int | resume_handler (void) |
virtual int | handle_qos (ACE_HANDLE=ACE_INVALID_HANDLE) |
virtual int | handle_group_qos (ACE_HANDLE=ACE_INVALID_HANDLE) |
virtual void | reactor (ACE_Reactor *reactor) |
virtual ACE_Reactor * | reactor (void) const |
virtual ACE_Reactor_Timer_Interface * | reactor_timer_interface (void) const |
Reference_Counting_Policy & | reference_counting_policy (void) |
Static Public Member Functions | |
static ssize_t | receive_bytes_helper (iovec iov[], int n, const ACE_SOCK_Dgram &socket, ACE_INET_Addr &remote_address, DCPS::RcHandle< ICE::Agent > agent, DCPS::WeakRcHandle< ICE::Endpoint > endpoint, RtpsUdpTransport &tport, bool &stop) |
![]() | |
static ACE_THR_FUNC_RETURN | read_adapter (void *event_handler) |
static int | register_stdin_handler (ACE_Event_Handler *eh, ACE_Reactor *reactor, ACE_Thread_Manager *thr_mgr, int flags=THR_DETACHED) |
static int | remove_stdin_handler (ACE_Reactor *reactor, ACE_Thread_Manager *thr_mgr) |
Static Public Attributes | |
static const size_t | BUFFER_COUNT = 1u |
![]() | |
static const size_t | RECEIVE_BUFFERS = DEFAULT_TRANSPORT_RECEIVE_BUFFERS |
static const size_t | BUFFER_LOW_WATER = 4096 |
static const size_t | MESSAGE_BLOCKS = 1000 |
static const size_t | DATA_BLOCKS = 100 |
Private Types | |
typedef TransportReceiveStrategy< RtpsTransportHeader, RtpsSampleHeader > | BaseReceiveStrategy |
Private Member Functions | |
bool | getDirectedWriteReaders (RepoIdSet &directedWriteReaders, const RTPS::DataSubmessage &ds) const |
const ACE_SOCK_Dgram & | choose_recv_socket (ACE_HANDLE fd) const |
virtual ssize_t | receive_bytes (iovec iov[], int n, ACE_INET_Addr &remote_address, ACE_HANDLE fd, bool &stop) |
Only our subclass knows how to do this. More... | |
virtual void | deliver_sample (ReceivedDataSample &sample, const ACE_INET_Addr &remote_address) |
Called when there is a ReceivedDataSample to be delivered. More... | |
void | deliver_sample_i (ReceivedDataSample &sample, const RTPS::Submessage &submessage, const NetworkAddress &remote_addr) |
virtual int | start_i () |
Let the subclass start. More... | |
virtual void | stop_i () |
Let the subclass stop. More... | |
virtual bool | check_header (const RtpsTransportHeader &header) |
Check the transport header for suitability. More... | |
virtual bool | check_header (const RtpsSampleHeader &header) |
Check the data sample header for suitability. More... | |
virtual bool | reassemble (ReceivedDataSample &data) |
virtual bool | reassemble_i (ReceivedDataSample &data, RtpsSampleHeader &rsh) |
bool | sec_submsg_to_octets (DDS::OctetSeq &encoded, const RTPS::Submessage &postfix) |
void | deliver_from_secure (const RTPS::Submessage &submessage, const NetworkAddress &remote_addr) |
bool | decode_payload (ReceivedDataSample &sample, const RTPS::DataSubmessage &submessage) |
bool | check_encoded (const EntityId_t &sender) |
OPENDDS_VECTOR (RTPS::Submessage) secure_submessages_ | |
Definition at line 40 of file RtpsUdpReceiveStrategy.h.
|
private |
Definition at line 132 of file RtpsUdpReceiveStrategy.h.
typedef std::pair<SequenceNumber, RTPS::FragmentNumberSet> OpenDDS::DCPS::RtpsUdpReceiveStrategy::SeqFragPair |
Definition at line 65 of file RtpsUdpReceiveStrategy.h.
OpenDDS::DCPS::RtpsUdpReceiveStrategy::RtpsUdpReceiveStrategy | ( | RtpsUdpDataLink * | link, |
const GuidPrefix_t & | local_prefix, | ||
ThreadStatusManager & | thread_status_manager | ||
) |
Definition at line 31 of file RtpsUdpReceiveStrategy.cpp.
References ACE_DEFAULT_MESSAGE_BLOCK_PRIORITY, ACE_NEW_MALLOC, OpenDDS::DCPS::TransportReceiveStrategy< RtpsTransportHeader, RtpsSampleHeader >::data_allocator_, OpenDDS::DCPS::TransportReceiveStrategy< RtpsTransportHeader, RtpsSampleHeader >::db_allocator_, OpenDDS::DCPS::Cached_Allocator_With_Overflow< T, ACE_LOCK >::malloc(), ACE_Time_Value::max_time, OpenDDS::DCPS::TransportReceiveStrategy< RtpsTransportHeader, RtpsSampleHeader >::mb_allocator_, ACE_Message_Block::MB_DATA, OpenDDS::DCPS::RECEIVE_DATA_BUFFER_SIZE, OpenDDS::DCPS::TransportReceiveStrategy< RtpsTransportHeader, RtpsSampleHeader >::receive_lock_, secure_prefix_, OpenDDS::RTPS::SecuritySubmessage::smHeader, OpenDDS::DCPS::SUBMESSAGE_NONE, OpenDDS::RTPS::SubmessageHeader::submessageId, and ACE_Time_Value::zero.
|
virtual |
Begin Current Transport Header Processing.
Reimplemented from OpenDDS::DCPS::TransportReceiveStrategy< RtpsTransportHeader, RtpsSampleHeader >.
Definition at line 1065 of file RtpsUdpReceiveStrategy.cpp.
References OpenDDS::DCPS::RtpsUdpDataLink::enable_response_queue(), and link_.
|
private |
Definition at line 475 of file RtpsUdpReceiveStrategy.cpp.
References ACE_DEBUG, OpenDDS::DCPS::SecurityDebug::encdec_warn, encoded_rtps_, encoded_submsg_, DDS::Security::ENDPOINT_SECURITY_ATTRIBUTES_FLAG_IS_SUBMESSAGE_PROTECTED, DDS::Security::ENDPOINT_SECURITY_ATTRIBUTES_FLAG_IS_VALID, DDS::HANDLE_NIL, OpenDDS::DCPS::RtpsUdpDataLink::handle_registry(), OpenDDS::DCPS::GuidConverter::isReader(), link_, LM_WARNING, OpenDDS::DCPS::RtpsUdpDataLink::local_crypto_handle(), OpenDDS::DCPS::make_id(), OPENDDS_STRING, receiver_, OpenDDS::RTPS::security_attributes_to_bitmask(), OpenDDS::DCPS::security_debug, OpenDDS::DCPS::RtpsUdpDataLink::separate_message(), and OpenDDS::DCPS::RtpsUdpReceiveStrategy::MessageReceiver::source_guid_prefix_.
Referenced by deliver_sample_i().
|
privatevirtual |
Check the transport header for suitability.
Reimplemented from OpenDDS::DCPS::TransportReceiveStrategy< RtpsTransportHeader, RtpsSampleHeader >.
Definition at line 1025 of file RtpsUdpReceiveStrategy.cpp.
References OpenDDS::RTPS::Message::hdr, OpenDDS::DCPS::RtpsTransportHeader::header_, OpenDDS::DCPS::TransportDebug::log_messages, message_, receiver_, remote_address_, OpenDDS::DCPS::RtpsUdpReceiveStrategy::MessageReceiver::reset(), secure_prefix_, OpenDDS::RTPS::SecuritySubmessage::smHeader, OpenDDS::DCPS::SUBMESSAGE_NONE, OpenDDS::RTPS::SubmessageHeader::submessageId, OpenDDS::RTPS::Message::submessages, OpenDDS::DCPS::transport_debug, and OpenDDS::DCPS::RtpsTransportHeader::valid().
Referenced by deliver_from_secure(), and handle_input().
|
privatevirtual |
Check the data sample header for suitability.
Reimplemented from OpenDDS::DCPS::TransportReceiveStrategy< RtpsTransportHeader, RtpsSampleHeader >.
Definition at line 1041 of file RtpsUdpReceiveStrategy.cpp.
References OpenDDS::RTPS::DATA_FRAG, OpenDDS::RTPS::Submessage::data_frag_sm, fragment_size_, OpenDDS::RTPS::DataFragSubmessage::fragmentsInSubmessage, OpenDDS::RTPS::DataFragSubmessage::fragmentSize, OpenDDS::RTPS::DataFragSubmessage::fragmentStartingNum, frags_, receiver_, OpenDDS::RTPS::DataFragSubmessage::sampleSize, secure_prefix_, OpenDDS::RTPS::SecuritySubmessage::smHeader, OpenDDS::DCPS::RtpsSampleHeader::submessage_, OpenDDS::RTPS::SubmessageHeader::submessageId, OpenDDS::DCPS::RtpsUdpReceiveStrategy::MessageReceiver::submsg(), total_frags_, OpenDDS::DCPS::RtpsSampleHeader::valid(), and OpenDDS::RTPS::FragmentNumber_t::value.
|
private |
Definition at line 326 of file RtpsUdpReceiveStrategy.cpp.
References ACE_Event_Handler::get_handle(), ACE_IPC_SAP::get_handle(), link_, OpenDDS::DCPS::RtpsUdpDataLink::multicast_socket(), and OpenDDS::DCPS::RtpsUdpDataLink::unicast_socket().
Referenced by receive_bytes().
void OpenDDS::DCPS::RtpsUdpReceiveStrategy::clear_completed_fragments | ( | const GUID_t & | pub_id | ) |
Definition at line 1183 of file RtpsUdpReceiveStrategy.cpp.
References OpenDDS::DCPS::TransportReassembly::clear_completed(), and reassembly_.
|
private |
Definition at line 926 of file RtpsUdpReceiveStrategy.cpp.
References ACE_ERROR, OpenDDS::DCPS::ReceivedDataSample::append(), OpenDDS::DCPS::DataSampleHeader::byte_order_, OpenDDS::DCPS::ReceivedDataSample::clear(), DDS::Security::SecurityException::code, OpenDDS::DCPS::ReceivedDataSample::copy_data(), OpenDDS::DCPS::SecurityDebug::encdec_warn, OpenDDS::STUN::encoding(), DDS::Security::ENDPOINT_SECURITY_ATTRIBUTES_FLAG_IS_PAYLOAD_PROTECTED, DDS::Security::ENDPOINT_SECURITY_ATTRIBUTES_FLAG_IS_VALID, OpenDDS::DCPS::equal_guid_prefixes(), OpenDDS::RTPS::SubmessageHeader::flags, OpenDDS::DCPS::GUID_t::guidPrefix, DDS::HANDLE_NIL, OpenDDS::DCPS::RtpsUdpDataLink::handle_registry(), OpenDDS::DCPS::ReceivedDataSample::header_, OpenDDS::RTPS::DataSubmessage::inlineQos, OpenDDS::DCPS::Encoding::KIND_XCDR1, link_, LM_WARNING, OpenDDS::DCPS::RtpsUdpReceiveStrategy::MessageReceiver::local_, DDS::Security::SecurityException::message, DDS::Security::SecurityException::minor_code, OpenDDS::DCPS::RtpsSampleHeader::payload_byte_order(), OpenDDS::DCPS::DataSampleHeader::publication_id_, receiver_, OpenDDS::RTPS::security_attributes_to_bitmask(), OpenDDS::DCPS::RtpsUdpDataLink::security_config(), OpenDDS::DCPS::security_debug, OpenDDS::DCPS::serialized_size(), and OpenDDS::RTPS::DataSubmessage::smHeader.
Referenced by deliver_sample_i().
|
private |
Definition at line 755 of file RtpsUdpReceiveStrategy.cpp.
References ACE_ERROR, ACE_HEX_DUMP, ACE_TEXT(), check_header(), DDS::Security::SecurityException::code, ACE_Message_Block::copy(), DDS::Security::DATAREADER_SUBMESSAGE, DDS::Security::DATAWRITER_SUBMESSAGE, deliver_sample_i(), OpenDDS::DCPS::SecurityDebug::encdec_warn, encoded_submsg_, OpenDDS::DCPS::ENTITYID_PARTICIPANT, OpenDDS::DCPS::equal_guid_prefixes(), OpenDDS::DCPS::GUID_t::guidPrefix, DDS::HANDLE_NIL, OpenDDS::DCPS::RtpsUdpDataLink::handle_registry(), DDS::Security::INFO_SUBMESSAGE, OpenDDS::DCPS::RtpsSampleHeader::into_received_data_sample(), link_, LM_DEBUG, LM_WARNING, OpenDDS::DCPS::RtpsUdpReceiveStrategy::MessageReceiver::local_, OpenDDS::DCPS::RtpsUdpDataLink::local_crypto_handle(), OpenDDS::DCPS::TransportDebug::log_messages, OpenDDS::DCPS::make_id(), DDS::Security::SecurityException::message, message_, DDS::Security::SecurityException::minor_code, OpenDDS::DCPS::RtpsSampleHeader::more_fragments(), OpenDDS::DCPS::push_back(), reassemble_i(), receiver_, sec_submsg_to_octets(), secure_prefix_, secure_sample_, OpenDDS::DCPS::RtpsUdpDataLink::security_config(), OpenDDS::DCPS::security_debug, OpenDDS::RTPS::SecuritySubmessage::smHeader, OpenDDS::DCPS::RtpsUdpReceiveStrategy::MessageReceiver::source_guid_prefix_, OpenDDS::DCPS::RtpsSampleHeader::submessage_, OpenDDS::DCPS::SUBMESSAGE_NONE, OpenDDS::RTPS::SubmessageHeader::submessageId, OpenDDS::RTPS::Message::submessages, OpenDDS::DCPS::transport_debug, OpenDDS::DCPS::Transport_debug_level, VDBG, and VDBG_LVL.
Referenced by deliver_sample_i().
|
privatevirtual |
Called when there is a ReceivedDataSample to be delivered.
Implements OpenDDS::DCPS::TransportReceiveStrategy< RtpsTransportHeader, RtpsSampleHeader >.
Definition at line 513 of file RtpsUdpReceiveStrategy.cpp.
References ACE_DEBUG, OpenDDS::RTPS::DATA, deliver_sample_i(), OpenDDS::DCPS::RtpsUdpReceiveStrategy::MessageReceiver::dest_guid_prefix_, encoded_submsg_, link_, LM_DEBUG, OpenDDS::DCPS::RtpsUdpDataLink::local_prefix(), OpenDDS::DCPS::TransportDebug::log_dropped_messages, OpenDDS::DCPS::TransportDebug::log_messages, message_, OpenDDS::DCPS::push_back(), OpenDDS::DCPS::TransportReceiveStrategy< RtpsTransportHeader, RtpsSampleHeader >::received_sample_header(), receiver_, OpenDDS::RTPS::SEC_POSTFIX, OpenDDS::RTPS::SEC_PREFIX, secure_prefix_, secure_sample_, OpenDDS::RTPS::SecuritySubmessage::smHeader, OpenDDS::DCPS::RtpsSampleHeader::submessage_, OpenDDS::RTPS::SubmessageHeader::submessageId, OpenDDS::RTPS::Message::submessages, and OpenDDS::DCPS::transport_debug.
Referenced by handle_input().
|
private |
Definition at line 552 of file RtpsUdpReceiveStrategy.cpp.
References ACE_DEBUG, ACE_TEXT(), OpenDDS::RTPS::ACKNACK, OpenDDS::RTPS::Submessage::acknack_sm, OpenDDS::DCPS::LogGuid::c_str(), check_encoded(), OpenDDS::DCPS::LogGuid::conv_, OpenDDS::RTPS::DATA, OpenDDS::DCPS::DataLink::data_received(), OpenDDS::DCPS::DataLink::data_received_include(), OpenDDS::RTPS::Submessage::data_sm, OpenDDS::DCPS::DATAWRITER_LIVELINESS, decode_payload(), deliver_from_secure(), OpenDDS::DCPS::RtpsUdpReceiveStrategy::MessageReceiver::directed_, OpenDDS::DCPS::GUID_t::entityId, OpenDDS::DCPS::ENTITYID_UNKNOWN, OpenDDS::DCPS::RtpsUdpReceiveStrategy::MessageReceiver::fill_header(), OpenDDS::DCPS::RtpsUdpDataLink::filterBestEffortReaders(), OpenDDS::RTPS::FLAG_L, OpenDDS::RTPS::SubmessageHeader::flags, OpenDDS::RTPS::GAP, OpenDDS::RTPS::Submessage::gap_sm, getDirectedWriteReaders(), OpenDDS::DCPS::SequenceNumber::getValue(), OpenDDS::DCPS::GUID_t::guidPrefix, OpenDDS::RTPS::Submessage::hb_frag_sm, OpenDDS::DCPS::ReceivedDataSample::header_, OpenDDS::RTPS::HEARTBEAT, OpenDDS::RTPS::HEARTBEAT_FRAG, OpenDDS::RTPS::Submessage::heartbeat_sm, OpenDDS::RTPS::INFO_DST, OpenDDS::RTPS::INFO_REPLY, OpenDDS::RTPS::INFO_REPLY_IP4, OpenDDS::RTPS::INFO_SRC, OpenDDS::RTPS::INFO_TS, link_, LM_DEBUG, OpenDDS::DCPS::RtpsUdpDataLink::local_prefix(), OpenDDS::DCPS::TransportDebug::log_dropped_messages, OpenDDS::DCPS::DataSampleHeader::message_id_, OpenDDS::RTPS::NACK_FRAG, OpenDDS::RTPS::Submessage::nack_frag_sm, OPENDDS_STRING, OpenDDS::DCPS::DataSampleHeader::publication_id_, OpenDDS::RTPS::AckNackSubmessage::readerId, OpenDDS::RTPS::NackFragSubmessage::readerId, readers_selected_, readers_withheld_, OpenDDS::DCPS::RtpsUdpDataLink::received(), receiver_, recvd_sample_, OpenDDS::RTPS::SEC_POSTFIX, OpenDDS::RTPS::SEC_PREFIX, secure_prefix_, OpenDDS::RTPS::Submessage::security_sm, OpenDDS::DCPS::DataSampleHeader::sequence_, OpenDDS::DCPS::set_intersect(), OpenDDS::RTPS::HeartBeatSubmessage::smHeader, OpenDDS::DCPS::RtpsUdpReceiveStrategy::MessageReceiver::source_guid_prefix_, OpenDDS::DCPS::transport_debug, OpenDDS::DCPS::Transport_debug_level, OpenDDS::RTPS::GapSubmessage::writerId, OpenDDS::RTPS::HeartBeatSubmessage::writerId, and OpenDDS::RTPS::HeartBeatFragSubmessage::writerId.
Referenced by deliver_from_secure(), and deliver_sample().
void OpenDDS::DCPS::RtpsUdpReceiveStrategy::do_not_withhold_data_from | ( | const GUID_t & | sub_id | ) |
Definition at line 1084 of file RtpsUdpReceiveStrategy.cpp.
References readers_selected_.
|
virtual |
End Current Transport Header Processing.
Reimplemented from OpenDDS::DCPS::TransportReceiveStrategy< RtpsTransportHeader, RtpsSampleHeader >.
Definition at line 1071 of file RtpsUdpReceiveStrategy.cpp.
References OpenDDS::DCPS::RtpsUdpDataLink::disable_response_queue(), and link_.
|
private |
Definition at line 1089 of file RtpsUdpReceiveStrategy.cpp.
References OpenDDS::RTPS::DataSubmessage::inlineQos, OpenDDS::RTPS::ProtocolVersion_t::minor, OpenDDS::RTPS::PID_DIRECTED_WRITE, receiver_, and OpenDDS::DCPS::RtpsUdpReceiveStrategy::MessageReceiver::source_version_.
Referenced by deliver_sample_i().
|
virtual |
Reimplemented from ACE_Event_Handler.
Definition at line 77 of file RtpsUdpReceiveStrategy.cpp.
References ACE_DEBUG, ACE_DEFAULT_MESSAGE_BLOCK_PRIORITY, ACE_DES_FREE, ACE_NEW_MALLOC_RETURN, ACE_TEXT(), check_header(), OpenDDS::DCPS::TransportReceiveStrategy< RtpsTransportHeader, RtpsSampleHeader >::data_allocator_, OpenDDS::DCPS::TransportReceiveStrategy< RtpsTransportHeader, RtpsSampleHeader >::data_sample_header_, OpenDDS::DCPS::TransportReceiveStrategy< RtpsTransportHeader, RtpsSampleHeader >::db_allocator_, OpenDDS::DCPS::DCPS_debug_level, deliver_sample(), OpenDDS::DCPS::Cached_Allocator_With_Overflow< T, ACE_LOCK >::free(), OpenDDS::DCPS::RtpsSampleHeader::get_serialized_size(), OpenDDS::DCPS::TransportReceiveStrategy< RtpsTransportHeader, RtpsSampleHeader >::gracefully_disconnected_, OpenDDS::DCPS::LogLevel::Info, OpenDDS::DCPS::RtpsSampleHeader::into_received_data_sample(), OpenDDS::DCPS::RtpsTransportHeader::last_fragment(), OpenDDS::DCPS::RtpsTransportHeader::length_, LM_DEBUG, LM_INFO, LM_WARNING, OpenDDS::DCPS::log_level, OpenDDS::DCPS::Cached_Allocator_With_Overflow< T, ACE_LOCK >::malloc(), ACE_Time_Value::max_time, OpenDDS::DCPS::TransportReceiveStrategy< RtpsTransportHeader, RtpsSampleHeader >::mb_allocator_, ACE_Message_Block::MB_DATA, OpenDDS::DCPS::RtpsSampleHeader::message_length(), OpenDDS::DCPS::RtpsSampleHeader::more_fragments(), OpenDDS::DCPS::RtpsSampleHeader::pdu_remaining(), OpenDDS::DCPS::TransportReceiveStrategy< RtpsTransportHeader, RtpsSampleHeader >::pdu_remaining_, ACE_Message_Block::rd_ptr(), reassemble(), receive_bytes(), OpenDDS::DCPS::RECEIVE_DATA_BUFFER_SIZE, OpenDDS::DCPS::TransportReceiveStrategy< RtpsTransportHeader, RtpsSampleHeader >::receive_lock_, OpenDDS::DCPS::TransportReceiveStrategy< RtpsTransportHeader, RtpsSampleHeader >::receive_transport_header_, OpenDDS::DCPS::TransportReceiveStrategy< RtpsTransportHeader, RtpsSampleHeader >::relink(), ACE_Message_Block::reset(), ACE_Message_Block::space(), OpenDDS::DCPS::TransportReceiveStrategy< RtpsTransportHeader, RtpsSampleHeader >::stop(), thread_status_manager_, OpenDDS::DCPS::RtpsTransportHeader::valid(), VDBG, ACE_Message_Block::wr_ptr(), and ACE_Time_Value::zero.
bool OpenDDS::DCPS::RtpsUdpReceiveStrategy::has_fragments | ( | const SequenceRange & | range, |
const GUID_t & | pub_id, | ||
FragmentInfo * | frag_info = 0 |
||
) |
Definition at line 1189 of file RtpsUdpReceiveStrategy.cpp.
References OpenDDS::RTPS::FragmentNumberSet::bitmap, OpenDDS::RTPS::FragmentNumberSet::bitmapBase, OpenDDS::DCPS::TransportReassembly::get_gaps(), OpenDDS::DCPS::TransportReassembly::has_frags(), OpenDDS::RTPS::FragmentNumberSet::numBits, OPENDDS_VECTOR(), reassembly_, and OpenDDS::RTPS::FragmentNumber_t::value.
typedef OpenDDS::DCPS::RtpsUdpReceiveStrategy::OPENDDS_VECTOR | ( | SeqFragPair | ) |
Referenced by has_fragments().
|
private |
|
privatevirtual |
Reimplemented from OpenDDS::DCPS::TransportReceiveStrategy< RtpsTransportHeader, RtpsSampleHeader >.
Definition at line 1101 of file RtpsUdpReceiveStrategy.cpp.
References reassemble_i(), and OpenDDS::DCPS::TransportReceiveStrategy< RtpsTransportHeader, RtpsSampleHeader >::received_sample_header().
Referenced by handle_input().
|
privatevirtual |
Definition at line 1107 of file RtpsUdpReceiveStrategy.cpp.
References OpenDDS::DCPS::DataSampleHeader::byte_order_, OpenDDS::RTPS::DATA, OpenDDS::RTPS::Submessage::data_frag_sm, OpenDDS::RTPS::DATA_OCTETS_TO_IQOS, OpenDDS::RTPS::Submessage::data_sm, OpenDDS::DCPS::RtpsUdpReceiveStrategy::MessageReceiver::fill_header(), OpenDDS::RTPS::FLAG_D, OpenDDS::RTPS::FLAG_E, OpenDDS::RTPS::FLAG_K_IN_DATA, OpenDDS::DCPS::ReceivedDataSample::fragment_size_, fragment_size_, frags_, OpenDDS::DCPS::ReceivedDataSample::header_, OpenDDS::DCPS::DataLink::is_target(), OpenDDS::DCPS::DataSampleHeader::key_fields_only_, link_, OpenDDS::DCPS::ReceivedDataSample::peek(), OpenDDS::DCPS::DataSampleHeader::publication_id_, OpenDDS::DCPS::TransportReassembly::reassemble(), reassembly_, receiver_, OpenDDS::DCPS::RtpsSampleHeader::submessage_, and total_frags_.
Referenced by deliver_from_secure(), and reassemble().
|
privatevirtual |
Only our subclass knows how to do this.
Implements OpenDDS::DCPS::TransportReceiveStrategy< RtpsTransportHeader, RtpsSampleHeader >.
Definition at line 343 of file RtpsUdpReceiveStrategy.cpp.
References ACE_DEBUG, ACE_ERROR, ACE_TEXT(), choose_recv_socket(), DDS::Security::SecurityException::code, OpenDDS::DCPS::SecurityDebug::encdec_warn, encoded_rtps_, OpenDDS::DCPS::GUID_t::entityId, OpenDDS::DCPS::ENTITYID_PARTICIPANT, OpenDDS::DCPS::equal_guid_prefixes(), OpenDDS::DCPS::RtpsUdpDataLink::get_ice_agent(), OpenDDS::DCPS::RtpsUdpDataLink::get_ice_endpoint(), OpenDDS::DCPS::GUID_UNKNOWN, OpenDDS::DCPS::GUID_t::guidPrefix, DDS::HANDLE_NIL, OpenDDS::DCPS::RtpsUdpDataLink::handle_registry(), link_, LM_DEBUG, LM_WARNING, OpenDDS::DCPS::RtpsUdpReceiveStrategy::MessageReceiver::local_, OpenDDS::DCPS::RtpsUdpDataLink::local_crypto_handle(), OpenDDS::DCPS::TransportDebug::log_dropped_messages, DDS::Security::SecurityException::message, DDS::Security::SecurityException::minor_code, DDS::Security::OPENDDS_EXCEPTION_CODE_NO_KEY, DDS::Security::OPENDDS_EXCEPTION_MINOR_CODE_NO_KEY, receive_bytes_helper(), receiver_, ACE_SOCK_Dgram::recv(), remote_address_, OpenDDS::RTPS::RTPSHDR_SZ, OpenDDS::DCPS::RtpsUdpDataLink::security_config(), OpenDDS::DCPS::security_debug, OpenDDS::RTPS::SMHDR_SZ, socket(), OpenDDS::RTPS::SRTPS_PREFIX, OpenDDS::DCPS::TransportReceiveStrategy< RtpsTransportHeader, RtpsSampleHeader >::stop(), OpenDDS::DCPS::RtpsUdpDataLink::transport(), and OpenDDS::DCPS::transport_debug.
Referenced by handle_input().
|
static |
Definition at line 216 of file RtpsUdpReceiveStrategy.cpp.
References ACE_ERROR, ACE_GUARD_RETURN, ACE_NOTSUP_RETURN, OpenDDS::STUN::Message::block, ACE_Message_Block::cont(), OpenDDS::DCPS::SecurityDebug::encdec_warn, OpenDDS::STUN::encoding(), ACE_INET_Addr::get_addr_size(), ACE_Addr::get_size(), ACE_Message_Block::length(), LM_ERROR, LM_WARNING, OpenDDS::DCPS::MCK_RTPS, OpenDDS::DCPS::MCK_STUN, ACE_SOCK_Dgram::recv(), ACE_Message_Block::release(), OpenDDS::DCPS::security_debug, and OpenDDS::DCPS::TransportReceiveStrategy< RtpsTransportHeader, RtpsSampleHeader >::stop().
Referenced by OpenDDS::DCPS::RtpsUdpTransport::IceEndpoint::handle_input(), and receive_bytes().
void OpenDDS::DCPS::RtpsUdpReceiveStrategy::remove_fragments | ( | const SequenceRange & | range, |
const GUID_t & | pub_id | ||
) |
Remove any saved fragments. We do not expect to receive any more fragments with sequence numbers in "range" from publication "pub_id".
Definition at line 1174 of file RtpsUdpReceiveStrategy.cpp.
References OpenDDS::DCPS::TransportReassembly::data_unavailable(), and reassembly_.
bool OpenDDS::DCPS::RtpsUdpReceiveStrategy::remove_frags_from_bitmap | ( | CORBA::Long | bitmap[], |
CORBA::ULong | num_bits, | ||
const SequenceNumber & | base, | ||
const GUID_t & | pub_id, | ||
ACE_CDR::ULong & | samples_requested | ||
) |
For each "1" bit in the bitmap, change it to a "0" if there are fragments from publication "pub_id" for the sequence number represented by that position in the bitmap. Returns true if the bitmap was changed.
Definition at line 1136 of file RtpsUdpReceiveStrategy.cpp.
References OpenDDS::DCPS::TransportReassembly::has_frags(), and reassembly_.
|
private |
Definition at line 875 of file RtpsUdpReceiveStrategy.cpp.
References OpenDDS::DCPS::align(), OpenDDS::DCPS::Serializer::align_r(), OpenDDS::RTPS::DATA, OpenDDS::RTPS::DATA_FRAG, OpenDDS::DCPS::ReceivedDataSample::data_length(), OpenDDS::STUN::encoding(), OpenDDS::DCPS::ENDIAN_BIG, OpenDDS::DCPS::Encoding::KIND_XCDR1, ACE_Message_Block::length(), ACE_Message_Block::rd_ptr(), secure_prefix_, secure_sample_, OpenDDS::DCPS::serialized_size(), OpenDDS::RTPS::SMHDR_SZ, and OpenDDS::DCPS::ReceivedDataSample::write_data().
Referenced by deliver_from_secure().
|
privatevirtual |
Let the subclass start.
Implements OpenDDS::DCPS::TransportReceiveStrategy< RtpsTransportHeader, RtpsSampleHeader >.
Definition at line 995 of file RtpsUdpReceiveStrategy.cpp.
References OpenDDS::DCPS::ReactorInterceptor::execute_or_enqueue(), ACE_IPC_SAP::get_handle(), ACE_Event_Handler::get_handle(), OpenDDS::DCPS::RtpsUdpDataLink::get_reactor_interceptor(), link_, ACE_Event_Handler::READ_MASK, and OpenDDS::DCPS::RtpsUdpDataLink::unicast_socket().
|
privatevirtual |
Let the subclass stop.
Implements OpenDDS::DCPS::TransportReceiveStrategy< RtpsTransportHeader, RtpsSampleHeader >.
Definition at line 1007 of file RtpsUdpReceiveStrategy.cpp.
References OpenDDS::DCPS::RtpsUdpDataLink::config(), OpenDDS::DCPS::ReactorInterceptor::execute_or_enqueue(), ACE_IPC_SAP::get_handle(), ACE_Event_Handler::get_handle(), OpenDDS::DCPS::RtpsUdpDataLink::get_reactor_interceptor(), link_, OpenDDS::DCPS::RtpsUdpDataLink::multicast_socket(), ACE_Event_Handler::READ_MASK, and OpenDDS::DCPS::RtpsUdpDataLink::unicast_socket().
const ReceivedDataSample * OpenDDS::DCPS::RtpsUdpReceiveStrategy::withhold_data_from | ( | const GUID_t & | sub_id | ) |
Prevent delivery of the currently in-progress data sample to the subscription sub_id. Returns pointer to the in-progress data so it can be stored for later delivery.
Definition at line 1077 of file RtpsUdpReceiveStrategy.cpp.
References readers_withheld_, and recvd_sample_.
|
static |
Definition at line 45 of file RtpsUdpReceiveStrategy.h.
|
private |
Definition at line 181 of file RtpsUdpReceiveStrategy.h.
Referenced by check_encoded(), and receive_bytes().
|
private |
Definition at line 181 of file RtpsUdpReceiveStrategy.h.
Referenced by check_encoded(), deliver_from_secure(), and deliver_sample().
|
private |
Definition at line 140 of file RtpsUdpReceiveStrategy.h.
Referenced by check_header(), and reassemble_i().
|
private |
Definition at line 141 of file RtpsUdpReceiveStrategy.h.
Referenced by check_header(), and reassemble_i().
|
private |
Definition at line 135 of file RtpsUdpReceiveStrategy.h.
|
private |
Definition at line 134 of file RtpsUdpReceiveStrategy.h.
Referenced by begin_transport_header_processing(), check_encoded(), choose_recv_socket(), decode_payload(), deliver_from_secure(), deliver_sample(), deliver_sample_i(), end_transport_header_processing(), reassemble_i(), receive_bytes(), start_i(), and stop_i().
|
private |
Definition at line 175 of file RtpsUdpReceiveStrategy.h.
Referenced by check_header(), deliver_from_secure(), and deliver_sample().
|
private |
Definition at line 138 of file RtpsUdpReceiveStrategy.h.
Referenced by deliver_sample_i(), and do_not_withhold_data_from().
|
private |
Definition at line 138 of file RtpsUdpReceiveStrategy.h.
Referenced by deliver_sample_i(), and withhold_data_from().
|
private |
Definition at line 143 of file RtpsUdpReceiveStrategy.h.
Referenced by clear_completed_fragments(), has_fragments(), reassemble_i(), remove_fragments(), and remove_frags_from_bitmap().
|
private |
Definition at line 172 of file RtpsUdpReceiveStrategy.h.
Referenced by check_encoded(), check_header(), decode_payload(), deliver_from_secure(), deliver_sample(), deliver_sample_i(), getDirectedWriteReaders(), reassemble_i(), and receive_bytes().
|
private |
Definition at line 137 of file RtpsUdpReceiveStrategy.h.
Referenced by deliver_sample_i(), and withhold_data_from().
|
private |
Definition at line 174 of file RtpsUdpReceiveStrategy.h.
Referenced by check_header(), and receive_bytes().
|
private |
Definition at line 178 of file RtpsUdpReceiveStrategy.h.
Referenced by check_header(), deliver_from_secure(), deliver_sample(), deliver_sample_i(), RtpsUdpReceiveStrategy(), and sec_submsg_to_octets().
|
private |
Definition at line 180 of file RtpsUdpReceiveStrategy.h.
Referenced by deliver_from_secure(), deliver_sample(), and sec_submsg_to_octets().
|
private |
Definition at line 173 of file RtpsUdpReceiveStrategy.h.
Referenced by handle_input().
|
private |
Definition at line 142 of file RtpsUdpReceiveStrategy.h.
Referenced by check_header(), and reassemble_i().