OpenDDS::DCPS::PeerDiscovery< Participant > Class Template Reference

#include <DiscoveryBase.h>

Inheritance diagram for OpenDDS::DCPS::PeerDiscovery< Participant >:
Inheritance graph
[legend]
Collaboration diagram for OpenDDS::DCPS::PeerDiscovery< Participant >:
Collaboration graph
[legend]

List of all members.

Classes

struct  ReactorRunner

Public Types

typedef Participant::TopicDetails TopicDetails

Public Member Functions

 PeerDiscovery (const RepoKey &key)
 ~PeerDiscovery ()
virtual DDS::Subscriber_ptr init_bit (DomainParticipantImpl *participant)
virtual void fini_bit (DCPS::DomainParticipantImpl *participant)
virtual OpenDDS::DCPS::RepoId bit_key_to_repo_id (DCPS::DomainParticipantImpl *participant, const char *bit_topic_name, const DDS::BuiltinTopicKey_t &key) const
virtual bool attach_participant (DDS::DomainId_t, const OpenDDS::DCPS::RepoId &)
virtual bool remove_domain_participant (DDS::DomainId_t domain_id, const OpenDDS::DCPS::RepoId &participantId)
virtual bool ignore_domain_participant (DDS::DomainId_t domain, const OpenDDS::DCPS::RepoId &myParticipantId, const OpenDDS::DCPS::RepoId &ignoreId)
virtual bool update_domain_participant_qos (DDS::DomainId_t domain, const OpenDDS::DCPS::RepoId &participant, const DDS::DomainParticipantQos &qos)
virtual DCPS::TopicStatus assert_topic (OpenDDS::DCPS::RepoId_out topicId, DDS::DomainId_t domainId, const OpenDDS::DCPS::RepoId &participantId, const char *topicName, const char *dataTypeName, const DDS::TopicQos &qos, bool hasDcpsKey)
virtual DCPS::TopicStatus find_topic (DDS::DomainId_t domainId, const char *topicName, CORBA::String_out dataTypeName, DDS::TopicQos_out qos, OpenDDS::DCPS::RepoId_out topicId)
virtual DCPS::TopicStatus remove_topic (DDS::DomainId_t domainId, const OpenDDS::DCPS::RepoId &participantId, const OpenDDS::DCPS::RepoId &topicId)
virtual bool ignore_topic (DDS::DomainId_t domainId, const OpenDDS::DCPS::RepoId &myParticipantId, const OpenDDS::DCPS::RepoId &ignoreId)
virtual bool update_topic_qos (const OpenDDS::DCPS::RepoId &topicId, DDS::DomainId_t domainId, const OpenDDS::DCPS::RepoId &participantId, const DDS::TopicQos &qos)
virtual OpenDDS::DCPS::RepoId add_publication (DDS::DomainId_t domainId, const OpenDDS::DCPS::RepoId &participantId, const OpenDDS::DCPS::RepoId &topicId, DCPS::DataWriterCallbacks *publication, const DDS::DataWriterQos &qos, const DCPS::TransportLocatorSeq &transInfo, const DDS::PublisherQos &publisherQos)
virtual bool remove_publication (DDS::DomainId_t domainId, const OpenDDS::DCPS::RepoId &participantId, const OpenDDS::DCPS::RepoId &publicationId)
virtual bool ignore_publication (DDS::DomainId_t domainId, const OpenDDS::DCPS::RepoId &participantId, const OpenDDS::DCPS::RepoId &ignoreId)
virtual bool update_publication_qos (DDS::DomainId_t domainId, const OpenDDS::DCPS::RepoId &partId, const OpenDDS::DCPS::RepoId &dwId, const DDS::DataWriterQos &qos, const DDS::PublisherQos &publisherQos)
virtual OpenDDS::DCPS::RepoId add_subscription (DDS::DomainId_t domainId, const OpenDDS::DCPS::RepoId &participantId, const OpenDDS::DCPS::RepoId &topicId, DCPS::DataReaderCallbacks *subscription, const DDS::DataReaderQos &qos, const DCPS::TransportLocatorSeq &transInfo, const DDS::SubscriberQos &subscriberQos, const char *filterClassName, const char *filterExpr, const DDS::StringSeq &params)
virtual bool remove_subscription (DDS::DomainId_t domainId, const OpenDDS::DCPS::RepoId &participantId, const OpenDDS::DCPS::RepoId &subscriptionId)
virtual bool ignore_subscription (DDS::DomainId_t domainId, const OpenDDS::DCPS::RepoId &participantId, const OpenDDS::DCPS::RepoId &ignoreId)
virtual bool update_subscription_qos (DDS::DomainId_t domainId, const OpenDDS::DCPS::RepoId &partId, const OpenDDS::DCPS::RepoId &drId, const DDS::DataReaderQos &qos, const DDS::SubscriberQos &subQos)
virtual bool update_subscription_params (DDS::DomainId_t domainId, const OpenDDS::DCPS::RepoId &partId, const OpenDDS::DCPS::RepoId &subId, const DDS::StringSeq &params)
virtual void association_complete (DDS::DomainId_t domainId, const OpenDDS::DCPS::RepoId &participantId, const OpenDDS::DCPS::RepoId &localId, const OpenDDS::DCPS::RepoId &remoteId)
ACE_Reactorreactor ()

