OpenDDS  Snapshot(2023/04/07-19:43)
Classes | Public Member Functions | Static Public Member Functions | Public Attributes | List of all members
OpenDDS::DCPS::EndpointRegistry Class Reference

#include <StaticDiscovery.h>

Classes

struct  Reader
 
struct  StaticDiscGuidDomainEqual
 
struct  StaticDiscGuidPartEqual
 
struct  Topic
 
struct  Writer
 

Public Member Functions

typedef OPENDDS_MAP (OPENDDS_STRING, Topic) TopicMapType
 
typedef OPENDDS_MAP (OPENDDS_STRING, DDS::DataReaderQos) DataReaderQosMapType
 
typedef OPENDDS_MAP (OPENDDS_STRING, DDS::DataWriterQos) DataWriterQosMapType
 
typedef OPENDDS_MAP (OPENDDS_STRING, DDS::SubscriberQos) SubscriberQosMapType
 
typedef OPENDDS_MAP (OPENDDS_STRING, DDS::PublisherQos) PublisherQosMapType
 
typedef OPENDDS_SET_CMP (GUID_t, GUID_tKeyLessThan) RepoIdSetType
 
typedef OPENDDS_MAP_CMP (GUID_t, Reader, GUID_tKeyLessThan) ReaderMapType
 
typedef OPENDDS_MAP_CMP (GUID_t, Writer, GUID_tKeyLessThan) WriterMapType
 
void match ()
 

Static Public Member Functions

static EntityId_t build_id (const unsigned char *entity_key, const unsigned char entity_kind)
 
static GUID_t build_id (DDS::DomainId_t domain, const unsigned char *participant_id, const EntityId_t &entity_id)
 

Public Attributes

TopicMapType topic_map
 
DataReaderQosMapType datareaderqos_map
 
DataWriterQosMapType datawriterqos_map
 
SubscriberQosMapType subscriberqos_map
 
PublisherQosMapType publisherqos_map
 
ReaderMapType reader_map
 
WriterMapType writer_map
 

Detailed Description

Definition at line 34 of file StaticDiscovery.h.

Member Function Documentation

◆ build_id() [1/2]

EntityId_t OpenDDS::DCPS::EndpointRegistry::build_id ( const unsigned char *  entity_key,
const unsigned char  entity_kind 
)
static

Definition at line 1526 of file StaticDiscovery.cpp.

References OpenDDS::DCPS::EntityId_t::entityKey, and OpenDDS::DCPS::EntityId_t::entityKind.

Referenced by OpenDDS::DCPS::StaticDiscovery::add_domain_participant(), OpenDDS::DCPS::StaticDiscovery::parse_endpoints(), OpenDDS::DCPS::StaticDiscovery::pre_reader(), and OpenDDS::DCPS::StaticDiscovery::pre_writer().

1528 {
1529  EntityId_t retval;
1530  retval.entityKey[0] = entity_key[0];
1531  retval.entityKey[1] = entity_key[1];
1532  retval.entityKey[2] = entity_key[2];
1533  retval.entityKind = entity_kind;
1534  return retval;
1535 }

◆ build_id() [2/2]

GUID_t OpenDDS::DCPS::EndpointRegistry::build_id ( DDS::DomainId_t  domain,
const unsigned char *  participant_id,
const EntityId_t entity_id 
)
static

Definition at line 1538 of file StaticDiscovery.cpp.

References ACE_HTONL, OpenDDS::DCPS::GUID_t::guidPrefix, ACE_OS::memcpy(), and OpenDDS::DCPS::VENDORID_OCI.

