OpenDDS::RTPS::RtpsDiscovery Class Reference

Discovery Strategy class that implements RTPS discovery. More...

#include <RtpsDiscovery.h>

Inheritance diagram for OpenDDS::RTPS::RtpsDiscovery:
Inheritance graph
[legend]
Collaboration diagram for OpenDDS::RTPS::RtpsDiscovery:
Collaboration graph
[legend]

List of all members.

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

Detailed Description

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.


Constructor & Destructor Documentation

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.

00058 {
00059 }


Member Function Documentation

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 }

Here is the call graph for this function:

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_; }

Here is the caller graph for this function:

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_; }

Here is the caller graph for this function:

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_; }

Here is the caller graph for this function:

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_; }

Here is the caller graph for this function:

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_; }

Here is the caller graph for this function:

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 }

Here is the call graph for this function:

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_; }

Here is the caller graph for this function:

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_; }

Here is the caller graph for this function:

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_; }

Here is the caller graph for this function:

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_; }

Here is the caller graph for this function:

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_; }

Here is the caller graph for this function:

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 }

Here is the call graph for this function:

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_; }

Here is the caller graph for this function:

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_; }

Here is the caller graph for this function:

virtual bool OpenDDS::RTPS::RtpsDiscovery::supports_liveliness (  )  const [inline, virtual]

Reimplemented from OpenDDS::DCPS::Discovery.

Definition at line 62 of file RtpsDiscovery.h.

00062 { return true; }

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_; }

Here is the caller graph for this function:


Friends And Related Function Documentation

friend class ::DDS_TEST [friend]

Definition at line 168 of file RtpsDiscovery.h.


Member Data Documentation

Definition at line 145 of file RtpsDiscovery.h.

Definition at line 145 of file RtpsDiscovery.h.

Definition at line 149 of file RtpsDiscovery.h.

Definition at line 145 of file RtpsDiscovery.h.

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().

FUTURE: handle > 1 group.

Definition at line 150 of file RtpsDiscovery.h.

Referenced by add_domain_participant(), and generate_participant_guid().

Definition at line 148 of file RtpsDiscovery.h.

Definition at line 145 of file RtpsDiscovery.h.

Definition at line 145 of file RtpsDiscovery.h.

Definition at line 144 of file RtpsDiscovery.h.

Definition at line 148 of file RtpsDiscovery.h.

Definition at line 147 of file RtpsDiscovery.h.

Definition at line 148 of file RtpsDiscovery.h.

Definition at line 151 of file RtpsDiscovery.h.

unsigned char OpenDDS::RTPS::RtpsDiscovery::ttl_ [private]

Definition at line 146 of file RtpsDiscovery.h.


The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines

Generated on 10 Aug 2018 for OpenDDS by  doxygen 1.6.1