Discovery Strategy class that implements RTPS discovery. More...
#include <RtpsDiscovery.h>
Classes | |
class | Config |
class | StaticInitializer |
Public Member Functions | |
RtpsDiscovery (const RepoKey &key) | |
~RtpsDiscovery () | |
virtual OpenDDS::DCPS::RepoId | generate_participant_guid () |
virtual OpenDDS::DCPS::AddDomainStatus | add_domain_participant (DDS::DomainId_t domain, const DDS::DomainParticipantQos &qos) |
virtual bool | supports_liveliness () const |
virtual void | signal_liveliness (const DDS::DomainId_t domain_id, const OpenDDS::DCPS::RepoId &part_id, DDS::LivelinessQosPolicyKind kind) |
ACE_Time_Value | resend_period () const |
void | resend_period (const ACE_Time_Value &period) |
u_short | pb () const |
void | pb (u_short port_base) |
u_short | dg () const |
void | dg (u_short domain_gain) |
u_short | pg () const |
void | pg (u_short participant_gain) |
u_short | d0 () const |
void | d0 (u_short offset_zero) |
u_short | d1 () const |
void | d1 (u_short offset_one) |
u_short | dx () const |
void | dx (u_short offset_two) |
unsigned char | ttl () const |
void | ttl (unsigned char time_to_live) |
OPENDDS_STRING | sedp_local_address () const |
void | sedp_local_address (const OPENDDS_STRING &mi) |
OPENDDS_STRING | spdp_local_address () const |
void | spdp_local_address (const OPENDDS_STRING &mi) |
bool | sedp_multicast () const |
void | sedp_multicast (bool sm) |
OPENDDS_STRING | multicast_interface () const |
void | multicast_interface (const OPENDDS_STRING &mi) |
OPENDDS_STRING | default_multicast_group () const |
void | default_multicast_group (const OPENDDS_STRING &group) |
typedef | OPENDDS_VECTOR (OPENDDS_STRING) AddrVec |
const AddrVec & | spdp_send_addrs () const |
AddrVec & | spdp_send_addrs () |
OPENDDS_STRING | guid_interface () const |
void | guid_interface (const OPENDDS_STRING &gi) |
Private Attributes | |
ACE_Time_Value | resend_period_ |
u_short | pb_ |
u_short | dg_ |
u_short | pg_ |
u_short | d0_ |
u_short | d1_ |
u_short | dx_ |
unsigned char | ttl_ |
bool | sedp_multicast_ |
OPENDDS_STRING | multicast_interface_ |
OPENDDS_STRING | sedp_local_address_ |
OPENDDS_STRING | spdp_local_address_ |
OPENDDS_STRING | default_multicast_group_ |
OPENDDS_STRING | guid_interface_ |
FUTURE: handle > 1 group. | |
AddrVec | spdp_send_addrs_ |
GuidGenerator | guid_gen_ |
Guids will be unique within this RTPS configuration. | |
Friends | |
class | ::DDS_TEST |
Discovery Strategy class that implements RTPS discovery.
This class implements the Discovery interface for Rtps-based discovery.
Definition at line 41 of file RtpsDiscovery.h.
OpenDDS::RTPS::RtpsDiscovery::RtpsDiscovery | ( | const RepoKey & | key | ) | [explicit] |
Definition at line 42 of file RtpsDiscovery.cpp.
00043 : DCPS::PeerDiscovery<Spdp>(key) 00044 , resend_period_(30 /*seconds*/) // see RTPS v2.1 9.6.1.4.2 00045 , pb_(7400) // see RTPS v2.1 9.6.1.3 for PB, DG, PG, D0, D1 defaults 00046 , dg_(250) 00047 , pg_(2) 00048 , d0_(get_default_d0(0)) 00049 , d1_(10) 00050 , dx_(2) 00051 , ttl_(1) 00052 , sedp_multicast_(true) 00053 , default_multicast_group_("239.255.0.1") 00054 { 00055 }
OpenDDS::RTPS::RtpsDiscovery::~RtpsDiscovery | ( | ) |
Definition at line 57 of file RtpsDiscovery.cpp.
DCPS::AddDomainStatus OpenDDS::RTPS::RtpsDiscovery::add_domain_participant | ( | DDS::DomainId_t | domain, | |
const DDS::DomainParticipantQos & | qos | |||
) | [virtual] |
Implements OpenDDS::DCPS::Discovery.
Definition at line 291 of file RtpsDiscovery.cpp.
References OpenDDS::DCPS::DCPS_debug_level, OpenDDS::DCPS::ENTITYID_PARTICIPANT, guid_gen_, guid_interface_, OpenDDS::DCPS::GUID_UNKNOWN, OpenDDS::DCPS::AddDomainStatus::id, OpenDDS::RTPS::GuidGenerator::interfaceName(), LM_ERROR, LM_WARNING, OpenDDS::DCPS::PeerDiscovery< Spdp >::lock_, OpenDDS::DCPS::PeerDiscovery< Spdp >::participants_, OpenDDS::RTPS::GuidGenerator::populate(), and OpenDDS::DCPS::ref().
00293 { 00294 DCPS::AddDomainStatus ads = {OpenDDS::DCPS::RepoId(), false /*federated*/}; 00295 ACE_GUARD_RETURN(ACE_Thread_Mutex, g, lock_, ads); 00296 if (!guid_interface_.empty()) { 00297 if (guid_gen_.interfaceName(guid_interface_.c_str()) != 0) { 00298 if (DCPS::DCPS_debug_level) { 00299 ACE_DEBUG((LM_WARNING, "(%P|%t) RtpsDiscovery::add_domain_participant()" 00300 " - attempt to use specific network interface's MAC addr for" 00301 " GUID generation failed.\n")); 00302 } 00303 } 00304 } 00305 guid_gen_.populate(ads.id); 00306 ads.id.entityId = ENTITYID_PARTICIPANT; 00307 try { 00308 const DCPS::RcHandle<Spdp> spdp (DCPS::make_rch<Spdp>(domain, ref(ads.id), qos, this)); 00309 // ads.id may change during Spdp constructor 00310 participants_[domain][ads.id] = spdp; 00311 } catch (const std::exception& e) { 00312 ads.id = GUID_UNKNOWN; 00313 ACE_ERROR((LM_ERROR, "(%P|%t) RtpsDiscovery::add_domain_participant() - " 00314 "failed to initialize RTPS Simple Participant Discovery Protocol: %C\n", 00315 e.what())); 00316 } 00317 return ads; 00318 }
void OpenDDS::RTPS::RtpsDiscovery::d0 | ( | u_short | offset_zero | ) | [inline] |
Definition at line 91 of file RtpsDiscovery.h.
00091 { 00092 d0_ = offset_zero; 00093 }
u_short OpenDDS::RTPS::RtpsDiscovery::d0 | ( | ) | const [inline] |
Definition at line 90 of file RtpsDiscovery.h.
Referenced by OpenDDS::RTPS::RtpsDiscovery::Config::discovery_config(), and OpenDDS::RTPS::Spdp::SpdpTransport::SpdpTransport().
00090 { return d0_; }
void OpenDDS::RTPS::RtpsDiscovery::d1 | ( | u_short | offset_one | ) | [inline] |
Definition at line 96 of file RtpsDiscovery.h.
00096 { 00097 d1_ = offset_one; 00098 }
u_short OpenDDS::RTPS::RtpsDiscovery::d1 | ( | ) | const [inline] |
Definition at line 95 of file RtpsDiscovery.h.
Referenced by OpenDDS::RTPS::RtpsDiscovery::Config::discovery_config(), and OpenDDS::RTPS::Spdp::SpdpTransport::open_unicast_socket().
00095 { return d1_; }
void OpenDDS::RTPS::RtpsDiscovery::default_multicast_group | ( | const OPENDDS_STRING & | group | ) | [inline] |
Definition at line 131 of file RtpsDiscovery.h.
00131 { 00132 default_multicast_group_ = group; 00133 }
OPENDDS_STRING OpenDDS::RTPS::RtpsDiscovery::default_multicast_group | ( | ) | const [inline] |
Definition at line 130 of file RtpsDiscovery.h.
Referenced by OpenDDS::RTPS::RtpsDiscovery::Config::discovery_config(), and OpenDDS::RTPS::Spdp::SpdpTransport::SpdpTransport().
00130 { return default_multicast_group_; }
void OpenDDS::RTPS::RtpsDiscovery::dg | ( | u_short | domain_gain | ) | [inline] |
Definition at line 81 of file RtpsDiscovery.h.
00081 { 00082 dg_ = domain_gain; 00083 }
u_short OpenDDS::RTPS::RtpsDiscovery::dg | ( | ) | const [inline] |
Definition at line 80 of file RtpsDiscovery.h.
Referenced by OpenDDS::RTPS::RtpsDiscovery::Config::discovery_config(), and OpenDDS::RTPS::Spdp::SpdpTransport::SpdpTransport().
00080 { return dg_; }
void OpenDDS::RTPS::RtpsDiscovery::dx | ( | u_short | offset_two | ) | [inline] |
Definition at line 101 of file RtpsDiscovery.h.
00101 { 00102 dx_ = offset_two; 00103 }
u_short OpenDDS::RTPS::RtpsDiscovery::dx | ( | ) | const [inline] |
Definition at line 100 of file RtpsDiscovery.h.
Referenced by OpenDDS::RTPS::RtpsDiscovery::Config::discovery_config().
00100 { return dx_; }
OpenDDS::DCPS::RepoId OpenDDS::RTPS::RtpsDiscovery::generate_participant_guid | ( | ) | [virtual] |
Implements OpenDDS::DCPS::Discovery.
Definition at line 273 of file RtpsDiscovery.cpp.
References OpenDDS::DCPS::DCPS_debug_level, OpenDDS::DCPS::ENTITYID_PARTICIPANT, guid_gen_, guid_interface_, OpenDDS::DCPS::GUID_UNKNOWN, OpenDDS::RTPS::GuidGenerator::interfaceName(), LM_WARNING, OpenDDS::DCPS::PeerDiscovery< Spdp >::lock_, and OpenDDS::RTPS::GuidGenerator::populate().
00273 { 00274 OpenDDS::DCPS::RepoId id = GUID_UNKNOWN; 00275 ACE_GUARD_RETURN(ACE_Thread_Mutex, g, lock_, id); 00276 if (!guid_interface_.empty()) { 00277 if (guid_gen_.interfaceName(guid_interface_.c_str()) != 0) { 00278 if (DCPS::DCPS_debug_level) { 00279 ACE_DEBUG((LM_WARNING, "(%P|%t) RtpsDiscovery::add_domain_participant()" 00280 " - attempt to use specific network interface's MAC addr for" 00281 " GUID generation failed.\n")); 00282 } 00283 } 00284 } 00285 guid_gen_.populate(id); 00286 id.entityId = ENTITYID_PARTICIPANT; 00287 return id; 00288 }
void OpenDDS::RTPS::RtpsDiscovery::guid_interface | ( | const OPENDDS_STRING & | gi | ) | [inline] |
Definition at line 140 of file RtpsDiscovery.h.
00140 { 00141 guid_interface_ = gi; 00142 }
OPENDDS_STRING OpenDDS::RTPS::RtpsDiscovery::guid_interface | ( | ) | const [inline] |
Definition at line 139 of file RtpsDiscovery.h.
00139 { return guid_interface_; }
void OpenDDS::RTPS::RtpsDiscovery::multicast_interface | ( | const OPENDDS_STRING & | mi | ) | [inline] |
Definition at line 126 of file RtpsDiscovery.h.
00126 { 00127 multicast_interface_ = mi; 00128 }
OPENDDS_STRING OpenDDS::RTPS::RtpsDiscovery::multicast_interface | ( | ) | const [inline] |
Definition at line 125 of file RtpsDiscovery.h.
Referenced by OpenDDS::RTPS::Spdp::SpdpTransport::SpdpTransport().
00125 { return multicast_interface_; }
typedef OpenDDS::RTPS::RtpsDiscovery::OPENDDS_VECTOR | ( | OPENDDS_STRING | ) |
void OpenDDS::RTPS::RtpsDiscovery::pb | ( | u_short | port_base | ) | [inline] |
Definition at line 76 of file RtpsDiscovery.h.
00076 { 00077 pb_ = port_base; 00078 }
u_short OpenDDS::RTPS::RtpsDiscovery::pb | ( | ) | const [inline] |
Definition at line 75 of file RtpsDiscovery.h.
Referenced by OpenDDS::RTPS::RtpsDiscovery::Config::discovery_config(), and OpenDDS::RTPS::Spdp::SpdpTransport::SpdpTransport().
00075 { return pb_; }
void OpenDDS::RTPS::RtpsDiscovery::pg | ( | u_short | participant_gain | ) | [inline] |
Definition at line 86 of file RtpsDiscovery.h.
00086 { 00087 pg_ = participant_gain; 00088 }
u_short OpenDDS::RTPS::RtpsDiscovery::pg | ( | ) | const [inline] |
Definition at line 85 of file RtpsDiscovery.h.
Referenced by OpenDDS::RTPS::RtpsDiscovery::Config::discovery_config(), and OpenDDS::RTPS::Spdp::SpdpTransport::open_unicast_socket().
00085 { return pg_; }
void OpenDDS::RTPS::RtpsDiscovery::resend_period | ( | const ACE_Time_Value & | period | ) | [inline] |
Definition at line 71 of file RtpsDiscovery.h.
00071 { 00072 resend_period_ = period; 00073 }
ACE_Time_Value OpenDDS::RTPS::RtpsDiscovery::resend_period | ( | ) | const [inline] |
Definition at line 70 of file RtpsDiscovery.h.
Referenced by OpenDDS::RTPS::Spdp::build_local_pdata(), and OpenDDS::RTPS::Spdp::SpdpTransport::open().
00070 { return resend_period_; }
void OpenDDS::RTPS::RtpsDiscovery::sedp_local_address | ( | const OPENDDS_STRING & | mi | ) | [inline] |
Definition at line 111 of file RtpsDiscovery.h.
00111 { 00112 sedp_local_address_ = mi; 00113 }
OPENDDS_STRING OpenDDS::RTPS::RtpsDiscovery::sedp_local_address | ( | ) | const [inline] |
Definition at line 110 of file RtpsDiscovery.h.
00110 { return sedp_local_address_; }
void OpenDDS::RTPS::RtpsDiscovery::sedp_multicast | ( | bool | sm | ) | [inline] |
Definition at line 121 of file RtpsDiscovery.h.
00121 { 00122 sedp_multicast_ = sm; 00123 }
bool OpenDDS::RTPS::RtpsDiscovery::sedp_multicast | ( | ) | const [inline] |
Definition at line 120 of file RtpsDiscovery.h.
Referenced by OpenDDS::RTPS::Spdp::init().
00120 { return sedp_multicast_; }
void OpenDDS::RTPS::RtpsDiscovery::signal_liveliness | ( | const DDS::DomainId_t | domain_id, | |
const OpenDDS::DCPS::RepoId & | part_id, | |||
DDS::LivelinessQosPolicyKind | kind | |||
) | [virtual] |
Reimplemented from OpenDDS::DCPS::Discovery.
Definition at line 345 of file RtpsDiscovery.cpp.
References OpenDDS::DCPS::PeerDiscovery< Spdp >::get_part().
00348 { 00349 get_part(domain_id, part_id)->signal_liveliness(kind); 00350 }
void OpenDDS::RTPS::RtpsDiscovery::spdp_local_address | ( | const OPENDDS_STRING & | mi | ) | [inline] |
Definition at line 116 of file RtpsDiscovery.h.
00116 { 00117 spdp_local_address_ = mi; 00118 }
OPENDDS_STRING OpenDDS::RTPS::RtpsDiscovery::spdp_local_address | ( | ) | const [inline] |
Definition at line 115 of file RtpsDiscovery.h.
Referenced by OpenDDS::RTPS::Spdp::SpdpTransport::open_unicast_socket().
00115 { return spdp_local_address_; }
AddrVec& OpenDDS::RTPS::RtpsDiscovery::spdp_send_addrs | ( | ) | [inline] |
Definition at line 137 of file RtpsDiscovery.h.
00137 { return spdp_send_addrs_; }
const AddrVec& OpenDDS::RTPS::RtpsDiscovery::spdp_send_addrs | ( | ) | const [inline] |
Definition at line 136 of file RtpsDiscovery.h.
Referenced by OpenDDS::RTPS::RtpsDiscovery::Config::discovery_config(), and OpenDDS::RTPS::Spdp::SpdpTransport::SpdpTransport().
00136 { return spdp_send_addrs_; }
virtual bool OpenDDS::RTPS::RtpsDiscovery::supports_liveliness | ( | ) | const [inline, virtual] |
Reimplemented from OpenDDS::DCPS::Discovery.
Definition at line 62 of file RtpsDiscovery.h.
void OpenDDS::RTPS::RtpsDiscovery::ttl | ( | unsigned char | time_to_live | ) | [inline] |
Definition at line 106 of file RtpsDiscovery.h.
00106 { 00107 ttl_ = time_to_live; 00108 }
unsigned char OpenDDS::RTPS::RtpsDiscovery::ttl | ( | ) | const [inline] |
Definition at line 105 of file RtpsDiscovery.h.
Referenced by OpenDDS::RTPS::RtpsDiscovery::Config::discovery_config(), and OpenDDS::RTPS::Spdp::SpdpTransport::open_unicast_socket().
00105 { return ttl_; }
friend class ::DDS_TEST [friend] |
Definition at line 168 of file RtpsDiscovery.h.
u_short OpenDDS::RTPS::RtpsDiscovery::d0_ [private] |
Definition at line 145 of file RtpsDiscovery.h.
u_short OpenDDS::RTPS::RtpsDiscovery::d1_ [private] |
Definition at line 145 of file RtpsDiscovery.h.
OPENDDS_STRING OpenDDS::RTPS::RtpsDiscovery::default_multicast_group_ [private] |
Definition at line 149 of file RtpsDiscovery.h.
u_short OpenDDS::RTPS::RtpsDiscovery::dg_ [private] |
Definition at line 145 of file RtpsDiscovery.h.
u_short OpenDDS::RTPS::RtpsDiscovery::dx_ [private] |
Definition at line 145 of file RtpsDiscovery.h.
Guids will be unique within this RTPS configuration.
Definition at line 154 of file RtpsDiscovery.h.
Referenced by add_domain_participant(), and generate_participant_guid().
OPENDDS_STRING OpenDDS::RTPS::RtpsDiscovery::guid_interface_ [private] |
FUTURE: handle > 1 group.
Definition at line 150 of file RtpsDiscovery.h.
Referenced by add_domain_participant(), and generate_participant_guid().
OPENDDS_STRING OpenDDS::RTPS::RtpsDiscovery::multicast_interface_ [private] |
Definition at line 148 of file RtpsDiscovery.h.
u_short OpenDDS::RTPS::RtpsDiscovery::pb_ [private] |
Definition at line 145 of file RtpsDiscovery.h.
u_short OpenDDS::RTPS::RtpsDiscovery::pg_ [private] |
Definition at line 145 of file RtpsDiscovery.h.
Definition at line 144 of file RtpsDiscovery.h.
OPENDDS_STRING OpenDDS::RTPS::RtpsDiscovery::sedp_local_address_ [private] |
Definition at line 148 of file RtpsDiscovery.h.
bool OpenDDS::RTPS::RtpsDiscovery::sedp_multicast_ [private] |
Definition at line 147 of file RtpsDiscovery.h.
OPENDDS_STRING OpenDDS::RTPS::RtpsDiscovery::spdp_local_address_ [private] |
Definition at line 148 of file RtpsDiscovery.h.
AddrVec OpenDDS::RTPS::RtpsDiscovery::spdp_send_addrs_ [private] |
Definition at line 151 of file RtpsDiscovery.h.
unsigned char OpenDDS::RTPS::RtpsDiscovery::ttl_ [private] |
Definition at line 146 of file RtpsDiscovery.h.