1541 {
1542  GUID_t id;
1543  id.guidPrefix[0] = VENDORID_OCI[0];
1544  id.guidPrefix[1] = VENDORID_OCI[1];
1545  // id.guidPrefix[2] = domain[0]
1546  // id.guidPrefix[3] = domain[1]
1547  // id.guidPrefix[4] = domain[2]
1548  // id.guidPrefix[5] = domain[3]
1549  DDS::DomainId_t netdom = ACE_HTONL(domain);
1550  ACE_OS::memcpy(&id.guidPrefix[2], &netdom, sizeof(DDS::DomainId_t));
1551  // id.guidPrefix[6] = participant[0]
1552  // id.guidPrefix[7] = participant[1]
1553  // id.guidPrefix[8] = participant[2]
1554  // id.guidPrefix[9] = participant[3]
1555  // id.guidPrefix[10] = participant[4]
1556  // id.guidPrefix[11] = participant[5]
1557  ACE_OS::memcpy(&id.guidPrefix[6], participant_id, 6);
1558  id.entityId = entity_id;
1559  return id;
1560 }
#define ACE_HTONL(X)
void * memcpy(void *t, const void *s, size_t len)
DOMAINID_TYPE_NATIVE DomainId_t
const GuidVendorId_t VENDORID_OCI
Vendor Id value specified for OCI is used for OpenDDS.
Definition: GuidUtils.h:29

◆ match()

void OpenDDS::DCPS::EndpointRegistry::match ( )

Definition at line 33 of file StaticDiscovery.cpp.

References OpenDDS::DCPS::EndpointRegistry::Writer::best_effort_readers, DDS::BEST_EFFORT_RELIABILITY_QOS, OpenDDS::DCPS::EndpointRegistry::Reader::best_effort_writers, OpenDDS::DCPS::compatibleQOS(), OpenDDS::DCPS::GUID_t::guidPrefix, DDS::ReliabilityQosPolicy::kind, OpenDDS::DCPS::EndpointRegistry::Writer::publisher_qos, OpenDDS::DCPS::EndpointRegistry::Reader::qos, OpenDDS::DCPS::EndpointRegistry::Writer::qos, reader_map, DDS::DataReaderQos::reliability, OpenDDS::DCPS::EndpointRegistry::Writer::reliable_readers, DDS::RELIABLE_RELIABILITY_QOS, OpenDDS::DCPS::EndpointRegistry::Reader::reliable_writers, OpenDDS::DCPS::EndpointRegistry::Reader::subscriber_qos, OpenDDS::DCPS::EndpointRegistry::Reader::topic_name, OpenDDS::DCPS::EndpointRegistry::Writer::topic_name, OpenDDS::DCPS::EndpointRegistry::Reader::trans_info, OpenDDS::DCPS::EndpointRegistry::Writer::trans_info, and writer_map.

Referenced by OpenDDS::DCPS::StaticDiscovery::load_configuration().

34 {
35  for (WriterMapType::iterator wp = writer_map.begin(), wp_limit = writer_map.end();
36  wp != wp_limit;
37  ++wp) {
38  const GUID_t& writerid = wp->first;
39  Writer& writer = wp->second;
40  for (ReaderMapType::iterator rp = reader_map.begin(), rp_limit = reader_map.end();
41  rp != rp_limit;
42  ++rp) {
43  const GUID_t& readerid = rp->first;
44  Reader& reader = rp->second;
45 
46  if (StaticDiscGuidDomainEqual()(readerid.guidPrefix, writerid.guidPrefix) &&
47  !StaticDiscGuidPartEqual()(readerid.guidPrefix, writerid.guidPrefix) &&
48  reader.topic_name == writer.topic_name) {
49  // Different participants, same topic.
50  IncompatibleQosStatus writerStatus = {0, 0, 0, DDS::QosPolicyCountSeq()};
51  IncompatibleQosStatus readerStatus = {0, 0, 0, DDS::QosPolicyCountSeq()};
52  const TransportLocatorSeq& writer_trans_info = writer.trans_info;
53  const TransportLocatorSeq& reader_trans_info = reader.trans_info;
54  const DDS::DataWriterQos& writer_qos = writer.qos;
55  const DDS::DataReaderQos& reader_qos = reader.qos;
56  const DDS::PublisherQos& publisher_qos = writer.publisher_qos;
57  const DDS::SubscriberQos& subscriber_qos = reader.subscriber_qos;
58 
59  if (compatibleQOS(&writerStatus, &readerStatus, writer_trans_info, reader_trans_info,
60  &writer_qos, &reader_qos, &publisher_qos, &subscriber_qos)) {
61  switch (reader.qos.reliability.kind) {
63  writer.best_effort_readers.insert(readerid);
64  reader.best_effort_writers.insert(writerid);
65  break;
67  writer.reliable_readers.insert(readerid);
68  reader.reliable_writers.insert(writerid);
69  break;
70  }
71  }
72  }
73  }
74  }
75 }
sequence< TransportLocator > TransportLocatorSeq
bool compatibleQOS(OpenDDS::DCPS::IncompatibleQosStatus *writerStatus, OpenDDS::DCPS::IncompatibleQosStatus *readerStatus, const OpenDDS::DCPS::TransportLocatorSeq &pubTLS, const OpenDDS::DCPS::TransportLocatorSeq &subTLS, DDS::DataWriterQos const *const writerQos, DDS::DataReaderQos const *const readerQos, DDS::PublisherQos const *const pubQos, DDS::SubscriberQos const *const subQos)
Definition: DCPS_Utils.cpp:237
sequence< QosPolicyCount > QosPolicyCountSeq
Definition: DdsDcpsCore.idl:62