Protected Types

typedef DCPS::RcHandle
< Participant > 
ParticipantHandle

Protected Member Functions

typedef OPENDDS_MAP_CMP (DCPS::RepoId, ParticipantHandle, DCPS::GUID_tKeyLessThan) ParticipantMap
typedef OPENDDS_MAP (DDS::DomainId_t, ParticipantMap) DomainParticipantMap
ParticipantHandle get_part (const DDS::DomainId_t domain_id, const OpenDDS::DCPS::RepoId &part_id) const
void create_bit_dr (DDS::TopicDescription_ptr topic, const char *type, DCPS::SubscriberImpl *sub, const DDS::DataReaderQos &qos)
 OPENDDS_MAP (DDS::DomainId_t, OPENDDS_MAP(OPENDDS_STRING, TopicDetails)) topics_
 OPENDDS_MAP (DDS::DomainId_t, OPENDDS_MAP(OPENDDS_STRING, unsigned int)) topic_use_

Protected Attributes

ACE_Thread_Mutex lock_
OpenDDS::DCPS::PeerDiscovery::ReactorRunner reactor_runner_
DomainParticipantMap participants_

Detailed Description

template<typename Participant>
class OpenDDS::DCPS::PeerDiscovery< Participant >

Definition at line 1545 of file DiscoveryBase.h.


Member Typedef Documentation

template<typename Participant>
typedef DCPS::RcHandle<Participant> OpenDDS::DCPS::PeerDiscovery< Participant >::ParticipantHandle [protected]

Definition at line 1884 of file DiscoveryBase.h.

template<typename Participant>
typedef Participant::TopicDetails OpenDDS::DCPS::PeerDiscovery< Participant >::TopicDetails

Definition at line 1547 of file DiscoveryBase.h.


Constructor & Destructor Documentation

template<typename Participant>
OpenDDS::DCPS::PeerDiscovery< Participant >::PeerDiscovery ( const RepoKey key  )  [inline, explicit]

Definition at line 1549 of file DiscoveryBase.h.

01549 : Discovery(key) { }

template<typename Participant>
OpenDDS::DCPS::PeerDiscovery< Participant >::~PeerDiscovery (  )  [inline]

Definition at line 1551 of file DiscoveryBase.h.

01551                        {
01552         reactor_runner_.end();
01553       }


Member Function Documentation

