OpenDDS::DCPS::Discovery Class Reference

Discovery Strategy interface class. More...

#include <Discovery.h>

Inheritance diagram for OpenDDS::DCPS::Discovery:
Inheritance graph
[legend]
Collaboration diagram for OpenDDS::DCPS::Discovery:
Collaboration graph
[legend]

List of all members.

Classes

class  Config

Public Types

typedef OPENDDS_STRING RepoKey

Public Member Functions

 Discovery (const RepoKey &key)
virtual bool active ()
virtual DDS::Subscriber_ptr init_bit (DomainParticipantImpl *participant)=0
virtual void fini_bit (DCPS::DomainParticipantImpl *participant)=0
virtual RepoId bit_key_to_repo_id (DomainParticipantImpl *participant, const char *bit_topic_name, const DDS::BuiltinTopicKey_t &key) const =0
RepoKey key () const
virtual bool attach_participant (DDS::DomainId_t domainId, const RepoId &participantId)=0
virtual OpenDDS::DCPS::RepoId generate_participant_guid ()=0
virtual AddDomainStatus add_domain_participant (DDS::DomainId_t domain, const DDS::DomainParticipantQos &qos)=0
virtual bool remove_domain_participant (DDS::DomainId_t domainId, const RepoId &participantId)=0
virtual bool ignore_domain_participant (DDS::DomainId_t domainId, const RepoId &myParticipantId, const RepoId &ignoreId)=0
virtual bool update_domain_participant_qos (DDS::DomainId_t domain, const RepoId &participantId, const DDS::DomainParticipantQos &qos)=0
virtual TopicStatus assert_topic (RepoId_out topicId, DDS::DomainId_t domainId, const RepoId &participantId, const char *topicName, const char *dataTypeName, const DDS::TopicQos &qos, bool hasDcpsKey)=0
virtual TopicStatus find_topic (DDS::DomainId_t domainId, const char *topicName, CORBA::String_out dataTypeName, DDS::TopicQos_out qos, RepoId_out topicId)=0
virtual TopicStatus remove_topic (DDS::DomainId_t domainId, const RepoId &participantId, const RepoId &topicId)=0
virtual bool ignore_topic (DDS::DomainId_t domainId, const RepoId &myParticipantId, const RepoId &ignoreId)=0
virtual bool update_topic_qos (const RepoId &topicId, DDS::DomainId_t domainId, const RepoId &participantId, const DDS::TopicQos &qos)=0
virtual void pre_writer (DataWriterImpl *)
virtual RepoId add_publication (DDS::DomainId_t domainId, const RepoId &participantId, const RepoId &topicId, DataWriterCallbacks *publication, const DDS::DataWriterQos &qos, const TransportLocatorSeq &transInfo, const DDS::PublisherQos &publisherQos)=0
virtual bool remove_publication (DDS::DomainId_t domainId, const RepoId &participantId, const RepoId &publicationId)=0
virtual bool ignore_publication (DDS::DomainId_t domainId, const RepoId &myParticipantId, const RepoId &ignoreId)=0
virtual bool update_publication_qos (DDS::DomainId_t domainId, const RepoId &partId, const RepoId &dwId, const DDS::DataWriterQos &qos, const DDS::PublisherQos &publisherQos)=0
virtual void pre_reader (DataReaderImpl *)
virtual RepoId add_subscription (DDS::DomainId_t domainId, const RepoId &participantId, const RepoId &topicId, DataReaderCallbacks *subscription, const DDS::DataReaderQos &qos, const TransportLocatorSeq &transInfo, const DDS::SubscriberQos &subscriberQos, const char *filterClassName, const char *filterExpression, const DDS::StringSeq &exprParams)=0
virtual bool remove_subscription (DDS::DomainId_t domainId, const RepoId &participantId, const RepoId &subscriptionId)=0
virtual bool ignore_subscription (DDS::DomainId_t domainId, const RepoId &myParticipantId, const RepoId &ignoreId)=0
virtual bool update_subscription_qos (DDS::DomainId_t domainId, const RepoId &partId, const RepoId &drId, const DDS::DataReaderQos &qos, const DDS::SubscriberQos &subscriberQos)=0
virtual bool update_subscription_params (DDS::DomainId_t domainId, const RepoId &participantId, const RepoId &subscriptionId, const DDS::StringSeq &params)=0
virtual void association_complete (DDS::DomainId_t domainId, const RepoId &participantId, const RepoId &localId, const RepoId &remoteId)=0
virtual bool supports_liveliness () const
virtual void signal_liveliness (const DDS::DomainId_t, const RepoId &, DDS::LivelinessQosPolicyKind)

Static Public Attributes

static const char * DEFAULT_REPO = "DEFAULT_REPO"
 Key value for the default repository IOR.
static const char * DEFAULT_RTPS = "DEFAULT_RTPS"
static const char * DEFAULT_STATIC = "DEFAULT_STATIC"

Protected Member Functions

DDS::ReturnCode_t create_bit_topics (DomainParticipantImpl *participant)

Private Attributes

RepoKey key_

Detailed Description

Discovery Strategy interface class.

This class is an abstract class that acts as an interface for both InfoRepo-based discovery and RTPS Discovery.

Definition at line 50 of file Discovery.h.


Member Typedef Documentation

typedef OPENDDS_STRING OpenDDS::DCPS::Discovery::RepoKey

Key type for storing discovery objects. Probably should just be Discovery::Key

Definition at line 54 of file Discovery.h.


Constructor & Destructor Documentation

OpenDDS::DCPS::Discovery::Discovery ( const RepoKey key  )  [inline, explicit]

Definition at line 56 of file Discovery.h.

00056 : key_(key) { }


Member Function Documentation

virtual bool OpenDDS::DCPS::Discovery::active ( void   )  [inline, virtual]

Reimplemented in OpenDDS::DCPS::InfoRepoDiscovery.

Definition at line 64 of file Discovery.h.

00064 { return true; }

virtual AddDomainStatus OpenDDS::DCPS::Discovery::add_domain_participant ( DDS::DomainId_t  domain,
const DDS::DomainParticipantQos qos 
) [pure virtual]
virtual RepoId OpenDDS::DCPS::Discovery::add_publication ( DDS::DomainId_t  domainId,
const RepoId participantId,
const RepoId topicId,
DataWriterCallbacks publication,
const DDS::DataWriterQos qos,
const TransportLocatorSeq transInfo,
const DDS::PublisherQos publisherQos 
) [pure virtual]

add the passed in publication into discovery. Discovery does not participate in memory management for the publication pointer, so it requires that the publication pointer remain valid until remove_publication is called.

Implemented in OpenDDS::DCPS::PeerDiscovery< Participant >, OpenDDS::DCPS::InfoRepoDiscovery, OpenDDS::DCPS::PeerDiscovery< StaticParticipant >, and OpenDDS::DCPS::PeerDiscovery< Spdp >.

virtual RepoId OpenDDS::DCPS::Discovery::add_subscription ( DDS::DomainId_t  domainId,
const RepoId participantId,
const RepoId topicId,
DataReaderCallbacks subscription,
const DDS::DataReaderQos qos,
const TransportLocatorSeq transInfo,
const DDS::SubscriberQos subscriberQos,
const char *  filterClassName,
const char *  filterExpression,
const DDS::StringSeq exprParams 
) [pure virtual]

add the passed in subscription into discovery. Discovery does not participate in memory management for the subscription pointer, so it requires that the subscription pointer remain valid until remove_subscription is called.

Implemented in OpenDDS::DCPS::PeerDiscovery< Participant >, OpenDDS::DCPS::InfoRepoDiscovery, OpenDDS::DCPS::PeerDiscovery< StaticParticipant >, and OpenDDS::DCPS::PeerDiscovery< Spdp >.

virtual TopicStatus OpenDDS::DCPS::Discovery::assert_topic ( RepoId_out  topicId,
DDS::DomainId_t  domainId,
const RepoId participantId,
const char *  topicName,
const char *  dataTypeName,
const DDS::TopicQos qos,
bool  hasDcpsKey 
) [pure virtual]
virtual void OpenDDS::DCPS::Discovery::association_complete ( DDS::DomainId_t  domainId,
const RepoId participantId,
const RepoId localId,
const RepoId remoteId 
) [pure virtual]
virtual bool OpenDDS::DCPS::Discovery::attach_participant ( DDS::DomainId_t  domainId,
const RepoId participantId 
) [pure virtual]
virtual RepoId OpenDDS::DCPS::Discovery::bit_key_to_repo_id ( DomainParticipantImpl participant,
const char *  bit_topic_name,
const DDS::BuiltinTopicKey_t key 
) const [pure virtual]
DDS::ReturnCode_t OpenDDS::DCPS::Discovery::create_bit_topics ( DomainParticipantImpl participant  )  [protected]

Definition at line 30 of file Discovery.cpp.

References ACE_TEXT(), OpenDDS::DCPS::BUILT_IN_PARTICIPANT_TOPIC, OpenDDS::DCPS::BUILT_IN_PARTICIPANT_TOPIC_TYPE, OpenDDS::DCPS::BUILT_IN_PUBLICATION_TOPIC, OpenDDS::DCPS::BUILT_IN_PUBLICATION_TOPIC_TYPE, OpenDDS::DCPS::BUILT_IN_SUBSCRIPTION_TOPIC, OpenDDS::DCPS::BUILT_IN_SUBSCRIPTION_TOPIC_TYPE, OpenDDS::DCPS::BUILT_IN_TOPIC_TOPIC, OpenDDS::DCPS::BUILT_IN_TOPIC_TOPIC_TYPE, OpenDDS::DCPS::DomainParticipantImpl::create_topic(), OpenDDS::DCPS::DEFAULT_STATUS_MASK, CORBA::is_nil(), LM_ERROR, Registered_Data_Types, DDS::RETCODE_ERROR, DDS::RETCODE_OK, and TOPIC_QOS_DEFAULT.

Referenced by OpenDDS::DCPS::InfoRepoDiscovery::init_bit(), and OpenDDS::DCPS::PeerDiscovery< Spdp >::init_bit().

00031 {
00032 #ifndef DDS_HAS_MINIMUM_BIT
00033 
00034   TypeSupport_var type_support =
00035     Registered_Data_Types->lookup(participant, BUILT_IN_PARTICIPANT_TOPIC_TYPE);
00036 
00037   if (CORBA::is_nil(type_support)) {
00038     // Participant topic
00039     DDS::ParticipantBuiltinTopicDataTypeSupport_var ts =
00040       new DDS::ParticipantBuiltinTopicDataTypeSupportImpl;
00041 
00042     DDS::ReturnCode_t ret = ts->register_type(participant,
00043                                               BUILT_IN_PARTICIPANT_TOPIC_TYPE);
00044 
00045     if (ret != DDS::RETCODE_OK) {
00046       ACE_ERROR_RETURN((LM_ERROR,
00047                         ACE_TEXT("(%P|%t) ")
00048                         ACE_TEXT("Discovery::create_bit_topics, ")
00049                         ACE_TEXT("register BUILT_IN_PARTICIPANT_TOPIC_TYPE returned %d.\n"),
00050                         ret),
00051                        ret);
00052     }
00053   }
00054 
00055   DDS::Topic_var bit_part_topic =
00056     participant->create_topic(BUILT_IN_PARTICIPANT_TOPIC,
00057                               BUILT_IN_PARTICIPANT_TOPIC_TYPE,
00058                               TOPIC_QOS_DEFAULT,
00059                               DDS::TopicListener::_nil(),
00060                               DEFAULT_STATUS_MASK);
00061 
00062   if (CORBA::is_nil(bit_part_topic)) {
00063     ACE_ERROR_RETURN((LM_ERROR,
00064                       ACE_TEXT("(%P|%t) ")
00065                       ACE_TEXT("Discovery::create_bit_topics, ")
00066                       ACE_TEXT("Nil %C Topic\n"),
00067                       BUILT_IN_PARTICIPANT_TOPIC),
00068                      DDS::RETCODE_ERROR);
00069   }
00070 
00071   // Topic topic
00072   type_support =
00073     Registered_Data_Types->lookup(participant, BUILT_IN_TOPIC_TOPIC_TYPE);
00074 
00075   if (CORBA::is_nil(type_support)) {
00076     DDS::TopicBuiltinTopicDataTypeSupport_var ts =
00077       new DDS::TopicBuiltinTopicDataTypeSupportImpl;
00078 
00079     DDS::ReturnCode_t ret = ts->register_type(participant,
00080                                               BUILT_IN_TOPIC_TOPIC_TYPE);
00081 
00082     if (ret != DDS::RETCODE_OK) {
00083       ACE_ERROR_RETURN((LM_ERROR,
00084                         ACE_TEXT("(%P|%t) ")
00085                         ACE_TEXT("Discovery::create_bit_topics, ")
00086                         ACE_TEXT("register BUILT_IN_TOPIC_TOPIC_TYPE returned %d.\n"),
00087                         ret),
00088                        ret);
00089     }
00090   }
00091 
00092   DDS::Topic_var bit_topic_topic =
00093     participant->create_topic(BUILT_IN_TOPIC_TOPIC,
00094                               BUILT_IN_TOPIC_TOPIC_TYPE,
00095                               TOPIC_QOS_DEFAULT,
00096                               DDS::TopicListener::_nil(),
00097                               DEFAULT_STATUS_MASK);
00098 
00099   if (CORBA::is_nil(bit_topic_topic)) {
00100     ACE_ERROR_RETURN((LM_ERROR,
00101                       ACE_TEXT("(%P|%t) ")
00102                       ACE_TEXT("Discovery::create_bit_topics, ")
00103                       ACE_TEXT("Nil %C Topic\n"),
00104                       BUILT_IN_TOPIC_TOPIC),
00105                      DDS::RETCODE_ERROR);
00106   }
00107 
00108   // Subscription topic
00109   type_support =
00110     Registered_Data_Types->lookup(participant, BUILT_IN_SUBSCRIPTION_TOPIC_TYPE);
00111 
00112   if (CORBA::is_nil(type_support)) {
00113     DDS::SubscriptionBuiltinTopicDataTypeSupport_var ts =
00114       new DDS::SubscriptionBuiltinTopicDataTypeSupportImpl;
00115 
00116     DDS::ReturnCode_t ret = ts->register_type(participant,
00117                                               BUILT_IN_SUBSCRIPTION_TOPIC_TYPE);
00118 
00119     if (ret != DDS::RETCODE_OK) {
00120       ACE_ERROR_RETURN((LM_ERROR,
00121                         ACE_TEXT("(%P|%t) ")
00122                         ACE_TEXT("Discovery::create_bit_topics, ")
00123                         ACE_TEXT("register BUILT_IN_SUBSCRIPTION_TOPIC_TYPE returned %d.\n"),
00124                         ret),
00125                        ret);
00126     }
00127   }
00128 
00129   DDS::Topic_var bit_sub_topic =
00130     participant->create_topic(BUILT_IN_SUBSCRIPTION_TOPIC,
00131                               BUILT_IN_SUBSCRIPTION_TOPIC_TYPE,
00132                               TOPIC_QOS_DEFAULT,
00133                               DDS::TopicListener::_nil(),
00134                               DEFAULT_STATUS_MASK);
00135 
00136   if (CORBA::is_nil(bit_sub_topic)) {
00137     ACE_ERROR_RETURN((LM_ERROR,
00138                       ACE_TEXT("(%P|%t) ")
00139                       ACE_TEXT("Discovery::create_bit_topics, ")
00140                       ACE_TEXT("Nil %C Topic\n"),
00141                       BUILT_IN_SUBSCRIPTION_TOPIC),
00142                      DDS::RETCODE_ERROR);
00143   }
00144 
00145   // Publication topic
00146   type_support =
00147     Registered_Data_Types->lookup(participant, BUILT_IN_PUBLICATION_TOPIC_TYPE);
00148 
00149   if (CORBA::is_nil(type_support)) {
00150     DDS::PublicationBuiltinTopicDataTypeSupport_var ts =
00151       new DDS::PublicationBuiltinTopicDataTypeSupportImpl;
00152 
00153     DDS::ReturnCode_t ret = ts->register_type(participant,
00154                                               BUILT_IN_PUBLICATION_TOPIC_TYPE);
00155 
00156     if (ret != DDS::RETCODE_OK) {
00157       ACE_ERROR_RETURN((LM_ERROR,
00158                         ACE_TEXT("(%P|%t) ")
00159                         ACE_TEXT("Discovery::create_bit_topics, ")
00160                         ACE_TEXT("register BUILT_IN_PUBLICATION_TOPIC_TYPE returned %d.\n"),
00161                         ret),
00162                        ret);
00163     }
00164   }
00165 
00166   DDS::Topic_var bit_pub_topic =
00167     participant->create_topic(BUILT_IN_PUBLICATION_TOPIC,
00168                               BUILT_IN_PUBLICATION_TOPIC_TYPE,
00169                               TOPIC_QOS_DEFAULT,
00170                               DDS::TopicListener::_nil(),
00171                               DEFAULT_STATUS_MASK);
00172 
00173   if (CORBA::is_nil(bit_pub_topic)) {
00174     ACE_ERROR_RETURN((LM_ERROR,
00175                       ACE_TEXT("(%P|%t) ERROR: Discovery::create_bit_topics, ")
00176                       ACE_TEXT("Nil %C Topic\n"),
00177                       BUILT_IN_PUBLICATION_TOPIC),
00178                      DDS::RETCODE_ERROR);
00179   }
00180 
00181   bit_part_topic->enable();
00182   bit_topic_topic->enable();
00183   bit_sub_topic->enable();
00184   bit_pub_topic->enable();
00185 #else
00186   ACE_UNUSED_ARG(participant);
00187 #endif /* DDS_HAS_MINIMUM_BIT */
00188 
00189   return DDS::RETCODE_OK;
00190 }

Here is the call graph for this function:

Here is the caller graph for this function:

virtual TopicStatus OpenDDS::DCPS::Discovery::find_topic ( DDS::DomainId_t  domainId,
const char *  topicName,
CORBA::String_out  dataTypeName,
DDS::TopicQos_out  qos,
RepoId_out  topicId 
) [pure virtual]
virtual void OpenDDS::DCPS::Discovery::fini_bit ( DCPS::DomainParticipantImpl participant  )  [pure virtual]
virtual OpenDDS::DCPS::RepoId OpenDDS::DCPS::Discovery::generate_participant_guid (  )  [pure virtual]
virtual bool OpenDDS::DCPS::Discovery::ignore_domain_participant ( DDS::DomainId_t  domainId,
const RepoId myParticipantId,
const RepoId ignoreId 
) [pure virtual]
virtual bool OpenDDS::DCPS::Discovery::ignore_publication ( DDS::DomainId_t  domainId,
const RepoId myParticipantId,
const RepoId ignoreId 
) [pure virtual]
virtual bool OpenDDS::DCPS::Discovery::ignore_subscription ( DDS::DomainId_t  domainId,
const RepoId myParticipantId,
const RepoId ignoreId 
) [pure virtual]
virtual bool OpenDDS::DCPS::Discovery::ignore_topic ( DDS::DomainId_t  domainId,
const RepoId myParticipantId,
const RepoId ignoreId 
) [pure virtual]
virtual DDS::Subscriber_ptr OpenDDS::DCPS::Discovery::init_bit ( DomainParticipantImpl participant  )  [pure virtual]
RepoKey OpenDDS::DCPS::Discovery::key ( void   )  const [inline]

Definition at line 74 of file Discovery.h.

Referenced by OpenDDS::DCPS::InfoRepoDiscovery::bit_config(), OpenDDS::DCPS::InfoRepoDiscovery::get_dcps_info(), and OpenDDS::DCPS::InfoRepoDiscovery::init_bit().

00074 { return this->key_; }

Here is the caller graph for this function:

virtual void OpenDDS::DCPS::Discovery::pre_reader ( DataReaderImpl  )  [inline, virtual]

Reimplemented in OpenDDS::DCPS::StaticDiscovery.

Definition at line 192 of file Discovery.h.

00192 {}

virtual void OpenDDS::DCPS::Discovery::pre_writer ( DataWriterImpl  )  [inline, virtual]

Reimplemented in OpenDDS::DCPS::StaticDiscovery.

Definition at line 156 of file Discovery.h.

00156 {}

virtual bool OpenDDS::DCPS::Discovery::remove_domain_participant ( DDS::DomainId_t  domainId,
const RepoId participantId 
) [pure virtual]
virtual bool OpenDDS::DCPS::Discovery::remove_publication ( DDS::DomainId_t  domainId,
const RepoId participantId,
const RepoId publicationId 
) [pure virtual]
virtual bool OpenDDS::DCPS::Discovery::remove_subscription ( DDS::DomainId_t  domainId,
const RepoId participantId,
const RepoId subscriptionId 
) [pure virtual]
virtual TopicStatus OpenDDS::DCPS::Discovery::remove_topic ( DDS::DomainId_t  domainId,
const RepoId participantId,
const RepoId topicId 
) [pure virtual]
virtual void OpenDDS::DCPS::Discovery::signal_liveliness ( const DDS::DomainId_t  ,
const RepoId ,
DDS::LivelinessQosPolicyKind   
) [inline, virtual]

Reimplemented in OpenDDS::RTPS::RtpsDiscovery.

Definition at line 245 of file Discovery.h.

00247                                                                       { }

virtual bool OpenDDS::DCPS::Discovery::supports_liveliness (  )  const [inline, virtual]

Reimplemented in OpenDDS::RTPS::RtpsDiscovery.

Definition at line 243 of file Discovery.h.

00243 { return false; }

virtual bool OpenDDS::DCPS::Discovery::update_domain_participant_qos ( DDS::DomainId_t  domain,
const RepoId participantId,
const DDS::DomainParticipantQos qos 
) [pure virtual]
virtual bool OpenDDS::DCPS::Discovery::update_publication_qos ( DDS::DomainId_t  domainId,
const RepoId partId,
const RepoId dwId,
const DDS::DataWriterQos qos,
const DDS::PublisherQos publisherQos 
) [pure virtual]
virtual bool OpenDDS::DCPS::Discovery::update_subscription_params ( DDS::DomainId_t  domainId,
const RepoId participantId,
const RepoId subscriptionId,
const DDS::StringSeq params 
) [pure virtual]
virtual bool OpenDDS::DCPS::Discovery::update_subscription_qos ( DDS::DomainId_t  domainId,
const RepoId partId,
const RepoId drId,
const DDS::DataReaderQos qos,
const DDS::SubscriberQos subscriberQos 
) [pure virtual]
virtual bool OpenDDS::DCPS::Discovery::update_topic_qos ( const RepoId topicId,
DDS::DomainId_t  domainId,
const RepoId participantId,
const DDS::TopicQos qos 
) [pure virtual]

Member Data Documentation

const char * OpenDDS::DCPS::Discovery::DEFAULT_REPO = "DEFAULT_REPO" [static]
const char * OpenDDS::DCPS::Discovery::DEFAULT_RTPS = "DEFAULT_RTPS" [static]
const char * OpenDDS::DCPS::Discovery::DEFAULT_STATIC = "DEFAULT_STATIC" [static]

Definition at line 253 of file Discovery.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