◆ OPENDDS_MAP() [1/5]

typedef OpenDDS::DCPS::EndpointRegistry::OPENDDS_MAP ( OPENDDS_STRING  ,
Topic   
)

◆ OPENDDS_MAP() [2/5]

typedef OpenDDS::DCPS::EndpointRegistry::OPENDDS_MAP ( OPENDDS_STRING  ,
DDS::DataReaderQos   
)

◆ OPENDDS_MAP() [3/5]

typedef OpenDDS::DCPS::EndpointRegistry::OPENDDS_MAP ( OPENDDS_STRING  ,
DDS::DataWriterQos   
)

◆ OPENDDS_MAP() [4/5]

typedef OpenDDS::DCPS::EndpointRegistry::OPENDDS_MAP ( OPENDDS_STRING  ,
DDS::SubscriberQos   
)

◆ OPENDDS_MAP() [5/5]

typedef OpenDDS::DCPS::EndpointRegistry::OPENDDS_MAP ( OPENDDS_STRING  ,
DDS::PublisherQos   
)

◆ OPENDDS_MAP_CMP() [1/2]

typedef OpenDDS::DCPS::EndpointRegistry::OPENDDS_MAP_CMP ( GUID_t  ,
Reader  ,
GUID_tKeyLessThan   
)

◆ OPENDDS_MAP_CMP() [2/2]

typedef OpenDDS::DCPS::EndpointRegistry::OPENDDS_MAP_CMP ( GUID_t  ,
Writer  ,
GUID_tKeyLessThan   
)

◆ OPENDDS_SET_CMP()

typedef OpenDDS::DCPS::EndpointRegistry::OPENDDS_SET_CMP ( GUID_t  ,
GUID_tKeyLessThan   
)

Member Data Documentation

◆ datareaderqos_map

DataReaderQosMapType OpenDDS::DCPS::EndpointRegistry::datareaderqos_map

◆ datawriterqos_map

DataWriterQosMapType OpenDDS::DCPS::EndpointRegistry::datawriterqos_map

◆ publisherqos_map

PublisherQosMapType OpenDDS::DCPS::EndpointRegistry::publisherqos_map

◆ reader_map

ReaderMapType OpenDDS::DCPS::EndpointRegistry::reader_map

◆ subscriberqos_map

SubscriberQosMapType OpenDDS::DCPS::EndpointRegistry::subscriberqos_map

◆ topic_map

TopicMapType OpenDDS::DCPS::EndpointRegistry::topic_map

◆ writer_map

WriterMapType OpenDDS::DCPS::EndpointRegistry::writer_map

The documentation for this class was generated from the following files: