OpenDDS
Snapshot(2023/04/07-19:43)
|
#include <MulticastDataLink.h>
Private Member Functions | |
typedef | OPENDDS_MAP (MulticastPeer, MulticastSession_rch) MulticastSessionMap |
virtual void | stop_i () |
void | syn_received_no_session (MulticastPeer source, const Message_Block_Ptr &data, bool swap_bytes) |
void | release_remote_i (const GUID_t &remote) |
bool | ready_to_deliver (const ReceivedDataSample &data) |
Definition at line 34 of file MulticastDataLink.h.
OpenDDS::DCPS::MulticastDataLink::MulticastDataLink | ( | const MulticastTransport_rch & | transport, |
const MulticastSessionFactory_rch & | session_factory, | ||
MulticastPeer | local_peer, | ||
const MulticastInst_rch & | config, | ||
const ReactorTask_rch & | reactor_task, | ||
bool | is_active | ||
) |
Definition at line 41 of file MulticastDataLink.cpp.
References OpenDDS::DCPS::DEFAULT_CONFIG_MAX_SAMPLES_PER_PACKET, OpenDDS::DCPS::MulticastInst::DEFAULT_NAK_DEPTH, OpenDDS::DCPS::MulticastSessionFactory::requires_send_buffer(), OpenDDS::DCPS::TransportSendStrategy::send_buffer(), send_buffer_, send_strategy_, and session_factory_.
|
virtual |
Definition at line 65 of file MulticastDataLink.cpp.
References OpenDDS::DCPS::TransportSendStrategy::send_buffer(), send_buffer_, and send_strategy_.
bool OpenDDS::DCPS::MulticastDataLink::check_header | ( | const TransportHeader & | header | ) |
Definition at line 208 of file MulticastDataLink.cpp.
References ACE_GUARD_RETURN, ACE_SYNCH_RECURSIVE_MUTEX, OpenDDS::DCPS::DataLink::is_active(), session_lock_, sessions_, and OpenDDS::DCPS::TransportHeader::source_.
Referenced by OpenDDS::DCPS::MulticastReceiveStrategy::check_header().
bool OpenDDS::DCPS::MulticastDataLink::check_header | ( | const DataSampleHeader & | header | ) |
Definition at line 227 of file MulticastDataLink.cpp.
References ACE_GUARD_RETURN, ACE_SYNCH_RECURSIVE_MUTEX, OpenDDS::DCPS::DataSampleHeader::message_id_, receive_strategy(), session_lock_, sessions_, and OpenDDS::DCPS::TRANSPORT_CONTROL.
void OpenDDS::DCPS::MulticastDataLink::client_stop | ( | const GUID_t & | localId | ) |
Definition at line 461 of file MulticastDataLink.cpp.
References OPENDDS_END_VERSIONED_NAMESPACE_DECL, and send_buffer_.
ACE_INLINE MulticastInst_rch OpenDDS::DCPS::MulticastDataLink::config | ( | ) |
Definition at line 44 of file MulticastDataLink.inl.
References ACE_INLINE, OPENDDS_TEST_AND_CALL_ASSIGN, and transport().
Referenced by OpenDDS::DCPS::ReliableSession::expire_naks(), join(), OpenDDS::DCPS::ReliableSession::nak_delay(), OpenDDS::DCPS::MulticastSendStrategy::send_bytes_i(), OpenDDS::DCPS::ReliableSession::send_naks(), and syn_received_no_session().
MulticastSession_rch OpenDDS::DCPS::MulticastDataLink::find_or_create_session | ( | MulticastPeer | remote_peer | ) |
Definition at line 166 of file MulticastDataLink.cpp.
References ACE_ERROR_RETURN, ACE_GUARD_RETURN, ACE_SYNCH_RECURSIVE_MUTEX, ACE_TEXT(), OpenDDS::DCPS::MulticastSessionFactory::create(), OpenDDS::DCPS::RcHandle< T >::is_nil(), LM_ERROR, session_factory_, session_lock_, sessions_, and transport().
MulticastSession_rch OpenDDS::DCPS::MulticastDataLink::find_session | ( | MulticastPeer | remote_peer | ) |
Definition at line 151 of file MulticastDataLink.cpp.
References ACE_GUARD_RETURN, ACE_SYNCH_RECURSIVE_MUTEX, session_lock_, and sessions_.
Referenced by make_reservation(), and release_reservations_i().
ACE_INLINE ACE_Proactor * OpenDDS::DCPS::MulticastDataLink::get_proactor | ( | ) |
Definition at line 65 of file MulticastDataLink.inl.
References ACE_INLINE, OpenDDS::DCPS::ReactorTask::get_proactor(), and reactor_task_.
Referenced by OpenDDS::DCPS::MulticastSendStrategy::async_send().
ACE_INLINE ACE_Reactor * OpenDDS::DCPS::MulticastDataLink::get_reactor | ( | void | ) |
Definition at line 58 of file MulticastDataLink.inl.
References ACE_INLINE, OpenDDS::DCPS::ReactorTask::get_reactor(), and reactor_task_.
Referenced by OpenDDS::DCPS::MulticastReceiveStrategy::start_i(), and OpenDDS::DCPS::MulticastReceiveStrategy::stop_i().
bool OpenDDS::DCPS::MulticastDataLink::join | ( | const ACE_INET_Addr & | group_address | ) |
Definition at line 74 of file MulticastDataLink.cpp.
References ACE_DEFAULT_MAX_SOCKET_BUFSIZ, ACE_ERROR_RETURN, ACE_TEXT(), ACE_TEXT_CHAR_TO_TCHAR, ACE_SOCK::close(), config(), ACE_SOCK_Dgram_Mcast::DEFOPT_NULLIFACE, ENOTSUP, ACE_IPC_SAP::get_handle(), ACE_SOCK_Dgram_Mcast::join(), LM_DEBUG, LM_ERROR, ACE_SOCK_Dgram_Mcast::OPT_BINDADDR_NO, ACE_SOCK_Dgram_Mcast::opts(), recv_strategy_, send_strategy_, OpenDDS::DCPS::set_socket_multicast_ttl(), ACE_OS::setsockopt(), SO_RCVBUF, SO_SNDBUF, socket_, SOL_SOCKET, OpenDDS::DCPS::DataLink::start(), ACE_Utils::truncate_cast(), and VDBG_LVL.
ACE_INLINE MulticastPeer OpenDDS::DCPS::MulticastDataLink::local_peer | ( | ) | const |
Definition at line 20 of file MulticastDataLink.inl.
References ACE_INLINE, and local_peer_.
Referenced by OpenDDS::DCPS::ReliableSession::nak_received(), OpenDDS::DCPS::MulticastSendStrategy::prepare_header_i(), OpenDDS::DCPS::MulticastSession::send_syn(), OpenDDS::DCPS::MulticastSession::send_synack(), OpenDDS::DCPS::MulticastSession::syn_received(), syn_received_no_session(), and OpenDDS::DCPS::MulticastSession::synack_received().
|
virtual |
Only called by our TransportImpl object.
Return Codes: 0 means successful reservation made. -1 means failure.
Reimplemented from OpenDDS::DCPS::DataLink.
Definition at line 258 of file MulticastDataLink.cpp.
References OpenDDS::DCPS::RepoIdConverter::federationId(), find_session(), OpenDDS::DCPS::DataLink::make_reservation(), and OpenDDS::DCPS::RepoIdConverter::participantId().
|
private |
ACE_INLINE ReactorTask_rch OpenDDS::DCPS::MulticastDataLink::reactor_task | ( | ) |
Definition at line 52 of file MulticastDataLink.inl.
References ACE_INLINE, and reactor_task_.
|
private |
Definition at line 359 of file MulticastDataLink.cpp.
References ACE_GUARD_RETURN, ACE_SYNCH_RECURSIVE_MUTEX, receive_strategy(), OpenDDS::DCPS::TransportReceiveStrategy< TH, DSH >::received_header(), session_lock_, sessions_, and OpenDDS::DCPS::TransportHeader::source_.
Referenced by sample_received().
bool OpenDDS::DCPS::MulticastDataLink::reassemble | ( | ReceivedDataSample & | data, |
const TransportHeader & | header | ||
) |
Definition at line 241 of file MulticastDataLink.cpp.
References ACE_GUARD_RETURN, ACE_SYNCH_RECURSIVE_MUTEX, session_lock_, sessions_, and OpenDDS::DCPS::TransportHeader::source_.
Referenced by OpenDDS::DCPS::MulticastReceiveStrategy::reassemble().
ACE_INLINE MulticastReceiveStrategy * OpenDDS::DCPS::MulticastDataLink::receive_strategy | ( | ) |
Definition at line 32 of file MulticastDataLink.inl.
References ACE_INLINE, OpenDDS::DCPS::RcHandle< T >::in(), and recv_strategy_.
Referenced by check_header(), OpenDDS::DCPS::ReliableSession::nak_received(), OpenDDS::DCPS::ReliableSession::nakack_received(), ready_to_deliver(), sample_received(), OpenDDS::DCPS::MulticastSession::syn_received(), and OpenDDS::DCPS::MulticastSession::synack_received().
|
privatevirtual |
Reimplemented from OpenDDS::DCPS::DataLink.
Definition at line 378 of file MulticastDataLink.cpp.
References ACE_GUARD, ACE_SYNCH_RECURSIVE_MUTEX, OpenDDS::DCPS::RepoIdConverter::federationId(), OpenDDS::DCPS::RepoIdConverter::participantId(), session_lock_, and sessions_.
|
virtual |
Reimplemented from OpenDDS::DCPS::DataLink.
Definition at line 283 of file MulticastDataLink.cpp.
References OpenDDS::DCPS::RepoIdConverter::federationId(), find_session(), and OpenDDS::DCPS::RepoIdConverter::participantId().
void OpenDDS::DCPS::MulticastDataLink::sample_received | ( | ReceivedDataSample & | sample | ) |
Definition at line 295 of file MulticastDataLink.cpp.
References ACE_GUARD, ACE_SYNCH_RECURSIVE_MUTEX, OpenDDS::DCPS::ReceivedDataSample::data(), OpenDDS::DCPS::DataLink::data_received(), OpenDDS::DCPS::ReceivedDataSample::header_, OpenDDS::DCPS::DataLink::is_active(), OpenDDS::DCPS::DataSampleHeader::message_id_, OpenDDS::DCPS::MULTICAST_SYN, ACE_Message_Block::rd_ptr(), ready_to_deliver(), receive_strategy(), OpenDDS::DCPS::TransportReceiveStrategy< TH, DSH >::received_header(), session_lock_, sessions_, OpenDDS::DCPS::TransportHeader::source_, OpenDDS::DCPS::DataSampleHeader::submessage_id_, OpenDDS::DCPS::TransportHeader::swap_bytes(), syn_received_no_session(), and OpenDDS::DCPS::TRANSPORT_CONTROL.
Referenced by OpenDDS::DCPS::MulticastReceiveStrategy::deliver_sample().
ACE_INLINE SingleSendBuffer * OpenDDS::DCPS::MulticastDataLink::send_buffer | ( | ) |
Definition at line 38 of file MulticastDataLink.inl.
References ACE_INLINE, and send_buffer_.
Referenced by OpenDDS::DCPS::ReliableSession::nak_received().
ACE_INLINE MulticastSendStrategy * OpenDDS::DCPS::MulticastDataLink::send_strategy | ( | ) |
Definition at line 26 of file MulticastDataLink.inl.
References ACE_INLINE, OpenDDS::DCPS::RcHandle< T >::in(), and send_strategy_.
ACE_INLINE ACE_SOCK_Dgram_Mcast & OpenDDS::DCPS::MulticastDataLink::socket | ( | void | ) |
Definition at line 72 of file MulticastDataLink.inl.
References OPENDDS_END_VERSIONED_NAMESPACE_DECL, and socket_.
Referenced by OpenDDS::DCPS::MulticastSendStrategy::async_send(), OpenDDS::DCPS::MulticastReceiveStrategy::get_handle(), OpenDDS::DCPS::MulticastReceiveStrategy::receive_bytes(), and OpenDDS::DCPS::MulticastSendStrategy::sync_send().
|
privatevirtual |
This announces the "stop" event to our subclass. The "stop" event will occur when this DataLink is handling a release_reservations() call and determines that it has just released all of the remaining reservations on this DataLink. The "stop" event will also occur when the TransportImpl is being shutdown() - we call stop_i() from our transport_shutdown() method to handle this case.
Reimplemented from OpenDDS::DCPS::DataLink.
Definition at line 445 of file MulticastDataLink.cpp.
References ACE_GUARD, ACE_SYNCH_RECURSIVE_MUTEX, ACE_SOCK::close(), session_lock_, sessions_, and socket_.
|
private |
Definition at line 390 of file MulticastDataLink.cpp.
References ACE_ERROR, ACE_TEXT(), config(), OpenDDS::DCPS::DataLink::create_control(), OpenDDS::DCPS::unique_ptr< T, Deleter >::get(), header, LM_DEBUG, LM_ERROR, local_peer(), local_peer_, OpenDDS::DCPS::move(), OpenDDS::DCPS::MULTICAST_SYNACK, OpenDDS::DCPS::DataLink::send_control(), OpenDDS::DCPS::SEND_CONTROL_OK, transport(), and VDBG_LVL.
Referenced by sample_received().
ACE_INLINE MulticastTransport_rch OpenDDS::DCPS::MulticastDataLink::transport | ( | void | ) |
Definition at line 14 of file MulticastDataLink.inl.
References ACE_INLINE, OpenDDS::DCPS::dynamic_rchandle_cast(), and OpenDDS::DCPS::DataLink::impl().
Referenced by config(), find_or_create_session(), OpenDDS::DCPS::MulticastSession::syn_received(), and syn_received_no_session().
|
private |
Definition at line 87 of file MulticastDataLink.h.
Referenced by local_peer(), and syn_received_no_session().
|
private |
Definition at line 89 of file MulticastDataLink.h.
Referenced by get_proactor(), get_reactor(), and reactor_task().
|
private |
Definition at line 109 of file MulticastDataLink.h.
|
private |
Definition at line 109 of file MulticastDataLink.h.
|
private |
Definition at line 92 of file MulticastDataLink.h.
Referenced by join(), and receive_strategy().
|
private |
Definition at line 94 of file MulticastDataLink.h.
Referenced by client_stop(), MulticastDataLink(), send_buffer(), and ~MulticastDataLink().
|
private |
Definition at line 91 of file MulticastDataLink.h.
Referenced by join(), MulticastDataLink(), send_strategy(), and ~MulticastDataLink().
|
private |
Definition at line 85 of file MulticastDataLink.h.
Referenced by find_or_create_session(), and MulticastDataLink().
|
private |
Definition at line 98 of file MulticastDataLink.h.
Referenced by check_header(), find_or_create_session(), find_session(), ready_to_deliver(), reassemble(), release_remote_i(), sample_received(), and stop_i().
|
private |
Definition at line 101 of file MulticastDataLink.h.
Referenced by check_header(), find_or_create_session(), find_session(), ready_to_deliver(), reassemble(), release_remote_i(), sample_received(), and stop_i().
|
private |
Definition at line 96 of file MulticastDataLink.h.