template<typename Participant>
virtual OpenDDS::DCPS::RepoId OpenDDS::DCPS::PeerDiscovery< Participant >::add_publication ( DDS::DomainId_t  domainId,
const OpenDDS::DCPS::RepoId participantId,
const OpenDDS::DCPS::RepoId topicId,
DCPS::DataWriterCallbacks publication,
const DDS::DataWriterQos qos,
const DCPS::TransportLocatorSeq transInfo,
const DDS::PublisherQos publisherQos 
) [inline, 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.

Implements OpenDDS::DCPS::Discovery.

Definition at line 1779 of file DiscoveryBase.h.

01786       {
01787         return get_part(domainId, participantId)->add_publication(topicId, publication, qos, transInfo, publisherQos);
01788       }

template<typename Participant>
virtual OpenDDS::DCPS::RepoId OpenDDS::DCPS::PeerDiscovery< Participant >::add_subscription ( DDS::DomainId_t  domainId,
const OpenDDS::DCPS::RepoId participantId,
const OpenDDS::DCPS::RepoId topicId,
DCPS::DataReaderCallbacks subscription,
const DDS::DataReaderQos qos,
const DCPS::TransportLocatorSeq transInfo,
const DDS::SubscriberQos subscriberQos,
const char *  filterClassName,
const char *  filterExpression,
const DDS::StringSeq exprParams 
) [inline, 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.

Implements OpenDDS::DCPS::Discovery.

Definition at line 1816 of file DiscoveryBase.h.

01826       {
01827         return get_part(domainId, participantId)->add_subscription(topicId, subscription, qos, transInfo, subscriberQos, filterClassName, filterExpr, params);
01828       }

template<typename Participant>
virtual DCPS::TopicStatus OpenDDS::DCPS::PeerDiscovery< Participant >::assert_topic ( OpenDDS::DCPS::RepoId_out  topicId,
DDS::DomainId_t  domainId,
const OpenDDS::DCPS::RepoId participantId,
const char *  topicName,
const char *  dataTypeName,
const DDS::TopicQos qos,
bool  hasDcpsKey 
) [inline, virtual]

Definition at line 1665 of file DiscoveryBase.h.

01672       {
01673         ACE_GUARD_RETURN(ACE_Thread_Mutex, g, lock_, DCPS::INTERNAL_ERROR);
01674         typename OPENDDS_MAP(DDS::DomainId_t,
01675                              OPENDDS_MAP(OPENDDS_STRING, TopicDetails) )::iterator topic_it =
01676           topics_.find(domainId);
01677         if (topic_it != topics_.end()) {
01678           const typename OPENDDS_MAP(OPENDDS_STRING, TopicDetails)::iterator it =
01679             topic_it->second.find(topicName);
01680           if (it != topic_it->second.end()
01681               && it->second.data_type_ != dataTypeName) {
01682             topicId = GUID_UNKNOWN;
01683             return DCPS::CONFLICTING_TYPENAME;
01684           }
01685         }
01686 
01687         // Verified its safe to hold lock during call to assert_topic
01688         const DCPS::TopicStatus stat =
01689           participants_[domainId][participantId]->assert_topic(topicId, topicName,
01690                                                                dataTypeName, qos,
01691                                                                hasDcpsKey);
01692         if (stat == DCPS::CREATED || stat == DCPS::FOUND) { // qos change (FOUND)
01693           TopicDetails& td = topics_[domainId][topicName];
01694           td.data_type_ = dataTypeName;
01695           td.qos_ = qos;
01696           td.repo_id_ = topicId;
01697           ++topic_use_[domainId][topicName];
01698         }
01699         return stat;
01700       }

template<typename Participant>
virtual void OpenDDS::DCPS::PeerDiscovery< Participant >::association_complete ( DDS::DomainId_t  domainId,
const OpenDDS::DCPS::RepoId participantId,
const OpenDDS::DCPS::RepoId localId,
const OpenDDS::DCPS::RepoId remoteId 
) [inline, virtual]

Implements OpenDDS::DCPS::Discovery.

Definition at line 1863 of file DiscoveryBase.h.

01867       {
01868         get_part(domainId, participantId)->association_complete(localId, remoteId);
01869       }

template<typename Participant>
virtual bool OpenDDS::DCPS::PeerDiscovery< Participant >::attach_participant ( DDS::DomainId_t  ,
const OpenDDS::DCPS::RepoId  
) [inline, virtual]

Implements OpenDDS::DCPS::Discovery.

Definition at line 1620 of file DiscoveryBase.h.

01622       {
01623         return false; // This is just for DCPSInfoRepo?
01624       }

template<typename Participant>
virtual OpenDDS::DCPS::RepoId OpenDDS::DCPS::PeerDiscovery< Participant >::bit_key_to_repo_id ( DCPS::DomainParticipantImpl participant,
const char *  bit_topic_name,
const DDS::BuiltinTopicKey_t key 
) const [inline, virtual]

Implements OpenDDS::DCPS::Discovery.

Definition at line 1612 of file DiscoveryBase.h.

Referenced by OpenDDS::DCPS::PeerDiscovery< Spdp >::bit_key_to_repo_id().

01615       {
01616         return get_part(participant->get_domain_id(), participant->get_id())
01617           ->bit_key_to_repo_id(bit_topic_name, key);
01618       }

Here is the caller graph for this function:

template<typename Participant>
void OpenDDS::DCPS::PeerDiscovery< Participant >::create_bit_dr ( DDS::TopicDescription_ptr  topic,
const char *  type,
DCPS::SubscriberImpl sub,
const DDS::DataReaderQos qos 
) [inline, protected]

Definition at line 1904 of file DiscoveryBase.h.

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

01907       {
01908         using namespace DCPS;
01909         TopicDescriptionImpl* bit_topic_i =
01910           dynamic_cast<TopicDescriptionImpl*>(topic);
01911 
01912         DDS::DomainParticipant_var participant = sub->get_participant();
01913         DomainParticipantImpl* participant_i =
01914           dynamic_cast<DomainParticipantImpl*>(participant.in());
01915 
01916         TypeSupport_var type_support =
01917           Registered_Data_Types->lookup(participant, type);
01918 
01919         DDS::DataReader_var dr = type_support->create_datareader();
01920         OpenDDS::DCPS::DataReaderImpl* dri = dynamic_cast<OpenDDS::DCPS::DataReaderImpl*>(dr.in());
01921 
01922         dri->init(bit_topic_i, qos, 0 /*listener*/, 0 /*mask*/, participant_i, sub);
01923         dri->disable_transport();
01924         dri->enable();
01925       }

Here is the caller graph for this function:

template<typename Participant>
virtual DCPS::TopicStatus OpenDDS::DCPS::PeerDiscovery< Participant >::find_topic ( DDS::DomainId_t  domainId,
const char *  topicName,
CORBA::String_out  dataTypeName,
DDS::TopicQos_out  qos,
OpenDDS::DCPS::RepoId_out  topicId 
) [inline, virtual]

Definition at line 1702 of file DiscoveryBase.h.

01705       {
01706         ACE_GUARD_RETURN(ACE_Thread_Mutex, g, lock_, DCPS::INTERNAL_ERROR);
01707         typename OPENDDS_MAP(DDS::DomainId_t,
01708                              OPENDDS_MAP(OPENDDS_STRING, TopicDetails) )::iterator topic_it =
01709           topics_.find(domainId);
01710         if (topic_it == topics_.end()) {
01711           return DCPS::NOT_FOUND;
01712         }
01713         typename OPENDDS_MAP(OPENDDS_STRING, TopicDetails)::iterator iter =
01714           topic_it->second.find(topicName);
01715         if (iter == topic_it->second.end()) {
01716           return DCPS::NOT_FOUND;
01717         }
01718         TopicDetails& td = iter->second;
01719         dataTypeName = td.data_type_.c_str();
01720         qos = new DDS::TopicQos(td.qos_);
01721         topicId = td.repo_id_;
01722         ++topic_use_[domainId][topicName];
01723         return DCPS::FOUND;
01724       }

template<typename Participant>
virtual void OpenDDS::DCPS::PeerDiscovery< Participant >::fini_bit ( DCPS::DomainParticipantImpl participant  )  [inline, virtual]

Implements OpenDDS::DCPS::Discovery.

Definition at line 1607 of file DiscoveryBase.h.

Referenced by OpenDDS::DCPS::PeerDiscovery< Spdp >::fini_bit().

01608       {
01609         get_part(participant->get_domain_id(), participant->get_id())->fini_bit();
01610       }

Here is the caller graph for this function:

template<typename Participant>
ParticipantHandle OpenDDS::DCPS::PeerDiscovery< Participant >::get_part ( const DDS::DomainId_t  domain_id,
const OpenDDS::DCPS::RepoId part_id 
) const [inline, protected]

Definition at line 1889 of file DiscoveryBase.h.

Referenced by OpenDDS::DCPS::PeerDiscovery< Spdp >::add_publication(), OpenDDS::DCPS::PeerDiscovery< Spdp >::add_subscription(), OpenDDS::DCPS::PeerDiscovery< Spdp >::association_complete(), OpenDDS::DCPS::PeerDiscovery< Spdp >::bit_key_to_repo_id(), OpenDDS::DCPS::PeerDiscovery< Spdp >::fini_bit(), OpenDDS::DCPS::PeerDiscovery< Spdp >::ignore_domain_participant(), OpenDDS::DCPS::PeerDiscovery< Spdp >::ignore_publication(), OpenDDS::DCPS::PeerDiscovery< Spdp >::ignore_subscription(), OpenDDS::DCPS::PeerDiscovery< Spdp >::ignore_topic(), OpenDDS::DCPS::PeerDiscovery< Spdp >::init_bit(), OpenDDS::DCPS::PeerDiscovery< Spdp >::remove_publication(), OpenDDS::DCPS::PeerDiscovery< Spdp >::remove_subscription(), OpenDDS::DCPS::PeerDiscovery< Spdp >::update_domain_participant_qos(), OpenDDS::DCPS::PeerDiscovery< Spdp >::update_publication_qos(), OpenDDS::DCPS::PeerDiscovery< Spdp >::update_subscription_params(), and OpenDDS::DCPS::PeerDiscovery< Spdp >::update_subscription_qos().

01891       {
01892         ACE_GUARD_RETURN(ACE_Thread_Mutex, g, lock_, ParticipantHandle());
01893         typename DomainParticipantMap::const_iterator domain = participants_.find(domain_id);
01894         if (domain == participants_.end()) {
01895           return ParticipantHandle();
01896         }
01897         typename ParticipantMap::const_iterator part = domain->second.find(part_id);
01898         if (part == domain->second.end()) {
01899           return ParticipantHandle();
01900         }
01901         return part->second;
01902       }

Here is the caller graph for this function:

template<typename Participant>
virtual bool OpenDDS::DCPS::PeerDiscovery< Participant >::ignore_domain_participant ( DDS::DomainId_t  domain,
const OpenDDS::DCPS::RepoId myParticipantId,
const OpenDDS::DCPS::RepoId ignoreId 
) [inline, virtual]

Implements OpenDDS::DCPS::Discovery.

Definition at line 1650 of file DiscoveryBase.h.

01653       {
01654         get_part(domain, myParticipantId)->ignore_domain_participant(ignoreId);
01655         return true;
01656       }

template<typename Participant>
virtual bool OpenDDS::DCPS::PeerDiscovery< Participant >::ignore_publication ( DDS::DomainId_t  domainId,
const OpenDDS::DCPS::RepoId participantId,
const OpenDDS::DCPS::RepoId ignoreId 
) [inline, virtual]

Implements OpenDDS::DCPS::Discovery.

Definition at line 1798 of file DiscoveryBase.h.

01801       {
01802         get_part(domainId, participantId)->ignore_publication(ignoreId);
01803         return true;
01804       }

template<typename Participant>
virtual bool OpenDDS::DCPS::PeerDiscovery< Participant >::ignore_subscription ( DDS::DomainId_t  domainId,
const OpenDDS::DCPS::RepoId participantId,
const OpenDDS::DCPS::RepoId ignoreId 
) [inline, virtual]

Implements OpenDDS::DCPS::Discovery.

Definition at line 1838 of file DiscoveryBase.h.

01841       {
01842         get_part(domainId, participantId)->ignore_subscription(ignoreId);
01843         return true;
01844       }

template<typename Participant>
virtual bool OpenDDS::DCPS::PeerDiscovery< Participant >::ignore_topic ( DDS::DomainId_t  domainId,
const OpenDDS::DCPS::RepoId myParticipantId,
const OpenDDS::DCPS::RepoId ignoreId 
) [inline, virtual]

Implements OpenDDS::DCPS::Discovery.

Definition at line 1758 of file DiscoveryBase.h.

01760       {
01761         get_part(domainId, myParticipantId)->ignore_topic(ignoreId);
01762         return true;
01763       }

template<typename Participant>
virtual DDS::Subscriber_ptr OpenDDS::DCPS::PeerDiscovery< Participant >::init_bit ( DomainParticipantImpl participant  )  [inline, virtual]

Implements OpenDDS::DCPS::Discovery.

Definition at line 1555 of file DiscoveryBase.h.

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

01555                                                                              {
01556         using namespace DCPS;
01557         if (create_bit_topics(participant) != DDS::RETCODE_OK) {
01558           return 0;
01559         }
01560 
01561         DDS::Subscriber_var bit_subscriber =
01562           participant->create_subscriber(SUBSCRIBER_QOS_DEFAULT,
01563                                          DDS::SubscriberListener::_nil(),
01564                                          DEFAULT_STATUS_MASK);
01565         SubscriberImpl* sub = dynamic_cast<SubscriberImpl*>(bit_subscriber.in());
01566 
01567         DDS::DataReaderQos dr_qos;
01568         sub->get_default_datareader_qos(dr_qos);
01569         dr_qos.durability.kind = DDS::TRANSIENT_LOCAL_DURABILITY_QOS;
01570 
01571 #ifndef DDS_HAS_MINIMUM_BIT
01572         DDS::TopicDescription_var bit_part_topic =
01573           participant->lookup_topicdescription(BUILT_IN_PARTICIPANT_TOPIC);
01574         create_bit_dr(bit_part_topic, BUILT_IN_PARTICIPANT_TOPIC_TYPE,
01575                       sub, dr_qos);
01576 
01577         DDS::TopicDescription_var bit_topic_topic =
01578           participant->lookup_topicdescription(BUILT_IN_TOPIC_TOPIC);
01579         create_bit_dr(bit_topic_topic, BUILT_IN_TOPIC_TOPIC_TYPE,
01580                       sub, dr_qos);
01581 
01582         DDS::TopicDescription_var bit_pub_topic =
01583           participant->lookup_topicdescription(BUILT_IN_PUBLICATION_TOPIC);
01584         create_bit_dr(bit_pub_topic, BUILT_IN_PUBLICATION_TOPIC_TYPE,
01585                       sub, dr_qos);
01586 
01587         DDS::TopicDescription_var bit_sub_topic =
01588           participant->lookup_topicdescription(BUILT_IN_SUBSCRIPTION_TOPIC);
01589         create_bit_dr(bit_sub_topic, BUILT_IN_SUBSCRIPTION_TOPIC_TYPE,
01590                       sub, dr_qos);
01591 
01592         const DDS::ReturnCode_t ret = bit_subscriber->enable();
01593         if (ret != DDS::RETCODE_OK) {
01594           if (DCPS_debug_level) {
01595             ACE_DEBUG((LM_INFO, ACE_TEXT("(%P|%t) PeerDiscovery::init_bit")
01596                        ACE_TEXT(" - Error %d enabling subscriber\n"), ret));
01597           }
01598           return 0;
01599         }
01600 #endif /* DDS_HAS_MINIMUM_BIT */
01601 
01602         get_part(participant->get_domain_id(), participant->get_id())->init_bit(bit_subscriber);
01603 
01604         return bit_subscriber._retn();
01605       }

Here is the caller graph for this function:

template<typename Participant>
OpenDDS::DCPS::PeerDiscovery< Participant >::OPENDDS_MAP ( DDS::DomainId_t  ,
OPENDDS_MAP(OPENDDS_STRING, unsigned int)   
) [protected]
template<typename Participant>
OpenDDS::DCPS::PeerDiscovery< Participant >::OPENDDS_MAP ( DDS::DomainId_t  ,
OPENDDS_MAP(OPENDDS_STRING, TopicDetails  
) [protected]
template<typename Participant>
typedef OpenDDS::DCPS::PeerDiscovery< Participant >::OPENDDS_MAP ( DDS::DomainId_t  ,
ParticipantMap   
) [protected]
template<typename Participant>
typedef OpenDDS::DCPS::PeerDiscovery< Participant >::OPENDDS_MAP_CMP ( DCPS::RepoId  ,
ParticipantHandle  ,
DCPS::GUID_tKeyLessThan   
) [protected]
template<typename Participant>
ACE_Reactor* OpenDDS::DCPS::PeerDiscovery< Participant >::reactor ( void   )  [inline]

Definition at line 1872 of file DiscoveryBase.h.

Referenced by OpenDDS::RTPS::Spdp::reactor().

01873       {
01874         ACE_GUARD_RETURN(ACE_Thread_Mutex, g, reactor_runner_.mtx_, 0);
01875         if (!reactor_runner_.reactor_) {
01876           reactor_runner_.reactor_.reset(new ACE_Reactor(new ACE_Select_Reactor, true));
01877           reactor_runner_.activate();
01878         }
01879         return reactor_runner_.reactor_.get();
01880       }

Here is the caller graph for this function:

template<typename Participant>
virtual bool OpenDDS::DCPS::PeerDiscovery< Participant >::remove_domain_participant ( DDS::DomainId_t  domain_id,
const OpenDDS::DCPS::RepoId participantId 
) [inline, virtual]

Implements OpenDDS::DCPS::Discovery.

Definition at line 1626 of file DiscoveryBase.h.

01628       {
01629         // Use reference counting to ensure participant
01630         // does not get deleted until lock as been released.
01631         ParticipantHandle participant;
01632         ACE_GUARD_RETURN(ACE_Thread_Mutex, g, lock_, false);
01633         typename DomainParticipantMap::iterator domain = participants_.find(domain_id);
01634         if (domain == participants_.end()) {
01635           return false;
01636         }
01637         typename ParticipantMap::iterator part = domain->second.find(participantId);
01638         if (part == domain->second.end()) {
01639           return false;
01640         }
01641         participant = part->second;
01642         domain->second.erase(part);
01643         if (domain->second.empty()) {
01644           participants_.erase(domain);
01645         }
01646 
01647         return true;
01648       }

template<typename Participant>
virtual bool OpenDDS::DCPS::PeerDiscovery< Participant >::remove_publication ( DDS::DomainId_t  domainId,
const OpenDDS::DCPS::RepoId participantId,
const OpenDDS::DCPS::RepoId publicationId 
) [inline, virtual]

Implements OpenDDS::DCPS::Discovery.

Definition at line 1790 of file DiscoveryBase.h.

01793       {
01794         get_part(domainId, participantId)->remove_publication(publicationId);
01795         return true;
01796       }

template<typename Participant>
virtual bool OpenDDS::DCPS::PeerDiscovery< Participant >::remove_subscription ( DDS::DomainId_t  domainId,
const OpenDDS::DCPS::RepoId participantId,
const OpenDDS::DCPS::RepoId subscriptionId 
) [inline, virtual]

Implements OpenDDS::DCPS::Discovery.

Definition at line 1830 of file DiscoveryBase.h.

01833       {
01834         get_part(domainId, participantId)->remove_subscription(subscriptionId);
01835         return true;
01836       }

template<typename Participant>
virtual DCPS::TopicStatus OpenDDS::DCPS::PeerDiscovery< Participant >::remove_topic ( DDS::DomainId_t  domainId,
const OpenDDS::DCPS::RepoId participantId,
const OpenDDS::DCPS::RepoId topicId 
) [inline, virtual]

Implements OpenDDS::DCPS::Discovery.

Definition at line 1726 of file DiscoveryBase.h.

01729       {
01730         ACE_GUARD_RETURN(ACE_Thread_Mutex, g, lock_, DCPS::INTERNAL_ERROR);
01731         typename OPENDDS_MAP(DDS::DomainId_t,
01732                              OPENDDS_MAP(OPENDDS_STRING, TopicDetails) )::iterator topic_it =
01733           topics_.find(domainId);
01734         if (topic_it == topics_.end()) {
01735           return DCPS::NOT_FOUND;
01736         }
01737 
01738         OPENDDS_STRING name;
01739         // Safe to hold lock while calling remove topic
01740         const DCPS::TopicStatus stat =
01741           participants_[domainId][participantId]->remove_topic(topicId, name);
01742 
01743         if (stat == DCPS::REMOVED) {
01744           if (0 == --topic_use_[domainId][name]) {
01745             topic_use_[domainId].erase(name);
01746             if (topic_it->second.empty()) {
01747               topic_use_.erase(domainId);
01748             }
01749             topic_it->second.erase(name);
01750             if (topic_it->second.empty()) {
01751               topics_.erase(topic_it);
01752             }
01753           }
01754         }
01755         return stat;
01756       }

template<typename Participant>
virtual bool OpenDDS::DCPS::PeerDiscovery< Participant >::update_domain_participant_qos ( DDS::DomainId_t  domain,
const OpenDDS::DCPS::RepoId participant,
const DDS::DomainParticipantQos qos 
) [inline, virtual]

Implements OpenDDS::DCPS::Discovery.

Definition at line 1658 of file DiscoveryBase.h.

01661       {
01662         return get_part(domain, participant)->update_domain_participant_qos(qos);
01663       }

template<typename Participant>
virtual bool OpenDDS::DCPS::PeerDiscovery< Participant >::update_publication_qos ( DDS::DomainId_t  domainId,
const OpenDDS::DCPS::RepoId partId,
const OpenDDS::DCPS::RepoId dwId,
const DDS::DataWriterQos qos,
const DDS::PublisherQos publisherQos 
) [inline, virtual]

Implements OpenDDS::DCPS::Discovery.

Definition at line 1806 of file DiscoveryBase.h.

01811       {
01812         return get_part(domainId, partId)->update_publication_qos(dwId, qos,
01813                                                                   publisherQos);
01814       }

template<typename Participant>
virtual bool OpenDDS::DCPS::PeerDiscovery< Participant >::update_subscription_params ( DDS::DomainId_t  domainId,
const OpenDDS::DCPS::RepoId partId,
const OpenDDS::DCPS::RepoId subId,
const DDS::StringSeq params 
) [inline, virtual]

Implements OpenDDS::DCPS::Discovery.

Definition at line 1855 of file DiscoveryBase.h.

01859       {
01860         return get_part(domainId, partId)->update_subscription_params(subId, params);
01861       }

template<typename Participant>
virtual bool OpenDDS::DCPS::PeerDiscovery< Participant >::update_subscription_qos ( DDS::DomainId_t  domainId,
const OpenDDS::DCPS::RepoId partId,
const OpenDDS::DCPS::RepoId drId,
const DDS::DataReaderQos qos,
const DDS::SubscriberQos subQos 
) [inline, virtual]

Implements OpenDDS::DCPS::Discovery.

Definition at line 1846 of file DiscoveryBase.h.

01851       {
01852         return get_part(domainId, partId)->update_subscription_qos(drId, qos, subQos);
01853       }

template<typename Participant>
virtual bool OpenDDS::DCPS::PeerDiscovery< Participant >::update_topic_qos ( const OpenDDS::DCPS::RepoId topicId,
DDS::DomainId_t  domainId,
const OpenDDS::DCPS::RepoId participantId,
const DDS::TopicQos qos 
) [inline, virtual]

Implements OpenDDS::DCPS::Discovery.

Definition at line 1765 of file DiscoveryBase.h.

Referenced by OpenDDS::DCPS::PeerDiscovery< Spdp >::update_topic_qos().

01767       {
01768         ACE_GUARD_RETURN(ACE_Thread_Mutex, g, lock_, false);
01769         OPENDDS_STRING name;
01770         // Safe to hold lock while calling update_topic_qos
01771         if (participants_[domainId][participantId]->update_topic_qos(topicId,
01772                                                                      qos, name)) {
01773           topics_[domainId][name].qos_ = qos;
01774           return true;
01775         }
01776         return false;
01777       }

Here is the caller graph for this function:


Member Data Documentation

template<typename Participant>
ACE_Thread_Mutex OpenDDS::DCPS::PeerDiscovery< Participant >::lock_ [mutable, protected]
template<typename Participant>
DomainParticipantMap OpenDDS::DCPS::PeerDiscovery< Participant >::participants_ [protected]
template<typename Participant>
OpenDDS::DCPS::PeerDiscovery::ReactorRunner OpenDDS::DCPS::PeerDiscovery< Participant >::reactor_runner_ [protected]

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

Generated on 10 Aug 2018 for OpenDDS by  doxygen 1.6.1