37 #ifdef OPENDDS_SECURITY 41 #include <dds/DdsDcpsGuidTypeSupportImpl.h> 42 #ifdef OPENDDS_SECURITY 43 # include <dds/DdsSecurityCoreTypeSupportImpl.h> 55 #ifndef OPENDDS_SAFETY_PROFILE 56 using OpenDDS::DCPS::operator!=;
62 if (dest.deadline != src.deadline) {
64 dest.deadline = src.deadline;
67 if (dest.latency_budget != src.latency_budget) {
69 dest.latency_budget = src.latency_budget;
72 if (dest.lifespan != src.lifespan) {
74 dest.lifespan = src.lifespan;
77 if (dest.user_data != src.user_data) {
79 dest.user_data = src.user_data;
82 if (dest.ownership_strength != src.ownership_strength) {
84 dest.ownership_strength = src.ownership_strength;
87 if (dest.partition != src.partition) {
89 dest.partition = src.partition;
92 if (dest.topic_data != src.topic_data) {
94 dest.topic_data = src.topic_data;
97 if (dest.group_data != src.group_data) {
99 dest.group_data = src.group_data;
108 #ifndef OPENDDS_SAFETY_PROFILE 109 using OpenDDS::DCPS::operator!=;
111 bool changed =
false;
115 if (dest.deadline != src.deadline) {
117 dest.deadline = src.deadline;
120 if (dest.latency_budget != src.latency_budget) {
122 dest.latency_budget = src.latency_budget;
125 if (dest.user_data != src.user_data) {
127 dest.user_data = src.user_data;
130 if (dest.time_based_filter != src.time_based_filter) {
132 dest.time_based_filter = src.time_based_filter;
135 if (dest.partition != src.partition) {
137 dest.partition = src.partition;
140 if (dest.topic_data != src.topic_data) {
142 dest.topic_data = src.topic_data;
145 if (dest.group_data != src.group_data) {
147 dest.group_data = src.group_data;
170 #ifndef OPENDDS_SAFETY_PROFILE 185 bool sequence_equal(
const T& x,
188 if (x.length() != y.length()) {
192 for (
unsigned int idx = 0; idx != x.length(); ++idx) {
193 if (!(x[idx] == y[idx])) {
204 return sequence_equal(x, y);
210 return sequence_equal(x, y);
244 #ifdef OPENDDS_SECURITY 259 return is_stateless(guid) || is_volatile(guid);
271 using DCPS::TimeDuration;
273 using DCPS::Serializer;
274 using DCPS::Encoding;
275 using DCPS::TopicDetails;
276 using DCPS::TopicDetailsMap;
286 , participant_id_(participant_id)
287 , publication_counter_(0)
288 , subscription_counter_(0)
290 , max_type_lookup_service_reply_period_(0)
291 , type_lookup_service_sequence_number_(0)
293 , use_xtypes_complete_(false)
296 #ifdef OPENDDS_SECURITY
300 #ifdef OPENDDS_SECURITY
306 #ifdef OPENDDS_SECURITY
312 #ifdef OPENDDS_SECURITY
318 #ifdef OPENDDS_SECURITY
332 #ifdef OPENDDS_SECURITY
340 #ifdef OPENDDS_SECURITY
346 #ifdef OPENDDS_SECURITY
352 #ifdef OPENDDS_SECURITY
366 #ifdef OPENDDS_SECURITY
371 , ice_agent_(ICE::Agent::instance())
400 rtps_inst->max_message_size_ = disco.
config()->sedp_max_message_size();
401 rtps_inst->heartbeat_period_ = disco.
config()->sedp_heartbeat_period();
402 rtps_inst->nak_response_delay_ = disco.
config()->sedp_nak_response_delay();
403 rtps_inst->responsive_mode_ = disco.
config()->sedp_responsive_mode();
404 rtps_inst->send_delay_ = disco.
config()->sedp_send_delay();
405 rtps_inst->send_buffer_size_ = disco.
config()->send_buffer_size();
406 rtps_inst->rcv_buffer_size_ = disco.
config()->recv_buffer_size();
407 rtps_inst->receive_preallocated_message_blocks_ = disco.
config()->sedp_receive_preallocated_message_blocks();
408 rtps_inst->receive_preallocated_data_blocks_ = disco.
config()->sedp_receive_preallocated_data_blocks();
412 const u_short mc_port = disco.
pb() + disco.
dg() * domainId + disco.
dx();
416 rtps_inst->multicast_group_address_ = mc_addr;
418 rtps_inst->ttl_ = disco.
ttl();
422 rtps_inst->use_multicast_ =
false;
425 rtps_inst->local_address_ = disco.
config()->sedp_local_address();
426 rtps_inst->advertised_address_ = disco.
config()->sedp_advertised_address();
428 rtps_inst->ipv6_local_address_ = disco.
config()->ipv6_sedp_local_address();
429 rtps_inst->ipv6_advertised_address_ = disco.
config()->ipv6_sedp_advertised_address();
432 if (!disco.
config()->sedp_fragment_reassembly_timeout().is_zero()) {
433 rtps_inst->fragment_reassembly_timeout_ = disco.
config()->sedp_fragment_reassembly_timeout();
438 rtps_inst->rtps_relay_address_ = disco.
config()->sedp_rtps_relay_address();
439 rtps_inst->use_rtps_relay_ = disco.
config()->use_rtps_relay();
440 rtps_inst->rtps_relay_only_ = disco.
config()->rtps_relay_only();
441 rtps_inst->stun_server_address_ = disco.
config()->sedp_stun_server_address();
442 rtps_inst->use_ice_ = disco.
config()->use_ice();
452 static_cast<unsigned long>(disco.
config()->sedp_passive_connect_duration().value().get_msec());
455 rtps_inst->opendds_discovery_guid_ = guid;
470 const bool reliable =
true;
471 const bool durable =
true;
472 const bool nondurable =
false;
474 #ifdef OPENDDS_SECURITY 475 const bool besteffort =
false;
479 #ifdef OPENDDS_SECURITY 489 #ifdef OPENDDS_SECURITY 503 #ifdef OPENDDS_SECURITY 517 #ifdef OPENDDS_SECURITY 553 #ifdef OPENDDS_SECURITY 578 #ifdef OPENDDS_SECURITY 617 writer_props.length(1);
618 writer_props[0].name =
"dds.sec.builtin_endpoint_name";
619 writer_props[0].value =
"BuiltinParticipantVolatileMessageSecureWriter";
621 reader_props.length(1);
622 reader_props[0].name =
"dds.sec.builtin_endpoint_name";
623 reader_props[0].value =
"BuiltinParticipantVolatileMessageSecureReader";
627 ok = acl->get_datawriter_sec_attributes(perm_handle,
"DCPSParticipantVolatileMessageSecure",
628 default_part_qos, default_data_tag_qos, dw_sec_attr, ex);
631 ACE_TEXT(
"Failure calling get_datawriter_sec_attributes for topic 'DCPSParticipantVolatileMessageSecure'. ")
636 h = key_factory->register_local_datawriter(crypto_handle, writer_props, dw_sec_attr, ex);
642 ok = acl->get_datareader_sec_attributes(perm_handle,
"DCPSParticipantVolatileMessageSecure",
643 default_part_qos, default_data_tag_qos, dr_sec_attr, ex);
646 ACE_TEXT(
"Failure calling get_datareader_sec_attributes for topic 'DCPSParticipantVolatileMessageSecure'.")
651 h = key_factory->register_local_datareader(crypto_handle, reader_props, dr_sec_attr, ex);
662 ok = acl->get_datawriter_sec_attributes(perm_handle,
"DCPSParticipantMessageSecure",
663 default_part_qos, default_data_tag_qos, dw_sec_attr, ex);
666 ACE_TEXT(
"Failure calling get_datawriter_sec_attributes for topic 'DCPSParticipantMessageSecure'. ")
671 h = key_factory->register_local_datawriter(crypto_handle, writer_props, dw_sec_attr, ex);
677 ok = acl->get_datareader_sec_attributes(perm_handle,
"DCPSParticipantMessageSecure",
678 default_part_qos, default_data_tag_qos, dr_sec_attr, ex);
681 ACE_TEXT(
"Failure calling get_datareader_sec_attributes for topic 'DCPSParticipantMessageSecure'. ")
686 h = key_factory->register_local_datareader(crypto_handle, reader_props, dr_sec_attr, ex);
697 ok = acl->get_datawriter_sec_attributes(perm_handle,
"DCPSPublicationsSecure",
698 default_part_qos, default_data_tag_qos, dw_sec_attr, ex);
701 ACE_TEXT(
"Failure calling get_datawriter_sec_attributes for topic 'DCPSPublicationsSecure'. ")
706 h = key_factory->register_local_datawriter(crypto_handle, writer_props, dw_sec_attr, ex);
712 ok = acl->get_datareader_sec_attributes(perm_handle,
"DCPSPublicationsSecure",
713 default_part_qos, default_data_tag_qos, dr_sec_attr, ex);
716 ACE_TEXT(
"Failure calling get_datareader_sec_attributes for topic 'DCPSPublicationsSecure'. ")
721 h = key_factory->register_local_datareader(crypto_handle, reader_props, dr_sec_attr, ex);
732 ok = acl->get_datawriter_sec_attributes(perm_handle,
"DCPSSubscriptionsSecure",
733 default_part_qos, default_data_tag_qos, dw_sec_attr, ex);
736 ACE_TEXT(
"Failure calling get_datawriter_sec_attributes for topic 'DCPSSubscriptionsSecure'. ")
741 h = key_factory->register_local_datawriter(crypto_handle, writer_props, dw_sec_attr, ex);
747 ok = acl->get_datareader_sec_attributes(perm_handle,
"DCPSSubscriptionsSecure",
748 default_part_qos, default_data_tag_qos, dr_sec_attr, ex);
751 ACE_TEXT(
"Failure calling get_datareader_sec_attributes for topic 'DCPSSubscriptionsSecure'. ")
756 h = key_factory->register_local_datareader(crypto_handle, reader_props, dr_sec_attr, ex);
767 ok = acl->get_datawriter_sec_attributes(perm_handle,
"DCPSParticipantSecure",
768 default_part_qos, default_data_tag_qos, dw_sec_attr, ex);
771 ACE_TEXT(
"Failure calling get_datawriter_sec_attributes for topic 'DCPSParticipantSecure'. ")
776 h = key_factory->register_local_datawriter(crypto_handle, writer_props, dw_sec_attr, ex);
782 ok = acl->get_datareader_sec_attributes(perm_handle,
"DCPSParticipantSecure",
783 default_part_qos, default_data_tag_qos, dr_sec_attr, ex);
786 ACE_TEXT(
"Failure calling get_datareader_sec_attributes for topic 'DCPSParticipantSecure'. ")
791 h = key_factory->register_local_datareader(crypto_handle, reader_props, dr_sec_attr, ex);
802 ok = acl->get_datawriter_sec_attributes(perm_handle,
"TypeLookupServiceRequestSecure",
803 default_part_qos, default_data_tag_qos, dw_sec_attr, ex);
806 ACE_TEXT(
"Failure calling get_datawriter_sec_attributes for topic 'TypeLookupServiceRequestSecure'. ")
811 h = key_factory->register_local_datawriter(crypto_handle, writer_props, dw_sec_attr, ex);
817 ok = acl->get_datareader_sec_attributes(perm_handle,
"TypeLookupServiceRequestSecure",
818 default_part_qos, default_data_tag_qos, dr_sec_attr, ex);
821 ACE_TEXT(
"Failure calling get_datareader_sec_attributes for topic 'TypeLookupServiceRequestSecure'. ")
826 h = key_factory->register_local_datareader(crypto_handle, reader_props, dr_sec_attr, ex);
837 ok = acl->get_datawriter_sec_attributes(perm_handle,
"TypeLookupServiceReplySecure",
838 default_part_qos, default_data_tag_qos, dw_sec_attr, ex);
841 ACE_TEXT(
"Failure calling get_datawriter_sec_attributes for topic 'TypeLookupServiceReplySecure'. ")
846 h = key_factory->register_local_datawriter(crypto_handle, writer_props, dw_sec_attr, ex);
852 ok = acl->get_datareader_sec_attributes(perm_handle,
"TypeLookupServiceReplySecure",
853 default_part_qos, default_data_tag_qos, dr_sec_attr, ex);
856 ACE_TEXT(
"Failure calling get_datareader_sec_attributes for topic 'TypeLookupServiceReplySecure'. ")
861 h = key_factory->register_local_datareader(crypto_handle, reader_props, dr_sec_attr, ex);
869 ACE_TEXT(
"Failure calling get_participant_sec_attributes. ")
881 #ifdef OPENDDS_SECURITY 906 rtps_inst->opendds_discovery_default_listener_.
reset();
932 return rtps_inst->local_address_;
937 Sedp::ipv6_local_address()
const 941 return rtps_inst->ipv6_local_address_;
950 return rtps_inst->multicast_group_address_;
977 const CORBA::ULong locator_count = mll.length() + ull.length();
984 ser_loc << locator_count;
994 remote_data.length(1);
995 remote_data[0].transport_type =
"rtps_udp";
1011 #ifdef OPENDDS_SECURITY 1025 bool local_tokens_sent)
const 1027 #ifndef OPENDDS_SECURITY 1028 ACE_UNUSED_ARG(participant);
1029 ACE_UNUSED_ARG(local_tokens_sent);
1033 #ifdef OPENDDS_SECURITY 1045 #ifdef OPENDDS_SECURITY
1051 const BuiltinEndpointSet_t remote_available = participant.pdata_.participantProxy.availableBuiltinEndpoints;
1060 participant.builtin_pending_records_.push_back(record);
1067 participant.builtin_pending_records_.push_back(record);
1074 participant.builtin_pending_records_.push_back(record);
1082 participant.builtin_pending_records_.push_back(record);
1084 if ((local_available & BUILTIN_ENDPOINT_TYPE_LOOKUP_REQUEST_DATA_WRITER) &&
1085 (remote_available & BUILTIN_ENDPOINT_TYPE_LOOKUP_REQUEST_DATA_READER)) {
1089 participant.builtin_pending_records_.push_back(record);
1096 participant.builtin_pending_records_.push_back(record);
1098 if ((local_available & BUILTIN_ENDPOINT_TYPE_LOOKUP_REPLY_DATA_WRITER) &&
1099 (remote_available & BUILTIN_ENDPOINT_TYPE_LOOKUP_REPLY_DATA_READER)) {
1103 participant.builtin_pending_records_.push_back(record);
1106 if ((local_available & DISC_BUILTIN_ENDPOINT_PUBLICATION_ANNOUNCER) &&
1107 (remote_available & DISC_BUILTIN_ENDPOINT_PUBLICATION_DETECTOR)) {
1111 participant.builtin_pending_records_.push_back(record);
1113 if ((local_available & DISC_BUILTIN_ENDPOINT_SUBSCRIPTION_ANNOUNCER) &&
1114 (remote_available & DISC_BUILTIN_ENDPOINT_SUBSCRIPTION_DETECTOR)) {
1118 participant.builtin_pending_records_.push_back(record);
1120 if ((local_available & BUILTIN_ENDPOINT_PARTICIPANT_MESSAGE_DATA_WRITER) &&
1121 (remote_available & BUILTIN_ENDPOINT_PARTICIPANT_MESSAGE_DATA_READER)) {
1125 participant.builtin_pending_records_.push_back(record);
1130 #ifdef OPENDDS_SECURITY 1142 participant.builtin_pending_records_.push_back(record);
1145 if ((local_available & BUILTIN_PARTICIPANT_STATELESS_MESSAGE_WRITER) &&
1146 (remote_available & BUILTIN_PARTICIPANT_STATELESS_MESSAGE_READER)) {
1150 participant.builtin_pending_records_.push_back(record);
1158 participant.builtin_pending_records_.push_back(record);
1160 if ((local_available & BUILTIN_PARTICIPANT_VOLATILE_MESSAGE_SECURE_WRITER) &&
1161 (remote_available & BUILTIN_PARTICIPANT_VOLATILE_MESSAGE_SECURE_READER)) {
1165 participant.builtin_pending_records_.push_back(record);
1173 participant.builtin_pending_records_.push_back(record);
1180 participant.builtin_pending_records_.push_back(record);
1187 participant.builtin_pending_records_.push_back(record);
1194 participant.builtin_pending_records_.push_back(record);
1202 participant.builtin_pending_records_.push_back(record);
1204 if ((local_available_extended & TYPE_LOOKUP_SERVICE_REQUEST_WRITER_SECURE) &&
1205 (remote_available_extended & TYPE_LOOKUP_SERVICE_REQUEST_READER_SECURE)) {
1209 participant.builtin_pending_records_.push_back(record);
1216 participant.builtin_pending_records_.push_back(record);
1218 if ((local_available_extended & TYPE_LOOKUP_SERVICE_REPLY_WRITER_SECURE) &&
1219 (remote_available_extended & TYPE_LOOKUP_SERVICE_REPLY_READER_SECURE)) {
1223 participant.builtin_pending_records_.push_back(record);
1226 if ((local_available & BUILTIN_PARTICIPANT_MESSAGE_SECURE_WRITER) &&
1227 (remote_available & BUILTIN_PARTICIPANT_MESSAGE_SECURE_READER)) {
1231 participant.builtin_pending_records_.push_back(record);
1233 if ((local_available & SPDP_BUILTIN_PARTICIPANT_SECURE_WRITER) &&
1234 (remote_available & SPDP_BUILTIN_PARTICIPANT_SECURE_READER)) {
1238 participant.builtin_pending_records_.push_back(record);
1240 if ((local_available & SEDP_BUILTIN_PUBLICATIONS_SECURE_WRITER) &&
1241 (remote_available & SEDP_BUILTIN_PUBLICATIONS_SECURE_READER)) {
1245 participant.builtin_pending_records_.push_back(record);
1247 if ((local_available & SEDP_BUILTIN_SUBSCRIPTIONS_SECURE_WRITER) &&
1248 (remote_available & SEDP_BUILTIN_SUBSCRIPTIONS_SECURE_READER)) {
1252 participant.builtin_pending_records_.push_back(record);
1266 for (DiscoveredParticipant::BuiltinAssociationRecords::iterator pos = participant.
builtin_pending_records_.begin(),
1271 ACE_DEBUG((
LM_INFO,
ACE_TEXT(
"(%P|%t) Sedp::process_association_records_i associating built-ins local %C remote %C pending %B done %B\n"),
1288 ACE_DEBUG((
LM_INFO,
ACE_TEXT(
"(%P|%t) Sedp::process_association_records_i builtin not ready local %C remote %C pending %B done %B\n"),
1296 for (DiscoveredParticipant::WriterAssociationRecords::iterator pos = participant.
writer_pending_records_.begin(),
1307 ACE_DEBUG((
LM_INFO,
ACE_TEXT(
"(%P|%t) Sedp::process_association_records_i writer not ready local %C remote %C pending %B done %B\n"),
1314 for (DiscoveredParticipant::ReaderAssociationRecords::iterator pos = participant.
reader_pending_records_.begin(),
1325 ACE_DEBUG((
LM_INFO,
ACE_TEXT(
"(%P|%t) Sedp::process_association_records_i reader not ready local %C remote %C pending %B done %B\n"),
1333 #ifdef OPENDDS_SECURITY 1336 for (DiscoveredParticipant::BuiltinAssociationRecords::iterator pos = participant.
builtin_pending_records_.begin(),
1352 for (DiscoveredParticipant::BuiltinAssociationRecords::iterator pos = participant.
builtin_pending_records_.begin(),
1357 }
else if (record.
local_id() == local_reader && record.
remote_id() == remote_writer) {
1370 }
else if (record.
local_id() == local_reader && record.
remote_id() == remote_writer) {
1399 if ((local_available & BUILTIN_PARTICIPANT_VOLATILE_MESSAGE_SECURE_WRITER) &&
1400 (remote_available & BUILTIN_PARTICIPANT_VOLATILE_MESSAGE_SECURE_READER)) {
1407 #endif // OPENDDS_SECURITY 1409 #ifdef OPENDDS_SECURITY 1415 if (extended_associated_endpoints & flags) {
1417 extended_associated_endpoints &= ~flags;
1436 if (!key_factory->unregister_datareader(drch, se)) {
1439 ACE_TEXT(
"Failure calling unregister_datareader() (ch %d). Security Exception[%d.%d]: %C\n"),
1450 if (!key_factory->unregister_datawriter(dwch, se)) {
1453 ACE_TEXT(
"Failure calling unregister_datawriter() (ch %d). Security Exception[%d.%d]: %C\n"),
1468 ACE_TEXT(
"Sedp::create_and_send_datareader_crypto_tokens() - ")
1469 ACE_TEXT(
"sending tokens for local reader %C (ch %d) to remote writer %C (ch %d)\n"),
1487 ACE_TEXT(
"Sedp::create_and_send_datawriter_crypto_tokens() - ")
1488 ACE_TEXT(
"sending tokens for local writer %C (ch %d) to remote reader %C (ch %d)\n"),
1523 for (DiscoveredParticipant::BuiltinAssociationRecords::iterator pos = iter->second.builtin_pending_records_.begin(),
1524 limit = iter->second.builtin_pending_records_.end(); pos != limit; ++pos) {
1532 for (DiscoveredParticipant::BuiltinAssociationRecords::iterator pos = iter->second.builtin_associated_records_.begin(),
1533 limit = iter->second.builtin_associated_records_.end(); pos != limit; ++pos) {
1575 #ifdef OPENDDS_SECURITY 1578 static const EntityId_t secure_entities[] = {
1601 typedef Security::HandleRegistry::DatareaderCryptoHandleList DatareaderCryptoHandleList;
1602 typedef Security::HandleRegistry::DatawriterCryptoHandleList DatawriterCryptoHandleList;
1606 for (DatareaderCryptoHandleList::const_iterator pos = drlist.begin(), limit = drlist.end();
1607 pos != limit; ++pos) {
1608 if (!key_factory->unregister_datareader(pos->second, se)) {
1611 ACE_TEXT(
"Failure calling unregister_datareader() (ch %d). Security Exception[%d.%d]: %C\n"),
1618 for (DatawriterCryptoHandleList::const_iterator pos = dwlist.begin(), limit = dwlist.end();
1619 pos != limit; ++pos) {
1620 if (!key_factory->unregister_datawriter(pos->second, se)) {
1623 ACE_TEXT(
"Failure calling unregister_datawriter() (ch %d). Security Exception[%d.%d]: %C\n"),
1645 #ifdef OPENDDS_SECURITY 1722 #ifdef OPENDDS_SECURITY 1794 template<
typename Map>
1796 Map& m,
GUID_t participant,
bool subscription,
OPENDDS_VECTOR(
typename Map::mapped_type)& to_remove_from_bit)
1799 for (
typename Map::iterator i = m.lower_bound(participant);
1800 i != m.end() && 0 == std::memcmp(i->first.guidPrefix,
1803 String topic_name = i->second.get_topic_name();
1804 DCPS::TopicDetailsMap::iterator top_it =
topics_.find(topic_name);
1805 if (top_it !=
topics_.end()) {
1807 top_it->second.remove_discovered_subscription(i->first);
1809 top_it->second.remove_discovered_publication(i->first);
1813 ACE_TEXT(
"(%P|%t) Sedp::remove_entities_belonging_to - ")
1814 ACE_TEXT(
"calling match_endpoints remove\n")));
1818 if (top_it->second.is_dead()) {
1822 to_remove_from_bit.push_back(i->second);
1850 using namespace DCPS;
1859 const GUID_t& rid = *topic_endpoints;
1867 const GUID_t& rid = *topic_endpoints;
1880 #ifdef OPENDDS_SECURITY 1885 ice_agent_->remove_local_agent_info_listener(endpoint, publicationId);
1895 ACE_UNUSED_ARG(pub);
1917 TopicDetailsMap::iterator top_it =
topics_.find(topic_name);
1918 if (top_it !=
topics_.end()) {
1930 #ifdef OPENDDS_SECURITY 1935 ice_agent_->remove_local_agent_info_listener(endpoint, subscriptionId);
1945 ACE_UNUSED_ARG(sub);
1967 TopicDetailsMap::iterator top_it =
topics_.find(topic_name);
1968 if (top_it !=
topics_.end()) {
1991 for (DCPS::RepoIdSet::iterator i = iter->second.matched_endpoints_.begin();
1992 i != iter->second.matched_endpoints_.end(); ++i) {
1997 pl->update_subscription_params(subId, params);
2015 #ifdef OPENDDS_SECURITY 2030 #ifdef OPENDDS_SECURITY 2046 #ifdef OPENDDS_SECURITY
2048 bool have_ice_agent_info,
2064 #ifdef OPENDDS_SECURITY 2088 #ifdef OPENDDS_SECURITY 2094 #ifdef OPENDDS_SECURITY 2124 ACE_TEXT(
"Sedp::process_discovered_writer_data - ")
2125 ACE_TEXT(
"Unable to check remote topic '%C'. SecurityException[%d.%d]: %C\n"),
2131 if (!
get_access_control()->get_topic_sec_attributes(remote_permissions, topic_name.data(), topic_sec_attr, ex))
2135 ACE_TEXT(
"Sedp::process_discovered_writer_data - ")
2136 ACE_TEXT(
"Unable to get security attributes for remote topic '%C'. SecurityException[%d.%d]: %C\n"),
2144 if (security_info != NULL) {
2146 security_info->endpoint_security_attributes;
2148 security_info->plugin_endpoint_security_attributes;
2156 ACE_TEXT(
"Sedp::process_discovered_writer_data - ")
2157 ACE_TEXT(
"Unable to check remote datawriter '%C'. SecurityException[%d.%d]: %C\n"),
2164 ACE_TEXT(
"Sedp::process_discovered_writer_data - ")
2165 ACE_TEXT(
"Unsupported remote participant authentication state for discovered datawriter '%C'. ")
2166 ACE_TEXT(
"SecurityException[%d.%d]: %C\n"),
2176 TopicDetailsMap::iterator top_it =
topics_.find(topic_name);
2177 if (top_it ==
topics_.end()) {
2180 top_it->second.init(topic_name, topic_id);
2197 ACE_TEXT(
"calling match_endpoints new\n")));
2204 if (checkAndAssignQos(iter->second.writer_data_.ddsPublicationData,
2211 topic_name = iter->second.get_topic_name();
2212 TopicDetailsMap::iterator top_it =
topics_.find(topic_name);
2213 if (top_it !=
topics_.end()) {
2216 ACE_TEXT(
"calling match_endpoints update\n")));
2230 if (checkAndAssignLocators(iter->second.writer_data_.writerProxy, wdata.
writerProxy)) {
2231 topic_name = iter->second.get_topic_name();
2232 TopicDetailsMap::const_iterator top_it =
topics_.find(topic_name);
2235 (top_it ==
topics_.end()) ?
RepoIdSet() : top_it->second.local_subscriptions();
2236 for (RepoIdSet::const_iterator i = assoc.begin(); i != assoc.end(); ++i) {
2253 topic_name = iter->second.get_topic_name();
2254 TopicDetailsMap::iterator top_it =
topics_.find(topic_name);
2255 if (top_it !=
topics_.end()) {
2256 top_it->second.remove_discovered_publication(guid);
2259 if (top_it->second.is_dead()) {
2268 ACE_TEXT(
"calling match_endpoints disp/unreg\n")));
2296 #ifdef OPENDDS_SECURITY 2307 #ifdef OPENDDS_SECURITY
2313 #ifdef OPENDDS_SECURITY 2340 #ifdef OPENDDS_SECURITY
2342 bool have_ice_agent_info,
2350 GUID_t participant_id = guid;
2359 #ifdef OPENDDS_SECURITY 2382 #ifdef OPENDDS_SECURITY 2389 #ifdef OPENDDS_SECURITY 2417 ACE_TEXT(
"Sedp::process_discovered_reader_data - ")
2418 ACE_TEXT(
"Unable to check remote topic '%C'. SecurityException[%d.%d]: %C\n"),
2424 if (!
get_access_control()->get_topic_sec_attributes(remote_permissions, topic_name.data(), topic_sec_attr, ex))
2428 ACE_TEXT(
"Sedp::process_discovered_reader_data - ")
2429 ACE_TEXT(
"Unable to get security attributes for remote topic '%C'. SecurityException[%d.%d]: %C\n"),
2437 if (security_info != NULL) {
2439 security_info->endpoint_security_attributes;
2441 security_info->plugin_endpoint_security_attributes;
2444 bool relay_only =
false;
2451 ACE_TEXT(
"Sedp::process_discovered_reader_data - ")
2452 ACE_TEXT(
"Unable to check remote datareader '%C'. SecurityException[%d.%d]: %C\n"),
2458 relay_only_readers_.insert(guid);
2460 relay_only_readers_.erase(guid);
2465 ACE_TEXT(
"Sedp::process_discovered_reader_data - ")
2466 ACE_TEXT(
"Unsupported remote participant authentication state for discovered datareader '%C'. ")
2467 ACE_TEXT(
"SecurityException[%d.%d]: %C\n"),
2477 TopicDetailsMap::iterator top_it =
topics_.find(topic_name);
2478 if (top_it ==
topics_.end()) {
2481 top_it->second.init(topic_name, topic_id);
2498 ACE_TEXT(
"calling match_endpoints new\n")));
2505 if (checkAndAssignQos(iter->second.reader_data_.ddsSubscriptionData,
2512 topic_name = iter->second.get_topic_name();
2513 TopicDetailsMap::iterator top_it =
topics_.find(topic_name);
2514 if (top_it !=
topics_.end()) {
2517 ACE_TEXT(
"calling match_endpoints update\n")));
2531 if (checkAndAssignParams(iter->second.reader_data_.contentFilterProperty,
2534 topic_name = iter->second.get_topic_name();
2535 TopicDetailsMap::iterator top_it =
topics_.find(topic_name);
2538 (top_it ==
topics_.end()) ?
RepoIdSet() : top_it->second.local_publications();
2539 for (RepoIdSet::const_iterator i = assoc.begin(); i != assoc.end(); ++i) {
2550 if (checkAndAssignLocators(iter->second.reader_data_.readerProxy, rdata.
readerProxy)) {
2551 topic_name = iter->second.get_topic_name();
2552 TopicDetailsMap::const_iterator top_it =
topics_.find(topic_name);
2555 (top_it ==
topics_.end()) ?
RepoIdSet() : top_it->second.local_publications();
2556 for (RepoIdSet::const_iterator i = assoc.begin(); i != assoc.end(); ++i) {
2572 for (
CORBA::ULong writerIndex = 0; writerIndex < len; ++writerIndex) {
2579 lp->second.remote_expectant_opendds_associations_.insert(guid);
2589 topic_name = iter->second.get_topic_name();
2590 TopicDetailsMap::iterator top_it =
topics_.find(topic_name);
2591 if (top_it !=
topics_.end()) {
2592 top_it->second.remove_discovered_subscription(guid);
2595 ACE_TEXT(
"calling match_endpoints disp/unreg\n")));
2602 if (top_it->second.is_dead()) {
2631 #ifdef OPENDDS_SECURITY 2642 #ifdef OPENDDS_SECURITY
2648 #ifdef OPENDDS_SECURITY 2655 GUID_t guid_participant = guid;
2680 ACE_TEXT(
"(%P|%t) Sedp::notify_liveliness: Notifying Liveliness, %C\n"),
2686 sub_pos != sub_limit; ++sub_pos) {
2687 const DCPS::RepoIdSet::const_iterator pos =
2688 sub_pos->second.matched_endpoints_.lower_bound(prefix);
2689 if (pos != sub_pos->second.matched_endpoints_.end() &&
2694 sl->signal_liveliness(guid_participant);
2697 sl->signal_liveliness(guid_participant);
2727 #ifdef OPENDDS_SECURITY 2768 if (dst_participant !=
GUID_UNKNOWN && dst_participant != this_participant) {
2772 if (dst_endpoint !=
GUID_UNKNOWN && dst_endpoint != this_endpoint) {
2792 ACE_TEXT(
"ignoring %C -> %C local %C\n"),
2803 ACE_TEXT(
"no data %C -> %C local %C\n"),
2811 if (dst_participant !=
GUID_UNKNOWN && dst_participant != this_participant) {
2814 ACE_TEXT(
"not for us %C -> %C local %C\n"),
2833 unsecure_topic_name,
2870 ACE_TEXT(
"Unknown message class id\n")));
2890 ACE_DEBUG((
LM_DEBUG,
"Sedp::received_volatile_message_secure handle_participant_crypto_tokens failed\n"));
2896 ACE_DEBUG((
LM_DEBUG,
"Sedp::received_volatile_message_secure handle_datawriter_crypto_tokens failed\n"));
2902 ACE_DEBUG((
LM_DEBUG,
"Sedp::received_volatile_message_secure handle_datareader_crypto_tokens failed\n"));
2914 GUID_t participant = endpoint;
2925 ACE_TEXT(
"(%P|%t) DEBUG: Sedp::association_complete_i local %C remote %C\n"),
2935 std::pair<DCPS::RepoIdSet::iterator, bool> result =
2936 sub->second.remote_expectant_opendds_associations_.insert(remoteId);
2938 if (result.second) {
2945 #ifdef OPENDDS_SECURITY 2978 const DCPS::GUID_t& remote_id)
2982 #ifdef OPENDDS_SECURITY
3000 #ifdef OPENDDS_SECURITY 3021 ACE_TEXT(
"Failure calling get_topic_sec_attributes(). Security Exception[%d.%d]: %C\n"),
3030 #ifdef OPENDDS_SECURITY 3065 const DCPS::GUID_t& reader,
3066 bool is_discovery_protected,
3067 bool send_get_types,
3072 #ifdef OPENDDS_SECURITY 3078 ACE_UNUSED_ARG(is_discovery_protected);
3081 return writer->send_type_lookup_request(
3082 type_ids, remote_reader, seq_num,
3087 #ifdef OPENDDS_SECURITY 3150 "Unexpected entityKind: %u\n", rv.
entityKind));
3159 return make_id(remote_part, counterpart_entity_id());
3164 return associated_with(make_counterpart_guid(remote_part));
3168 const DCPS::GUID_t& remote_part)
const 3170 const GUID_t counterpart = make_counterpart_guid(remote_part);
3171 return associated_with(counterpart) || !pending_association_with(counterpart);
3176 return sedp_.spdp_.bit_subscriber_;
3181 :
Endpoint(pub_id, sedp), seq_(seq_init)
3199 ACE_TEXT(
"(%P|%t) Sedp::Writer::transport_assoc_done: ")
3200 ACE_TEXT(
"ERROR: transport layer failed to associate %C\n"),
3271 "counterpart isn't associated, deferring\n"));
3274 std::make_pair(reader, PerReaderDeferredSamples())).first;
3275 samples_for_reader->second.insert(std::make_pair(sequence, el));
3291 for (PerReaderDeferredSamples::iterator i = samples_for_reader->second.begin();
3292 i != samples_for_reader->second.end(); ++i) {
3328 ACE_TEXT(
"(%P|%t) ERROR: Sedp::Writer::write_parameter_list")
3329 ACE_TEXT(
" - Failed to allocate message block message\n")));
3336 serializer << encap && serializer << plist) {
3365 if (encap.from_encoding(sedp_encoding,
DCPS::FINAL) &&
3366 serializer << encap && serializer << pmd) {
3375 #ifdef OPENDDS_SECURITY 3394 if (encap.from_encoding(sedp_encoding,
DCPS::FINAL) &&
3395 serializer << encap && serializer << msg) {
3422 if (encap.from_encoding(sedp_encoding,
DCPS::FINAL) &&
3423 serializer << encap && serializer << msg) {
3440 ACE_TEXT(
"(%P|%t) ERROR: Sedp::DiscoveryWriter::write_dcps_participant_secure - ")
3441 ACE_TEXT(
"Failed to convert SPDPdiscoveredParticipantData ")
3447 ICE::AgentInfoMap ai_map;
3449 if (sedp_endpoint) {
3453 if (spdp_endpoint) {
3458 ACE_TEXT(
"Sedp::DiscoveryWriter::write_dcps_participant_secure - ")
3459 ACE_TEXT(
"failed to convert from ICE::AgentInfo ")
3491 ACE_TEXT(
"(%P|%t) ERROR: Sedp::Writer::write_unregister_dispose")
3492 ACE_TEXT(
" - Failed to allocate message block message\n")));
3499 serializer << encap && serializer << plist) {
3506 ACE_TEXT(
"(%P|%t) ERROR: Sedp::Writer::write_unregister_dispose")
3507 ACE_TEXT(
" - Failed to serialize RTPS control message\n")));
3520 reinterpret_cast<const char*>(&reader),
3529 ACE_TEXT(
"(%P|%t) ERROR: Sedp::Writer::end_historic_samples")
3530 ACE_TEXT(
" - Failed to allocate message block message\n")));
3542 reinterpret_cast<const char*>(&reader),
3551 ACE_TEXT(
"(%P|%t) ERROR: Sedp::Writer::request_ack")
3552 ACE_TEXT(
" - Failed to allocate message block message\n")));
3573 bool historic_sample,
3629 const DCPS::GUID_t& reader,
3634 ACE_DEBUG((
LM_DEBUG,
"(%P|%t) Sedp::TypeLookupRequestWriter::send_type_lookup_request: " 3645 "Sedp::TypeLookupRequestWriter::send_type_lookup_request: tl_kind is %u\n",
3657 XTypes::TypeLookup_getTypes_In types;
3658 types.type_ids = type_ids;
3661 XTypes::TypeLookup_getTypeDependencies_In typeDependencies;
3662 typeDependencies.type_ids = type_ids;
3664 typeDependencies.continuation_point);
3680 bool success =
true;
3681 if (encap.from_encoding(serializer.encoding(),
DCPS::FINAL) &&
3682 serializer << encap && serializer << type_lookup_request) {
3688 "Sedp::TypeLookupRequestWriter::send_type_lookup_request: serialization failed\n"));
3698 const DCPS::GUID_t& reader)
3702 ACE_DEBUG((
LM_DEBUG,
"(%P|%t) Sedp::TypeLookupReplyWriter::send_type_lookup_reply: " 3721 bool success =
true;
3722 if (encap.from_encoding(serializer.encoding(),
DCPS::FINAL) &&
3723 serializer << encap && serializer << type_lookup_reply) {
3729 "Sedp::TypeLookupReplyWriter::send_type_lookup_reply: serialization failed\n"));
3741 if (!(ser >> type_lookup_request)) {
3744 ACE_TEXT(
"failed to deserialize type lookup request\n")));
3751 ACE_DEBUG((
LM_DEBUG,
"(%P|%t) Sedp::TypeLookupReplyWriter::process_type_lookup_request: " 3752 "from %C seq: %q\n",
3761 switch (type_lookup_request.
data._d()) {
3763 return process_get_types_request(type_lookup_request, type_lookup_reply);
3765 return process_get_dependencies_request(type_lookup_request, type_lookup_reply);
3775 XTypes::TypeLookup_getTypes_Out result;
3778 if (result.types.length() > 0) {
3779 result.complete_to_minimal.length(0);
3782 typeResult.
result(result);
3784 type_lookup_reply._cxx_return.getType(typeResult);
3790 ACE_ERROR((
LM_ERROR,
"(%P|%t) ERROR: Sedp::TypeLookupRequestReader::process_get_types_request: " 3791 "No types received\n"));
3800 cont_point.length(0);
3808 XTypes::TypeLookup_getTypeDependencies_Out result;
3810 result.dependent_typeids);
3811 gen_continuation_point(result.continuation_point);
3814 typeDependencies.
result(result);
3815 reply._cxx_return.getTypeDependencies(typeDependencies);
3826 const DependenciesMap::const_iterator it = dependencies_.find(part_guid);
3827 if (it == dependencies_.end() || it->second.find(remote_ti) == it->second.end()) {
3828 cont_point.length(0);
3830 cont_point = it->second.find(remote_ti)->second.first;
3838 const DependenciesMap::iterator it = dependencies_.find(part_guid);
3839 if (it != dependencies_.end() && it->second.find(type_id) != it->second.end()) {
3840 it->second.erase(type_id);
3843 if (it != dependencies_.end() && it->second.empty()) {
3844 dependencies_.erase(it);
3852 if (!(ser >> type_lookup_reply)) {
3855 ACE_TEXT(
"(%P|%t) ERROR: Sedp::TypeLookupReplyReader::process_type_lookup_reply - ")
3856 ACE_TEXT(
"failed to deserialize type lookup reply\n")));
3864 ACE_DEBUG((
LM_DEBUG,
"(%P|%t) Sedp::TypeLookupReplyReader::process_type_lookup_reply - " 3877 ACE_TEXT(
"(%P|%t) WARNING: Sedp::TypeLookupReplyReader::process_type_lookup_reply - ")
3878 ACE_TEXT(
"could not find request corresponding to the reply from %C seq %q\n"),
3884 const ACE_CDR::Long kind = type_lookup_reply._cxx_return._d();
3887 success = process_get_types_reply(type_lookup_reply);
3890 success = process_get_dependencies_reply(sample, type_lookup_reply, seq_num, is_discovery_protected);
3895 "Sedp::TypeLookupReplyReader::process_type_lookup_reply - " 3896 "reply kind is %d\n", kind));
3904 "(%P|%t) Sedp::TypeLookupReplyReader::process_type_lookup_reply - " 3905 "got the reply for the final request in the sequence\n"));
3918 if (seqnum_minimal == key_seq_num || seqnum_complete == key_seq_num) {
3919 if (seqnum_minimal == key_seq_num) {
3920 it->second.got_minimal =
true;
3922 it->second.got_complete =
true;
3925 if (it->first.type_obj_req_cond) {
3929 }
else if (it->second.got_minimal && it->second.got_complete) {
3931 const GUID_t writer = it->first.writer();
3932 const GUID_t reader = it->first.reader();
3943 ACE_ERROR((
LM_WARNING,
"(%P|%t) WARNING: Sedp::TypeLookupReplyReader::process_type_lookup_reply: " 3944 "RPC sequence number %q: No data found in matching data buffer\n",
3957 ACE_DEBUG((
LM_DEBUG,
"(%P|%t) Sedp::TypeLookupReplyReader::process_get_types_reply\n"));
3962 ACE_DEBUG((
LM_DEBUG,
"(%P|%t) Sedp::TypeLookupReplyReader::process_get_types_reply - " 3963 "received reply with return code %C\n",
3969 if (reply._cxx_return.getType().result().types.length() == 0) {
3971 ACE_ERROR((
LM_ERROR,
"(%P|%t) ERROR: Sedp::TypeLookupReplyReader::process_get_types_reply - " 3972 "received reply with no data\n"));
3979 if (reply._cxx_return.getType().result().complete_to_minimal.length() != 0) {
3981 ACE_DEBUG((
LM_DEBUG,
"(%P|%t) Sedp::TypeLookupReplyReader::process_get_types_reply - " 3982 "received reply with non-empty complete to minimal map\n"));
3995 ACE_DEBUG((
LM_DEBUG,
"(%P|%t) Sedp::TypeLookupReplyReader::process_get_dependencies_reply - " 3999 if (reply._cxx_return.getTypeDependencies().result().continuation_point.length() != 0 &&
4000 reply._cxx_return.getTypeDependencies().result().dependent_typeids.length() == 0) {
4003 "Sedp::TypeLookupReplyReader::process_get_dependencies_reply - " 4004 "received reply with no data\n"));
4009 const XTypes::TypeLookup_getTypeDependencies_Out& data = reply._cxx_return.getTypeDependencies().result();
4015 for (
unsigned i = 0; i < data.dependent_typeids.length(); ++i) {
4023 dependencies_[part_guid][remote_ti].first = data.continuation_point;
4030 if (data.continuation_point.length() == 0) {
4034 ACE_TEXT(
"failed to send getTypes request\n")));
4039 type_ids.
append(remote_ti);
4042 ACE_TEXT(
"failed to send getTypeDependencies request\n")));
4054 #ifdef OPENDDS_SECURITY 4061 ACE_UNUSED_ARG(secure);
4098 if (!(ser >> guid))
return false;
4132 const bool is_mutable =
4134 #ifdef OPENDDS_SECURITY 4138 #ifdef OPENDDS_SECURITY 4143 const bool is_final =
4145 #ifdef OPENDDS_SECURITY
4152 #ifdef OPENDDS_SECURITY 4157 if (is_mutable == is_final) {
4160 "entity id extensibility error over %C: both is_final and is_mutable are %d\n",
4161 to_string(entity_id).c_str(), is_mutable));
4173 if (!(ser >> encap)) {
4175 ACE_TEXT(
"failed to deserialize encapsulation header\n")));
4178 if (!encap.to_encoding(encoding, extensibility)) {
4181 ser.encoding(encoding);
4183 data_received_i(sample, entity_id, ser, extensibility);
4203 if (!(ser >> data)) {
4205 ACE_TEXT(
"failed to deserialize data\n")));
4210 #ifdef OPENDDS_SECURITY 4213 if (!(ser >> data)) {
4215 ACE_TEXT(
"failed to deserialize data\n")));
4229 #ifdef OPENDDS_SECURITY 4235 if (!(ser >> data)) {
4237 ACE_TEXT(
"failed to deserialize data\n")));
4243 if (!(ser >> data)) {
4245 ACE_TEXT(
"failed to deserialize data\n")));
4251 ACE_UNUSED_ARG(sample);
4252 ACE_UNUSED_ARG(entity_id);
4253 ACE_UNUSED_ARG(ser);
4269 ACE_TEXT(
"failed to deserialize data\n")));
4276 ACE_TEXT(
"(%P|%t) ERROR: Sedp::DiscoveryReader::data_received_i - ")
4277 ACE_TEXT(
"failed to convert from ParameterList ")
4278 ACE_TEXT(
"to DiscoveredWriterData\n")));
4281 #ifdef OPENDDS_SECURITY 4283 ICE::AgentInfoMap ai_map;
4286 ACE_TEXT(
"(%P|%t) ERROR: Sedp::DiscoveryReader::data_received_i - ")
4287 ACE_TEXT(
"failed to convert from ParameterList ")
4291 ICE::AgentInfoMap::const_iterator pos = ai_map.find(
"DATA");
4292 if (pos != ai_map.end()) {
4307 #ifdef OPENDDS_SECURITY 4312 ACE_TEXT(
"failed to deserialize data\n")));
4320 ACE_TEXT(
"(%P|%t) ERROR: Sedp::DiscoveryReader::data_received_i - ")
4321 ACE_TEXT(
"failed to convert from ParameterList ")
4322 ACE_TEXT(
"to DiscoveredPublication_SecurityWrapper\n")));
4327 ICE::AgentInfoMap ai_map;
4330 ACE_TEXT(
"(%P|%t) ERROR: Sedp::DiscoveryReader::data_received_i - ")
4331 ACE_TEXT(
"failed to convert from ParameterList ")
4335 ICE::AgentInfoMap::const_iterator pos = ai_map.find(
"DATA");
4336 if (pos != ai_map.end()) {
4354 ACE_TEXT(
"failed to deserialize data\n")));
4361 ACE_TEXT(
"(%P|%t) ERROR Sedp::DiscoveryReader::data_received_i - ")
4362 ACE_TEXT(
"failed to convert from ParameterList ")
4363 ACE_TEXT(
"to DiscoveredReaderData\n")));
4366 #ifdef OPENDDS_SECURITY 4368 ICE::AgentInfoMap ai_map;
4371 ACE_TEXT(
"(%P|%t) ERROR: Sedp::DiscoveryReader::data_received_i - ")
4372 ACE_TEXT(
"failed to convert from ParameterList ")
4376 ICE::AgentInfoMap::const_iterator pos = ai_map.find(
"DATA");
4377 if (pos != ai_map.end()) {
4395 #ifdef OPENDDS_SECURITY 4400 ACE_TEXT(
"failed to deserialize data\n")));
4407 ACE_TEXT(
"(%P|%t) ERROR Sedp::DiscoveryReader::data_received_i - ")
4408 ACE_TEXT(
"failed to convert from ParameterList ")
4409 ACE_TEXT(
"to DiscoveredSubscription_SecurityWrapper\n")));
4414 ICE::AgentInfoMap ai_map;
4417 ACE_TEXT(
"(%P|%t) ERROR: Sedp::DiscoveryReader::data_received_i - ")
4418 ACE_TEXT(
"failed to convert from ParameterList ")
4422 ICE::AgentInfoMap::const_iterator pos = ai_map.find(
"DATA");
4423 if (pos != ai_map.end()) {
4428 if ((rdata_secure.
data).readerProxy.expectsInlineQos) {
4446 ACE_TEXT(
"failed to deserialize data\n")));
4456 ACE_TEXT(
"(%P|%t) ERROR: Sedp::DiscoveryReader::data_received_i - ")
4457 ACE_TEXT(
"failed to convert from ParameterList ")
4458 ACE_TEXT(
"to Security::SPDPdiscoveredParticipantData\n")));
4476 ACE_DEBUG((
LM_DEBUG,
"(%P|%t) Sedp::TypeLookupRequestReader::data_received_i: from %C\n",
4481 if (!process_type_lookup_request(ser, type_lookup_reply)) {
4483 ACE_TEXT(
"failed to take type lookup request\n")));
4487 #ifdef OPENDDS_SECURITY 4493 ACE_TEXT(
"failed to send secure type lookup reply\n")));
4503 ACE_TEXT(
"failed to send type lookup reply\n")));
4507 #ifdef OPENDDS_SECURITY 4510 ACE_UNUSED_ARG(entity_id);
4521 ACE_DEBUG((
LM_DEBUG,
"(%P|%t) Sedp::TypeLookupReplyReader::data_received_i: from %C\n",
4525 #ifdef OPENDDS_SECURITY 4527 if (!process_type_lookup_reply(sample, ser,
true)) {
4530 ACE_TEXT(
"failed to process secure type lookup reply\n")));
4536 if (!process_type_lookup_reply(sample, ser,
false)) {
4539 ACE_TEXT(
"failed to process type lookup reply\n")));
4543 #ifdef OPENDDS_SECURITY 4546 ACE_UNUSED_ARG(remote_id);
4553 const GUID_t& publication_id,
4588 const GUID_t& subscription_id,
4631 for (DCPS::RepoIdSet::const_iterator writer =
4644 #ifdef OPENDDS_SECURITY 4652 #ifdef OPENDDS_SECURITY 4655 if (pub->second.security_attribs_.base.is_discovery_protected) {
4664 #ifdef OPENDDS_SECURITY 4665 if (!pub->second.security_attribs_.base.is_discovery_protected) {
4680 #ifdef OPENDDS_SECURITY 4688 #ifdef OPENDDS_SECURITY 4700 #ifdef OPENDDS_SECURITY 4701 if (!(
is_security_enabled() && sub->second.security_attribs_.base.is_discovery_protected)) {
4734 #ifdef OPENDDS_SECURITY 4790 DCPS::GUID_t remote_reader(part);
4811 #ifdef OPENDDS_SECURITY 4823 ACE_UNUSED_ARG(rid);
4824 ACE_UNUSED_ARG(pub);
4837 #ifdef OPENDDS_SECURITY 4846 #ifdef OPENDDS_SECURITY 4873 ACE_TEXT(
"(%P|%t) ERROR: Sedp::write_publication_data_unsecure - ")
4874 ACE_TEXT(
"Failed to convert DiscoveredWriterData ")
4878 #ifdef OPENDDS_SECURITY 4880 ICE::AgentInfoMap ai_map;
4884 ACE_TEXT(
"(%P|%t) ERROR: Sedp::write_publication_data_unsecure - ")
4885 ACE_TEXT(
"Failed to convert ICE Agent info ")
4897 ACE_TEXT(
"not currently associated, dropping msg.\n")));
4902 #ifdef OPENDDS_SECURITY 4927 ACE_TEXT(
"(%P|%t) ERROR: Sedp::write_publication_data_secure - ")
4928 ACE_TEXT(
"Failed to convert DiscoveredWriterData ")
4933 ICE::AgentInfoMap ai_map;
4937 ACE_TEXT(
"(%P|%t) ERROR: Sedp::write_publication_data_secure - ")
4938 ACE_TEXT(
"Failed to convert ICE Agent info ")
4944 GUID_t effective_reader = reader;
4951 ACE_TEXT(
"not currently associated, dropping msg.\n")));
4963 #ifdef OPENDDS_SECURITY 4975 ACE_UNUSED_ARG(rid);
4976 ACE_UNUSED_ARG(sub);
4989 #ifdef OPENDDS_SECURITY 4998 #ifdef OPENDDS_SECURITY 5025 ACE_TEXT(
"(%P|%t) ERROR: Sedp::write_subscription_data_unsecure - ")
5026 ACE_TEXT(
"Failed to convert DiscoveredReaderData ")
5031 #ifdef OPENDDS_SECURITY 5033 ICE::AgentInfoMap ai_map;
5037 ACE_TEXT(
"(%P|%t) ERROR: Sedp::write_subscription_data_unsecure - ")
5038 ACE_TEXT(
"Failed to convert ICE Agent info ")
5049 ACE_TEXT(
"not currently associated, dropping msg.\n")));
5054 #ifdef OPENDDS_SECURITY 5079 ACE_TEXT(
"(%P|%t) ERROR: Sedp::write_subscription_data_secure - ")
5080 ACE_TEXT(
"Failed to convert DiscoveredReaderData ")
5085 ICE::AgentInfoMap ai_map;
5089 ACE_TEXT(
"(%P|%t) ERROR: Sedp::write_subscription_data_secure - ")
5090 ACE_TEXT(
"Failed to convert ICE Agent info ")
5096 GUID_t effective_reader = reader;
5103 ACE_TEXT(
"not currently associated, dropping msg.\n")));
5128 ACE_TEXT(
"not currently associated, dropping msg.\n")));
5133 #ifdef OPENDDS_SECURITY 5152 ACE_TEXT(
"not currently associated, dropping msg.\n")));
5163 if (locators[i].transport_type.in() == rtps_udp) {
5181 bool participantExpectsInlineQos =
false;
5182 GUID_t remote_participant = reader;
5184 const bool participant_found =
5186 participantExpectsInlineQos);
5187 if (!rTls.length()) {
5188 if (!participant_found) {
5190 }
else if (locs.length()) {
5198 const bool readerExpectsInlineQos =
5199 dsi->second.reader_data_.readerProxy.expectsInlineQos;
5201 || readerExpectsInlineQos);
5211 ACE_TEXT(
"remote reader found with no locators ")
5212 ACE_TEXT(
"and no default locators\n")));
5223 bool participantExpectsInlineQos =
false;
5224 GUID_t remote_participant = writer;
5226 const bool participant_found =
5228 participantExpectsInlineQos);
5229 if (!wTls.length()) {
5230 if (!participant_found) {
5232 }
else if (locs.length()) {
5250 ACE_TEXT(
"remote writer found with no locators ")
5251 ACE_TEXT(
"and no default locators\n")));
5256 #ifdef OPENDDS_SECURITY 5276 result = key_factory->register_matched_remote_datawriter(drch, info.first, info.second, se);
5280 ACE_TEXT(
"Failure calling register_matched_remote_datawriter(). Security Exception[%d.%d]: %C\n"),
5285 ACE_TEXT(
"Unable to lookup remote participant crypto info.\n")));
5310 result = key_factory->register_matched_remote_datareader(dwch, info.first, info.second, relay_only, se);
5314 ACE_TEXT(
"Failure calling register_matched_remote_datareader(). Security Exception[%d.%d]: %C\n"),
5319 ACE_TEXT(
"Unable to lookup remote participant crypto info.\n")));
5332 if (!key_exchange->create_local_datareader_crypto_tokens(drcts, drch, dwch, se)) {
5334 ACE_TEXT(
"Sedp::create_datareader_crypto_tokens() - ")
5335 ACE_TEXT(
"Unable to create local datareader crypto tokens with crypto key exchange plugin. ")
5342 const GUID_t& remote_writer,
5345 if (drcts.length() != 0) {
5347 const DCPS::GUID_t local_volatile_writer =
make_id(
5349 const DCPS::GUID_t remote_volatile_reader =
make_id(
5363 ACE_TEXT(
"Unable to write volatile message.\n")));
5376 if (!key_exchange->create_local_datawriter_crypto_tokens(dwcts, dwch, drch, se)) {
5378 ACE_TEXT(
"Sedp::create_datawriter_crypto_tokens() - ")
5379 ACE_TEXT(
"Unable to create local datawriter crypto tokens with crypto key exchange plugin. ")
5386 const GUID_t& remote_reader,
5389 if (dwcts.length() != 0) {
5391 const DCPS::GUID_t local_volatile_writer =
make_id(
5393 const DCPS::GUID_t remote_volatile_reader =
make_id(
5407 ACE_TEXT(
"Unable to write volatile message.\n")));
5416 ACE_TEXT(
"(%P|%t) Sedp::handle_datawriter_crypto_tokens() %C\n"),
5436 ACE_TEXT(
"(%P|%t) Sedp::handle_datawriter_crypto_tokens() - ")
5437 ACE_TEXT(
"received tokens for unknown remote writer %C Caching.\n"),
5448 ACE_TEXT(
"(%P|%t) Sedp::handle_datawriter_crypto_tokens() - ")
5449 ACE_TEXT(
"received tokens for unknown local reader. Ignoring.\n")));
5456 ACE_TEXT(
"(%P|%t) Sedp::handle_datawriter_crypto_tokens() from %C drch %d dwch %d count %d\n"),
5460 if (!key_exchange->set_remote_datawriter_crypto_tokens(drch, dwch, dwcts, se)) {
5462 ACE_TEXT(
"Unable to set remote datawriter crypto tokens with crypto key exchange plugin. ")
5479 ACE_TEXT(
"(%P|%t) Sedp::handle_datareader_crypto_tokens() %C\n"),
5499 ACE_TEXT(
"(%P|%t) Sedp::handle_datareader_crypto_tokens() - ")
5500 ACE_TEXT(
"received tokens for unknown remote reader %C Caching.\n"),
5511 ACE_TEXT(
"(%P|%t) Sedp::handle_datareader_crypto_tokens() - ")
5512 ACE_TEXT(
"received tokens for unknown local writer. Ignoring.\n")));
5519 ACE_TEXT(
"(%P|%t) Sedp::handle_datareader_crypto_tokens() from %C dwch %d drch %d count %d\n"),
5523 if (!key_exchange->set_remote_datareader_crypto_tokens(dwch, drch, drcts, se)) {
5525 ACE_TEXT(
"Unable to set remote datareader crypto tokens with crypto key exchange plugin. ")
5548 ACE_TEXT(
"Sedp::resend_user_crypto_tokens(%C)\n"),
5559 reader_pos != reader_limit; ++reader_pos) {
5568 for (DCPS::RepoIdSet::const_iterator writer_pos = reader_pos->second.matched_endpoints_.begin(),
5569 writer_limit = reader_pos->second.matched_endpoints_.end();
5570 writer_pos != writer_limit; ++writer_pos) {
5589 writer_pos != writer_limit; ++writer_pos) {
5598 for (DCPS::RepoIdSet::const_iterator reader_pos = writer_pos->second.matched_endpoints_.begin(),
5599 reader_limit = writer_pos->second.matched_endpoints_.end();
5600 reader_pos != reader_limit; ++reader_pos) {
5618 #ifdef OPENDDS_SECURITY 5627 ACE_UNUSED_ARG(local_guid);
5628 ACE_UNUSED_ARG(lpub);
5629 ACE_UNUSED_ARG(remote_guid);
5630 ACE_UNUSED_ARG(dsub);
5636 const DCPS::GUID_t& remote_guid) {
5637 #ifdef OPENDDS_SECURITY 5642 ice_agent_->stop_ice(endpoint, local_guid, remote_guid);
5646 ACE_UNUSED_ARG(local_guid);
5647 ACE_UNUSED_ARG(lpub);
5648 ACE_UNUSED_ARG(remote_guid);
5655 #ifdef OPENDDS_SECURITY 5664 ACE_UNUSED_ARG(local_guid);
5665 ACE_UNUSED_ARG(lsub);
5666 ACE_UNUSED_ARG(remote_guid);
5667 ACE_UNUSED_ARG(dpub);
5673 const DCPS::GUID_t& remote_guid) {
5674 #ifdef OPENDDS_SECURITY 5679 ice_agent_->stop_ice(endpoint, local_guid, remote_guid);
5683 ACE_UNUSED_ARG(local_guid);
5684 ACE_UNUSED_ARG(lsub);
5685 ACE_UNUSED_ARG(remote_guid);
5689 #ifdef OPENDDS_SECURITY 5696 if (pos != sedp.local_publications_.end()) {
5697 pos->second.have_ice_agent_info =
true;
5698 pos->second.ice_agent_info = a_agent_info;
5699 sedp.write_publication_data(a_local_guid, pos->second);
5708 if (pos != sedp.local_publications_.end()) {
5709 pos->second.have_ice_agent_info =
false;
5710 sedp.write_publication_data(a_local_guid, pos->second);
5720 if (pos != sedp.local_subscriptions_.end()) {
5721 pos->second.have_ice_agent_info =
true;
5722 pos->second.ice_agent_info = a_agent_info;
5723 sedp.write_subscription_data(a_local_guid, pos->second);
5732 if (pos != sedp.local_subscriptions_.end()) {
5733 pos->second.have_ice_agent_info =
false;
5734 sedp.write_subscription_data(a_local_guid, pos->second);
5741 #ifdef OPENDDS_SECURITY 5754 if (dsi->second.have_ice_agent_info_) {
5755 ice_agent_->start_ice(endpoint, guid, dsi->first, dsi->second.ice_agent_info_);
5761 ACE_UNUSED_ARG(guid);
5762 ACE_UNUSED_ARG(lpub);
5768 #ifdef OPENDDS_SECURITY 5781 if (dpi->second.have_ice_agent_info_) {
5782 ice_agent_->start_ice(endpoint, guid, dpi->first, dpi->second.ice_agent_info_);
5788 ACE_UNUSED_ARG(guid);
5789 ACE_UNUSED_ARG(lsub);
5795 #ifdef OPENDDS_SECURITY 5804 lsi->second.matched_endpoints_.count(guid)) {
5815 ACE_UNUSED_ARG(guid);
5816 ACE_UNUSED_ARG(dpub);
5822 #ifdef OPENDDS_SECURITY 5833 lpi->second.matched_endpoints_.count(guid)) {
5845 ACE_UNUSED_ARG(guid);
5846 ACE_UNUSED_ARG(dsub);
5853 #ifdef OPENDDS_SECURITY 5860 lsi->second.matched_endpoints_.count(guid)) {
5865 ice_agent_->stop_ice(endpoint, lsi->first, guid);
5872 ACE_UNUSED_ARG(guid);
5873 ACE_UNUSED_ARG(dpub);
5880 #ifdef OPENDDS_SECURITY 5887 lpi->second.matched_endpoints_.count(guid)) {
5892 ice_agent_->stop_ice(endpoint, lpi->first, guid);
5899 ACE_UNUSED_ARG(guid);
5900 ACE_UNUSED_ARG(dsub);
5921 #ifdef OPENDDS_SECURITY 5963 rtps_inst->rtps_relay_address_ = address;
5965 rtps_inst->rtps_relay_address_change();
5973 rtps_inst->stun_server_address_ = address;
5985 return locatorsChanged(x, y);
5997 const String topic_name = iter->second.get_topic_name();
6015 const String topic_name = iter->second.get_topic_name();
6032 ignored_topics_.insert(iter->second);
6037 for (RepoIdSet::const_iterator ep = ids.begin(); ep!= ids.end(); ++ep) {
6046 for (RepoIdSet::const_iterator ep = ids.begin(); ep!= ids.end(); ++ep) {
6061 GUID_t& topicId,
const char* topicName,
6066 DCPS::TopicDetailsMap::iterator iter =
topics_.find(topicName);
6068 if (iter->second.local_is_set() && iter->second.local_data_type_name() != dataTypeName) {
6071 topicId = iter->second.topic_id();
6072 iter->second.set_local(dataTypeName, qos, hasDcpsKey, topic_callbacks);
6078 td.
init(topicName, topicId);
6080 td.
set_local(dataTypeName, qos, hasDcpsKey, topic_callbacks);
6086 const char* topicName,
6088 DDS::TopicQos_out qos,
6092 DCPS::TopicDetailsMap::const_iterator iter =
topics_.find(topicName);
6108 TopicNameMap::iterator name_iter =
topic_names_.find(topicId);
6143 #ifdef OPENDDS_SECURITY 6149 if (!
get_access_control()->get_topic_sec_attributes(permh, topic_name.data(), topic_sec_attr, ex)) {
6152 ACE_TEXT(
"Sedp::add_publication: ")
6153 ACE_TEXT(
"Unable to get security attributes for topic '%C'. SecurityException[%d.%d]: %C\n"),
6163 ACE_TEXT(
"Sedp::add_publication: ")
6164 ACE_TEXT(
"Permissions check failed for local datawriter on topic '%C'. ")
6165 ACE_TEXT(
"Security Exception[%d.%d]: %C\n"), topic_name.data(),
6174 ACE_TEXT(
"Sedp::add_publication: ")
6175 ACE_TEXT(
"Unable to get security attributes for local datawriter. ")
6176 ACE_TEXT(
"Security Exception[%d.%d]: %C\n"),
6187 ACE_TEXT(
"Sedp::add_publication: ")
6188 ACE_TEXT(
"Unable to get local datawriter crypto handle. ")
6189 ACE_TEXT(
"Security Exception[%d.%d]: %C\n"),
6211 ACE_TEXT(
"calling match_endpoints\n")));
6225 #ifdef OPENDDS_SECURITY 6231 DCPS::TopicDetailsMap::iterator top_it =
topics_.find(topic_name);
6232 if (top_it !=
topics_.end()) {
6234 top_it->second.remove_local_publication(publicationId);
6239 ACE_TEXT(
"(%P|%t) ERROR: Sedp::remove_publication: ")
6240 ACE_TEXT(
"Failed to publish dispose msg\n")));
6253 ACE_TEXT(
"(%P|%t) Sedp::update_publication_locators: updating locators for %C\n"),
6254 LogGuid(publicationId).c_str()));
6256 iter->second.trans_info_ = transInfo;
6267 const char* filterClassName,
6268 const char* filterExpr,
6288 #ifdef OPENDDS_SECURITY 6297 ACE_TEXT(
"Sedp::add_subscription: ")
6298 ACE_TEXT(
"Unable to get security attributes for topic '%C'. ")
6299 ACE_TEXT(
"SecurityException[%d.%d]: %C\n"),
6309 ACE_TEXT(
"Sedp::add_subscription: ")
6310 ACE_TEXT(
"Permissions check failed for local datareader on topic '%C'. ")
6311 ACE_TEXT(
"Security Exception[%d.%d]: %C\n"), topic_name.data(),
6320 ACE_TEXT(
"Sedp::add_subscription: ")
6321 ACE_TEXT(
"Unable to get security attributes for local datareader. ")
6322 ACE_TEXT(
"Security Exception[%d.%d]: %C\n"),
6333 ACE_TEXT(
"Sedp::add_subscription: ")
6334 ACE_TEXT(
"Unable to get local datareader crypto handle. ")
6335 ACE_TEXT(
"Security Exception[%d.%d]: %C\n"),
6357 ACE_TEXT(
"calling match_endpoints\n")));
6371 #ifdef OPENDDS_SECURITY 6377 DCPS::TopicDetailsMap::iterator top_it =
topics_.find(topic_name);
6378 if (top_it !=
topics_.end()) {
6380 top_it->second.remove_local_subscription(subscriptionId);
6385 ACE_TEXT(
"(%P|%t) ERROR: Sedp::remove_subscription - ")
6386 ACE_TEXT(
"Failed to publish dispose msg\n")));
6392 const GUID_t& subscriptionId,
6400 ACE_TEXT(
"(%P|%t) Sedp::update_subscription_locators: updating locators for %C\n"),
6401 LogGuid(subscriptionId).c_str()));
6403 iter->second.trans_info_ = transInfo;
6412 ACE_TEXT(
"(%P|%t) Sedp::remote_knows_about_local_i: local %C remote %C\n"),
6428 #ifdef OPENDDS_SECURITY 6429 if (pub->second.security_attribs_.base.is_discovery_protected) {
6441 #ifdef OPENDDS_SECURITY 6442 if (pub->second.security_attribs_.base.is_discovery_protected) {
6454 #ifdef OPENDDS_SECURITY 6459 ACE_TEXT(
"(%P|%t) Sedp::remote_is_authenticated_i: local %C remote %C\n"),
6467 if (is_stateless(local)) {
6480 #ifdef OPENDDS_SECURITY 6485 ACE_TEXT(
"(%P|%t) Sedp::local_has_remote_participant_token_i: local %C remote %C\n"),
6495 if (is_stateless_or_volatile(local)) {
6504 return !key_exchange->have_local_participant_crypto_tokens(
crypto_handle_, dp_crypto_handle) ||
6505 key_exchange->have_remote_participant_crypto_tokens(
crypto_handle_, dp_crypto_handle);
6512 ACE_TEXT(
"(%P|%t) Sedp::remote_has_local_participant_token_i: local %C remote %C\n"),
6522 if (is_stateless_or_volatile(local)) {
6531 return !key_exchange->have_local_participant_crypto_tokens(
crypto_handle_, dp_crypto_handle) ||
6540 ACE_TEXT(
"(%P|%t) Sedp::local_has_remote_endpoint_token_i: local %C remote %C\n"),
6548 if (is_stateless_or_volatile(local)) {
6565 key_exchange->have_remote_datareader_crypto_tokens(local_crypto_handle, remote_crypto_handle);
6577 key_exchange->have_remote_datawriter_crypto_tokens(local_crypto_handle, remote_crypto_handle);
6582 const GUID_t& remote)
const 6586 ACE_TEXT(
"(%P|%t) Sedp::remote_has_local_endpoint_token_i: local %C remote %C\n"),
6594 if (is_stateless_or_volatile(local)) {
6605 return !key_exchange->have_local_datawriter_crypto_tokens(local_crypto_handle, remote_crypto_handle) ||
6612 return !key_exchange->have_local_datareader_crypto_tokens(local_crypto_handle, remote_crypto_handle) ||
6622 if (!handle_registry) {
6635 ACE_TEXT(
"(%P|%t) {cleanup_error} Sedp::cleanup_secure_writer() - ")
6636 ACE_TEXT(
"Failure calling unregister_datawriter. (ch %d)")
6637 ACE_TEXT(
" Security Exception[%d.%d]: %C\n"),
6649 if (!handle_registry) {
6662 ACE_TEXT(
"(%P|%t) {cleanup_error} Sedp::cleanup_secure_reader() - ")
6663 ACE_TEXT(
"Failure calling unregister_datareader (ch %d).")
6664 ACE_TEXT(
" Security Exception[%d.%d]: %C\n"),
6677 remove ?
"remove " :
"",
LogGuid(repoId).c_str()));
6693 if (is_remote && local_endpoints.empty()) {
6698 for (RepoIdSet::const_iterator iter = local_endpoints.begin();
6699 iter != local_endpoints.end(); ++iter) {
6705 match(reader ? *iter : repoId, reader ? repoId : *iter);
6715 for (RepoIdSet::const_iterator iter = discovered_endpoints.begin();
6716 iter != discovered_endpoints.end(); ++iter) {
6722 match(reader ? *iter : repoId, reader ? repoId : *iter);
6734 for (DiscoveredParticipant::WriterAssociationRecords::iterator pos = part_iter->second.writer_pending_records_.begin(), limit = part_iter->second.writer_pending_records_.end(); pos != limit; ++pos) {
6735 if ((*pos)->writer_id() == writer && (*pos)->reader_id() == reader) {
6736 part_iter->second.writer_pending_records_.erase(pos);
6741 for (DiscoveredParticipant::WriterAssociationRecords::iterator pos = part_iter->second.writer_associated_records_.begin(), limit = part_iter->second.writer_associated_records_.end(); pos != limit; ++pos) {
6742 if ((*pos)->writer_id() == writer && (*pos)->reader_id() == reader) {
6744 part_iter->second.writer_associated_records_.erase(pos);
6755 event_dispatcher_->
dispatch(DCPS::make_rch<WriterRemoveAssociations>(DCPS::make_rch<WriterAssociationRecord>(callbacks, writer, ra)));
6765 for (DiscoveredParticipant::ReaderAssociationRecords::iterator pos = part_iter->second.reader_pending_records_.begin(), limit = part_iter->second.reader_pending_records_.end(); pos != limit; ++pos) {
6766 if ((*pos)->reader_id() == reader && (*pos)->writer_id() == writer) {
6767 part_iter->second.reader_pending_records_.erase(pos);
6772 for (DiscoveredParticipant::ReaderAssociationRecords::iterator pos = part_iter->second.reader_associated_records_.begin(), limit = part_iter->second.reader_associated_records_.end(); pos != limit; ++pos) {
6773 if ((*pos)->reader_id() == reader && (*pos)->writer_id() == writer) {
6775 part_iter->second.reader_associated_records_.erase(pos);
6786 event_dispatcher_->
dispatch(DCPS::make_rch<ReaderRemoveAssociations>(DCPS::make_rch<ReaderAssociationRecord>(callbacks, reader, wa)));
6795 lsi->second.matched_endpoints_.erase(removing);
6798 dpi->second.matched_endpoints_.erase(remove_from);
6800 const size_t count = lsi->second.remote_expectant_opendds_associations_.erase(removing);
6812 lpi->second.matched_endpoints_.erase(removing);
6815 dsi->second.matched_endpoints_.erase(remove_from);
6817 lpi->second.remote_expectant_opendds_associations_.erase(removing);
6836 bool writer_local =
false;
6838 writer_local =
true;
6839 writer_type_info = &lpi->second.type_info_;
6842 writer_type_info = &dpi->second.type_info_;
6855 bool reader_local =
false;
6857 reader_local =
true;
6858 reader_type_info = &lsi->second.type_info_;
6861 reader_type_info = &dsi->second.type_info_;
6875 bool request =
false;
6876 bool need_minimal, need_complete;
6879 if (!writer_local && reader_local) {
6883 "Need to get type objects from remote writer\n"));
6887 }
else if (!reader_local && writer_local) {
6891 "Need to get type objects from remote reader\n"));
6896 }
else if (reader_local && !writer_local &&
use_xtypes_ &&
6902 "Need to get type objects from remote reader for recorder\n"));
6910 reader_local ? writer_type_info : reader_type_info,
6912 #ifdef OPENDDS_SECURITY
6914 lsi->second.security_attribs_.base.is_discovery_protected :
6915 lpi->second.security_attribs_.base.is_discovery_protected,
6919 need_minimal, need_complete);
6929 bool discovered =
false;
6930 bool discovery_protected =
false;
6936 #ifdef OPENDDS_SECURITY 6937 discovery_protected = dpi->second.security_attribs_.base.is_discovery_protected;
6944 #ifdef OPENDDS_SECURITY 6945 discovery_protected = dsi->second.security_attribs_.base.is_discovery_protected;
6952 ACE_ERROR((
LM_NOTICE,
"(%P|%t) NOTICE: Sedp::request_remote_complete_type_objects: ",
6953 "GUID passed, %C, is not a discovered reader or writer\n",
6961 discovery_protected,
false,
true);
6966 bool& need_complete)
const 6975 return need_minimal || need_complete;
6989 "clean up pending pair local: %C remote: %C\n",
6992 if (iter->first.type_obj_req_cond) {
7006 "clean up type lookup data for %C\n",
7022 bool expects_inline_qos =
false;
7025 if (!found || !locators.length()) {
7035 ser_loc << locators;
7083 bool writer_local =
false, already_matched =
false;
7085 writer_local =
true;
7086 dwQos = &lpi->second.qos_;
7087 pubQos = &lpi->second.publisher_qos_;
7088 wTls = &lpi->second.trans_info_;
7089 wTransportContext = lpi->second.transport_context_;
7090 already_matched = lpi->second.matched_endpoints_.count(reader);
7091 writer_type_info = &lpi->second.type_info_;
7093 writer_participant_discovered_at = lpi->second.participant_discovered_at_;
7095 wTls = &dpi->second.writer_data_.writerProxy.allLocators;
7096 wTransportContext = dpi->second.transport_context_;
7097 writer_type_info = &dpi->second.type_info_;
7098 topic_name = dpi->second.get_topic_name();
7099 writer_participant_discovered_at = dpi->second.participant_discovered_at_;
7102 dpi->second.writer_data_.ddsPublicationData;
7129 pubQos = &tempPubQos;
7141 #ifndef OPENDDS_NO_CONTENT_FILTERED_TOPIC 7148 bool reader_local =
false;
7150 reader_local =
true;
7151 drQos = &lsi->second.qos_;
7152 subQos = &lsi->second.subscriber_qos_;
7153 rTls = &lsi->second.trans_info_;
7154 rTransportContext = lsi->second.transport_context_;
7155 reader_type_info = &lsi->second.type_info_;
7156 if (lsi->second.filterProperties.filterExpression[0] != 0) {
7160 #ifndef OPENDDS_NO_CONTENT_FILTERED_TOPIC 7163 if (!already_matched) {
7164 already_matched = lsi->second.matched_endpoints_.count(writer);
7166 reader_participant_discovered_at = lsi->second.participant_discovered_at_;
7168 rTls = &dsi->second.reader_data_.readerProxy.allLocators;
7171 rTransportContext = dsi->second.transport_context_;
7174 dsi->second.reader_data_.ddsSubscriptionData;
7198 subQos = &tempSubQos;
7200 #ifndef OPENDDS_NO_CONTENT_FILTERED_TOPIC 7201 cfProp = &dsi->second.reader_data_.contentFilterProperty;
7203 reader_type_info = &dsi->second.type_info_;
7204 reader_participant_discovered_at = dsi->second.participant_discovered_at_;
7210 bool consistent =
false;
7212 DCPS::TopicDetailsMap::iterator td_iter =
topics_.find(topic_name);
7213 if (td_iter ==
topics_.end()) {
7215 ACE_TEXT(
"(%P|%t) Sedp::match_continue - ERROR ")
7216 ACE_TEXT(
"Didn't find topic for consistency check\n")));
7224 if (!writer_local || !reader_local) {
7233 "Sedp::match_continue: " 7234 "Encountered unsupported combination of XCDR1 encoding and appendable " 7235 "extensibility\n"));
7249 consistent = ta.
assignable(reader_type_id, writer_type_id);
7252 consistent = reader_type_id == writer_type_id;
7255 "ids must be the same when using DISALLOW_TYPE_COERCION\n"));
7264 "force_type_validation is true, but TypeObjects are not available\n"));
7271 writer_type_name = td_iter->second.local_data_type_name();
7273 writer_type_name = dpi->second.get_type_name();
7276 reader_type_name = td_iter->second.local_data_type_name();
7278 reader_type_name = dsi->second.get_type_name();
7280 consistent = reader_type_name.empty() || writer_type_name == reader_type_name;
7285 td_iter->second.increment_inconsistent();
7288 ACE_TEXT(
"(%P|%t) Sedp::match_continue - WARNING ")
7289 ACE_TEXT(
"Data types of topic %C does not match (inconsistent)\n"),
7290 topic_name.c_str()));
7303 dwr = lpi->second.publication_;
7308 drr = lsi->second.subscription_;
7316 if (
compatibleQOS(&writerStatus, &readerStatus, *wTls, *rTls,
7317 dwQos, drQos, pubQos, subQos)) {
7319 bool call_writer =
false, call_reader =
false;
7322 call_writer = lpi->second.matched_endpoints_.insert(reader).second;
7323 dwr = lpi->second.publication_;
7324 if (!reader_local) {
7325 dsi->second.matched_endpoints_.insert(writer);
7329 call_reader = lsi->second.matched_endpoints_.insert(writer).second;
7330 drr = lsi->second.subscription_;
7331 if (!writer_local) {
7332 dpi->second.matched_endpoints_.insert(reader);
7336 if (writer_local && !reader_local) {
7337 add_assoc_i(writer, lpi->second, reader, dsi->second);
7339 if (reader_local && !writer_local) {
7340 add_assoc_i(reader, lsi->second, writer, dpi->second);
7343 if (!call_writer && !call_reader) {
7354 ra.transportContext = rTransportContext;
7355 ra.readerId = reader;
7356 ra.subQos = *subQos;
7357 ra.readerQos = *drQos;
7358 #ifndef OPENDDS_NO_CONTENT_FILTERED_TOPIC 7364 ra.participantDiscoveredAt = writer_participant_discovered_at;
7373 wa.transportContext = wTransportContext;
7374 wa.writerId = writer;
7375 wa.pubQos = *pubQos;
7376 wa.writerQos = *dwQos;
7378 wa.participantDiscoveredAt = writer_participant_discovered_at;
7381 #ifdef OPENDDS_SECURITY 7387 if (call_reader && call_writer) {
7392 #ifndef OPENDDS_SAFETY_PROFILE 7406 }
else if (call_reader) {
7407 #ifndef OPENDDS_SAFETY_PROFILE 7422 iter->second.reader_pending_records_.push_back(rar);
7425 }
else if (call_writer) {
7428 iter->second.writer_pending_records_.push_back(war);
7433 }
else if (already_matched) {
7435 lpi->second.matched_endpoints_.erase(reader);
7436 lpi->second.remote_expectant_opendds_associations_.erase(reader);
7438 dsi->second.matched_endpoints_.erase(writer);
7442 lsi->second.matched_endpoints_.erase(writer);
7443 lsi->second.remote_expectant_opendds_associations_.erase(writer);
7445 dpi->second.matched_endpoints_.erase(reader);
7448 if (writer_local && !reader_local) {
7451 if (reader_local && !writer_local) {
7464 ACE_TEXT(
"writer incompatible\n")));
7468 dwr_lock->update_incompatible_qos(writerStatus);
7474 ACE_TEXT(
"reader incompatible\n")));
7478 drr_lock->update_incompatible_qos(readerStatus);
7486 bool get_minimal,
bool get_complete)
7513 ACE_DEBUG((
LM_DEBUG,
"(%P|%t) Sedp::request_type_objects: minimal remote: %C seq: %q\n",
7522 ACE_DEBUG((
LM_DEBUG,
"(%P|%t) Sedp::request_type_objects: complete remote: %C seq: %q\n",
7531 bool is_discovery_protected)
7539 orig_req_data.
secure =
false;
7540 #ifdef OPENDDS_SECURITY 7542 orig_req_data.
secure =
true;
7569 #ifdef OPENDDS_SECURITY 7571 const GUID_t& writer,
const GUID_t& reader,
bool call_writer,
bool call_reader)
7574 if (call_reader && !call_writer) {
7584 DatawriterCryptoTokenSeqMap::iterator t_iter =
7588 if (!keyexg->set_remote_datawriter_crypto_tokens(drch, dwch, t_iter->second, se)) {
7590 ACE_TEXT(
"DiscoveryBase::match_continue_security_enabled: ")
7591 ACE_TEXT(
"Unable to set pending remote datawriter crypto tokens with ")
7592 ACE_TEXT(
"crypto key exchange plugin. Security Exception[%d.%d]: %C\n"),
7604 if (call_writer && !call_reader) {
7614 relay_only_readers_.count(reader));
7615 DatareaderCryptoTokenSeqMap::iterator t_iter =
7619 if (!keyexg->set_remote_datareader_crypto_tokens(dwch, drch, t_iter->second, se)) {
7621 ACE_TEXT(
"DiscoveryBase::match_continue_security_enabled: ")
7622 ACE_TEXT(
"Unable to set pending remote datareader crypto tokens with crypto ")
7623 ACE_TEXT(
"key exchange plugin. Security Exception[%d.%d]: %C\n"),
7642 ACE_TEXT(
"(%P|%t) Sedp::WriterAddAssociation::handle_event - ")
7643 ACE_TEXT(
"adding writer %C association for reader %C\n"),
LogGuid(record_->writer_id()).c_str(),
7644 LogGuid(record_->reader_id()).c_str()));
7646 lock->add_association(record_->writer_id(), record_->reader_association_,
true);
7656 ACE_TEXT(
"(%P|%t) Sedp::WriterRemoveAssociations::handle_event - ")
7657 ACE_TEXT(
"removing writer %C association for reader %C\n"),
LogGuid(record_->writer_id()).c_str(),
7658 LogGuid(record_->reader_id()).c_str()));
7661 reader_seq.length(1);
7662 reader_seq[0] = record_->reader_id();
7663 lock->remove_associations(reader_seq,
false);
7673 ACE_TEXT(
"(%P|%t) Sedp::ReaderAddAssociation::handle_event - ")
7674 ACE_TEXT(
"adding reader %C association for writer %C\n"),
LogGuid(record_->reader_id()).c_str(),
7675 LogGuid(record_->writer_id()).c_str()));
7677 lock->add_association(record_->reader_id(), record_->writer_association_,
false);
7687 ACE_TEXT(
"(%P|%t) Sedp::ReaderRemoveAssociations::handle_event - ")
7688 ACE_TEXT(
"removing reader %C association for writer %C\n"),
LogGuid(record_->reader_id()).c_str(),
7689 LogGuid(record_->writer_id()).c_str()));
7692 writer_seq.length(1);
7693 writer_seq[0] = record_->writer_id();
7694 lock->remove_associations(writer_seq,
false);
void set_sample(Message_Block_Ptr sample)
DDS::RPC::ReplyHeader header
unsigned long BuiltinEndpointQos_t
const EntityId_t ENTITYID_P2P_BUILTIN_PARTICIPANT_MESSAGE_SECURE_WRITER
DiscoveryWriter_rch dcps_participant_secure_writer_
bool have_ice_agent_info_
const size_t boolean_cdr_size
DataSampleHeader header_
The demarshalled sample header.
XTypes::TypeInformation type_info_
void send(SendStateDataSampleList send_list, ACE_UINT64 transaction_id=0)
TimeDuration max_type_lookup_service_reply_period_
#define TheTransportRegistry
PartitionQosPolicy partition
DCPS::GUID_t get_guid() const
DDS::ReturnCode_t write_stateless_message(const DDS::Security::ParticipantStatelessMessage &msg, const DCPS::GUID_t &reader)
DCPS::DiscoveredReaderData data
bool from_param_list(const ParameterList ¶m_list, DDS::ParticipantBuiltinTopicData &pbtd)
bool ignore_sequence_bounds
DiscoveryReader_rch subscriptions_secure_reader_
DDS::Security::ParticipantSecurityAttributes participant_sec_attr_
void insert_local_datawriter_crypto_handle(const DCPS::GUID_t &id, DDS::Security::DatawriterCryptoHandle handle, const DDS::Security::EndpointSecurityAttributes &attributes)
void remove_discovered_subscription(const DCPS::GUID_t &guid)
void process_participant_ice(const ParameterList &plist, const ParticipantData_t &pdata, const DCPS::GUID_t &guid)
DDS::PublicationBuiltinTopicData base
DCPS::MonotonicTime_t discoveredAt
const DDS::Security::EndpointSecurityAttributes & get_local_datareader_security_attributes(const DCPS::GUID_t &id) const
#define ACE_GUARD(MUTEX, OBJ, LOCK)
ACE_INET_Addr default_multicast_group() const
bool send_type_lookup_request(const XTypes::TypeIdentifierSeq &type_ids, const DCPS::GUID_t &reader, bool is_discovery_protected, bool send_get_types, const SequenceNumber &seq_num)
DDS::ReturnCode_t write_dcps_participant_dispose(const DCPS::GUID_t &part)
virtual void append_transport_statistics(TransportStatisticsSequence &)
DDS::ReturnCode_t write_participant_message_data(const DCPS::GUID_t &rid, DCPS::SequenceNumber &sn, const DCPS::GUID_t &reader=GUID_UNKNOWN)
const BuiltinEndpointSet_t DISC_BUILTIN_ENDPOINT_SUBSCRIPTION_ANNOUNCER
DiscoveryWriter_rch publications_secure_writer_
void create_datareader_crypto_tokens(const DDS::Security::DatareaderCryptoHandle &drch, const DDS::Security::DatawriterCryptoHandle &dwch, DDS::Security::DatareaderCryptoTokenSeq &drcts)
DDS::Security::PermissionsHandle get_permissions_handle() const
DCPS::LocatorSeq defaultMulticastLocatorList
TypeLookup_getTypeDependencies_Out result
void insert_remote_datawriter_crypto_handle(const DCPS::GUID_t &id, DDS::Security::DatawriterCryptoHandle handle, const DDS::Security::EndpointSecurityAttributes &attributes)
void insert_remote_datareader_crypto_handle(const DCPS::GUID_t &id, DDS::Security::DatareaderCryptoHandle handle, const DDS::Security::EndpointSecurityAttributes &attributes)
const DataSampleHeader & get_header() const
String256 relatedTopicName
const ReturnCode_t RETCODE_PRECONDITION_NOT_MET
bool participant_tokens_sent_
const InstanceHandle_t HANDLE_NIL
SampleIdentity relatedRequestId
char message_id_
The enum MessageId.
const ExtendedBuiltinEndpointSet_t TYPE_LOOKUP_SERVICE_REPLY_READER_SECURE
DDS::Security::DatawriterCryptoHandle get_local_datawriter_crypto_handle(const DCPS::GUID_t &id) const
bool is_expectant_opendds(const GUID_t &participant) const
void init(const OPENDDS_STRING &name, const DCPS::GUID_t &topic_id)
void populate_discovered_reader_msg(DCPS::DiscoveredReaderData &drd, const DCPS::GUID_t &subscription_id, const LocalSubscription &sub)
DCPS::RepoIdSet matched_endpoints_
sequence< QosPolicyCount > QosPolicyCountSeq
void cleanup(const DCPS::GUID_t &guid, const XTypes::TypeIdentifier &ti)
OpenDDS_Dcps_Export void primitive_serialized_size_ulong(const Encoding &encoding, size_t &size, size_t count=1)
RemoteExceptionCode_t remoteEx
const octet ENTITYKIND_BUILTIN_WRITER_WITH_KEY
ReliabilityQosPolicy reliability
::DDS::DataReaderQos readerQos
bool got_complete
Whether all complete types are obtained.
const string GMCLASSID_SECURITY_DATAREADER_CRYPTO_TOKENS
const BuiltinEndpointSet_t BUILTIN_ENDPOINT_TYPE_LOOKUP_REQUEST_DATA_WRITER
DCPS::TransportConfig_rch transport_cfg_
DCPS::RepoIdSet matched_endpoints_
RtpsDiscoveryConfig_rch config() const
void cleanup_secure_reader(const GUID_t &subscriptionId)
GroupDataQosPolicy group_data
DDS::ReturnCode_t write_volatile_message(DDS::Security::ParticipantVolatileMessageSecure &msg, const DCPS::GUID_t &reader)
DDS::ReturnCode_t write_publication_data_unsecure(const DCPS::GUID_t &rid, LocalPublication &pub, const DCPS::GUID_t &reader=GUID_UNKNOWN)
bool locators_changed(const ParticipantProxy_t &x, const ParticipantProxy_t &y)
void set_sub_id(CORBA::ULong index, OpenDDS::DCPS::GUID_t id)
DiscoveredSubscriptionMap discovered_subscriptions_
static bool decode_parameter_list(const DCPS::ReceivedDataSample &sample, Serializer &ser, DCPS::Extensibility extensibility, ParameterList &data)
ICE::AgentInfo ice_agent_info
OpenDDS_Dcps_Export TransportDebug transport_debug
EndpointSecurityInfo security_info
const DCPS::NetworkAddress & multicast_group() const
OwnershipQosPolicy ownership
TypeLookupReplyWriter_rch type_lookup_reply_writer_
virtual void get_last_recv_locator(const GUID_t &, TransportLocator &)
const BuiltinEndpointSet_t DISC_BUILTIN_ENDPOINT_PARTICIPANT_ANNOUNCER
void set_handle_registry(const Security::HandleRegistry_rch &hr)
DurabilityQosPolicy durability
bool ready(const DiscoveredParticipant &participant, const GUID_t &local_id, const GUID_t &remote_id, bool local_tokens_sent) const
TransportLocatorSeq remote_data_
bool key_fields_only_
Only the key fields of the data sample are present in the payload.
bool remote_has_local_endpoint_token_i(const GUID_t &local, bool local_tokens_sent, const GUID_t &remote) const
LocalSubscriptionMap local_subscriptions_
virtual bool is_expectant_opendds(const GUID_t &endpoint) const
DCPS::TransportInst_rch transport_inst_
const EntityId_t ENTITYID_SEDP_BUILTIN_SUBSCRIPTIONS_READER
const RepoIdSet & local_publications() const
const GUID_t GUID_UNKNOWN
Nil value for GUID.
void rtps_relay_only_now(bool f)
DiscoveredSubscriptionMap::iterator DiscoveredSubscriptionIter
const BuiltinEndpointSet_t DISC_BUILTIN_ENDPOINT_PUBLICATION_ANNOUNCER
const ParameterId_t PID_PARTICIPANT_GUID
void handle_auth_request(const DDS::Security::ParticipantStatelessMessage &msg)
bool isReader() const
Returns true if the GUID represents a reader entity.
bool sedp_multicast() const
DDS::ReturnCode_t add_publication_i(const DCPS::GUID_t &rid, LocalPublication &pub)
const BuiltinEndpointSet_t SEDP_BUILTIN_PUBLICATIONS_SECURE_READER
void data_delivered(const DCPS::DataSampleElement *)
virtual void data_received_i(const DCPS::ReceivedDataSample &sample, const DCPS::EntityId_t &entity_id, DCPS::Serializer &ser, DCPS::Extensibility extensibility)
const EntityId_t ENTITYID_SEDP_BUILTIN_PUBLICATIONS_SECURE_READER
TimeBasedFilterQosPolicy time_based_filter
virtual ~DiscoveryWriter()
void replay_durable_data_for(const DCPS::GUID_t &remote_sub_id)
virtual size_t populate_locator(OpenDDS::DCPS::TransportLocator &trans_info, ConnectionInfoFlags flags) const =0
Populate a transport locator sequence. Return the number of "locators.".
boolean allow_unauthenticated_participants
virtual void handle_event()
Called when the event is dispatched by an EventDispatcher.
DDS::Security::DatareaderCryptoHandle get_local_datareader_crypto_handle(const DCPS::GUID_t &id) const
String256 contentFilteredTopicName
const RepoIdSet & discovered_subscriptions() const
const EntityId_t ENTITYID_P2P_BUILTIN_PARTICIPANT_MESSAGE_READER
TopicSecurityAttributes base
String to_dds_string(unsigned short to_convert)
DiscoveryReader_rch publications_secure_reader_
const EntityId_t ENTITYID_TL_SVC_REQ_WRITER
boolean ignore_member_names
EventDispatcher_rch event_dispatcher()
boolean prevent_type_widening
GUIDSeq associatedWriters
TypeLookupRequestWriter_rch type_lookup_request_secure_writer_
void generate_remote_matched_crypto_handles(DiscoveredParticipant &participant)
const char SEDP_AGENT_INFO_KEY[]
bool isUserDomainEntity() const
Returns true if the GUID represents a user defined type domain entity.
ACE_UINT32 source_timestamp_nanosec_
size_t array_count(Type(&)[count])
ACE_CDR::ULong transport_context_
MonotonicTime_t participantDiscoveredAt
SubscriptionBuiltinTopicData base
const BuiltinEndpointQos_t BEST_EFFORT_PARTICIPANT_MESSAGE_DATA_READER
void received_stateless_message(DCPS::MessageId message_id, const DDS::Security::ParticipantStatelessMessage &data)
MonotonicTime_t participant_discovered_at_
DiscoveredParticipantMap::iterator DiscoveredParticipantIter
SequenceNumber rpc_seqnum_complete
void process_association_records_i(DiscoveredParticipant &participant)
OwnershipQosPolicy ownership
DDS::ReturnCode_t init(const DCPS::GUID_t &guid, const RtpsDiscovery &disco, DDS::DomainId_t domainId, XTypes::TypeLookupService_rch tls)
OpenDDS::DCPS::GUID_t destination_participant_guid
const char * c_str() const
::DDS::SubscriberQos subQos
const RepoIdSet & local_subscriptions() const
MatchingDataMap matching_data_buffer_
const DDS::Security::EndpointSecurityAttributes & get_remote_datareader_security_attributes(const DCPS::GUID_t &id) const
Implementation of Recorder functionality.
ACE_CDR::Octet kind() const
DCPS::DataReaderCallbacks_wrch subscription_
const EntityId_t ENTITYID_TL_SVC_REPLY_READER
DCPS::TopicStatus remove_topic(const GUID_t &topicId)
#define OPENDDS_ASSERT(C)
DDS::Security::ParticipantCryptoHandle crypto_handle_
DCPS::TopicDetailsMap topics_
Writer(const DCPS::GUID_t &pub_id, Sedp &sedp, ACE_INT64 seq_init=1)
DCPS::SequenceNumber sequence_
const int AC_GENERATE_REMOTE_MATCHED_CRYPTO_HANDLE
TransportLocator discovery_locator_
ACE_CDR::ULong get_participant_flags(const DCPS::GUID_t &guid) const
ACE_CDR::ULong remote_transport_context_
void control_delivered(const DCPS::Message_Block_Ptr &sample)
LivelinessQosPolicy liveliness
void update_publication_locators(const GUID_t &publicationId, const DCPS::TransportLocatorSeq &transInfo)
bool process_type_lookup_reply(const DCPS::ReceivedDataSample &, DCPS::Serializer &ser, bool is_discovery_protected)
ICE::AgentInfo ice_agent_info_
sequence< Locator_t > LocatorSeq
OpenDDS_Dcps_Export GUID_t make_unknown_guid(const GuidPrefix_t &prefix)
boolean ignore_sequence_bounds
unsigned long ExtendedBuiltinEndpointSet_t
DeadlineQosPolicy deadline
const DCPS::GUID_t local_id() const
void add_local_publication(const DCPS::GUID_t &guid)
bool send_local_token() const
bool process_get_types_request(const XTypes::TypeLookup_Request &type_lookup_request, XTypes::TypeLookup_Reply &type_lookup_reply)
TimePoint_T< SystemClock > SystemTimePoint
XTypes::TypeLookupService_rch type_lookup_service_
virtual ~TypeLookupRequestReader()
void received_participant_message_data_secure(DCPS::MessageId message_id, const ParticipantMessageData &data)
bool should_drop_stateless_message(const DDS::Security::ParticipantGenericMessage &msg)
bool associated_with_counterpart_if_not_pending(const DCPS::GUID_t &remote_part) const
DCPS::SequenceNumber type_lookup_service_sequence_number_
DiscoveryReader_rch subscriptions_reader_
const EntityId_t ENTITYID_TL_SVC_REQ_WRITER_SECURE
key GuidPrefix_t guidPrefix
ACE_Thread_Mutex lock_
Seems to protect accesses to impls_, pending_, links_, data_link_index_.
void use_ice_now(bool flag)
const DDS::BuiltinTopicKey_t BUILTIN_TOPIC_KEY_UNKNOWN
DestinationOrderQosPolicy destination_order
reference_wrapper< T > ref(T &r)
sequence< TransportLocator > TransportLocatorSeq
EntityFactoryQosPolicy entity_factory
void match_endpoints(GUID_t repoId, const DCPS::TopicDetails &td, bool remove=false)
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)
const EntityId_t ENTITYID_SPDP_RELIABLE_BUILTIN_PARTICIPANT_SECURE_READER
XTypes::TypeInformation type_info_
void rtps_relay_only_now(bool flag)
T::rv_reference move(T &p)
DDS::Security::CryptoKeyFactory_var get_crypto_key_factory() const
const ExtendedBuiltinEndpointSet_t TYPE_LOOKUP_SERVICE_REPLY_WRITER_SECURE
void remove_from_bit_i(const DiscoveredPublication &pub)
DataRepresentationQosPolicy representation
Security::HandleRegistry_rch get_handle_registry() const
PluginEndpointSecurityAttributesMask plugin_endpoint_security_attributes
DDS::Security::ExtendedBuiltinEndpointSet_t available_extended_builtin_endpoints() const
const octet ENTITYKIND_BUILTIN_WRITER_NO_KEY
#define ACE_CDR_BYTE_ORDER
const DCPS::GUID_t & topic_id() const
void update(const DDS::TopicQos &qos)
void set_access_control(DDS::Security::AccessControl_var acl)
OpenDDSParticipantFlagsBits_t bits
bool operator==(const DisjointSequence::OrderedRanges< T > &a, const DisjointSequence::OrderedRanges< T > &b)
void disassociate(const GUID_t &peerId)
const int AC_REMOTE_DURABLE
DDS::ReturnCode_t write_publication_data_secure(const DCPS::GUID_t &rid, LocalPublication &pub, const DCPS::GUID_t &reader=GUID_UNKNOWN)
sequence< DataHolder > DataHolderSeq
ACE_Guard< ACE_Thread_Mutex > lock_
const BuiltinEndpointSet_t BUILTIN_ENDPOINT_PARTICIPANT_MESSAGE_DATA_WRITER
void serialized_size(const Encoding &encoding, size_t &size, const SequenceNumber &)
DDS::PublicationBuiltinTopicData ddsPublicationData
boolean is_discovery_protected
virtual void data_received_i(const DCPS::ReceivedDataSample &sample, const DCPS::EntityId_t &entity_id, DCPS::Serializer &ser, DCPS::Extensibility extensibility)
const size_t uint32_cdr_size
void remove_assoc(const GUID_t &remove_from, const GUID_t &removing)
DDS::RPC::RequestHeader header
bool remote_is_authenticated_i(const GUID_t &local, const GUID_t &remote, const DiscoveredParticipant &participant) const
DDS::SubscriptionBuiltinTopicData ddsSubscriptionData
EntityFactoryQosPolicy entity_factory
const int AC_REMOTE_RELIABLE
Sedp(const DCPS::GUID_t &participant_id, Spdp &owner, ACE_Thread_Mutex &lock)
void write_durable_dcps_participant_secure(const DCPS::GUID_t &reader)
DDS::ReturnCode_t write_stateless_message(const DDS::Security::ParticipantStatelessMessage &msg, const DCPS::GUID_t &reader, DCPS::SequenceNumber &sequence)
DCPS::DiscoveredWriterData writer_data_
void OpenDDS_Dcps_Export log_progress(const char *activity, const GUID_t &local, const GUID_t &remote, const MonotonicTime_t &start_time, const GUID_t &reference)
Conversion processing and value testing utilities for RTPS GUID_t types.
bool get_last_recv_locator(const DCPS::GUID_t &part_id, DCPS::LocatorSeq &target, bool &inlineQos)
OpenDDS::RTPS::ParticipantProxy_t participantProxy
virtual void handle_event()
Called when the event is dispatched by an EventDispatcher.
void cleanup_volatile_crypto(const DCPS::GUID_t &remote)
DCPS::JobQueue_rch job_queue_
void data_acked(const GUID_t &remote)
const EntityId_t ENTITYID_TL_SVC_REPLY_READER_SECURE
EndpointSecurityAttributesMask endpoint_security_attributes
const long TypeLookup_getTypes_HashId
DCPS::LocatorSeq metatrafficMulticastLocatorList
AuthState lookup_participant_auth_state(const GUID_t &id) const
unsigned long transportContext
DDS::SubscriberQos subscriber_qos_
void reset_alignment()
Reset alignment as if a new instance were created.
DDS::ReturnCode_t add_subscription_i(const DCPS::GUID_t &rid, LocalSubscription &sub)
BuiltinAssociationRecords builtin_associated_records_
void data_dropped(const DCPS::DataSampleElement *, bool by_transport)
ICE::AgentInfo ice_agent_info
LatencyBudgetQosPolicy latency_budget
PluginEndpointSecurityAttributesMask plugin_endpoint_attributes
String256 filterClassName
DCPS::EventDispatcher_rch event_dispatcher_
MessageId
One byte message id (<256)
LocalSubscriptionMap::const_iterator LocalSubscriptionCIter
SequenceNumber seq_number
static TimePoint_T< MonotonicClock > now()
const BuiltinEndpointSet_t SPDP_BUILTIN_PARTICIPANT_SECURE_READER
TypeLookupReplyReader_rch type_lookup_reply_reader_
OrigSeqNumberMap orig_seq_numbers_
void populate_origination_locator(const GUID_t &id, DCPS::TransportLocator &tl)
RcHandle< EndpointManagerSporadic > type_lookup_reply_deadline_processor_
DCPS::MonotonicTime_t participant_discovered_at_
virtual void assign_subscription_key(GUID_t &rid, const GUID_t &topicId, const DDS::DataReaderQos &)
DDS::DomainId_t get_domain_id() const
const DCPS::GUID_t & writer_id() const
DDS::Security::DatawriterCryptoHandle generate_remote_matched_writer_crypto_handle(const DCPS::GUID_t &writer, const DCPS::GUID_t &reader)
DDS::Security::ParticipantBuiltinTopicDataSecure ddsParticipantDataSecure
MessageIdentity message_identity
sequence< GUID_t > ReaderIdSeq
void stop_ice(const DCPS::GUID_t &guid, const DiscoveredPublication &dpub)
ICE::AgentInfo ice_agent_info_
void local_tokens_sent(bool flag)
void update_agent_info(const DCPS::GUID_t &a_local_guid, const ICE::AgentInfo &a_agent_info)
bool process_get_types_reply(const XTypes::TypeLookup_Reply &reply)
ReaderProxy_t readerProxy
DurabilityServiceQosPolicy durability_service
void remove_publication(const GUID_t &publicationId)
ReaderAssociationRecords reader_pending_records_
TypeConsistencyEnforcementQosPolicy type_consistency
DDS::PublisherQos publisher_qos_
RcHandle< PublicationAgentInfoListener > publication_agent_info_listener_
void write_durable_publication_data(const DCPS::GUID_t &reader, bool secure)
DOMAINID_TYPE_NATIVE DomainId_t
const EntityId_t ENTITYID_SPDP_BUILTIN_PARTICIPANT_WRITER
XTypes::TypeIdentifier type_id
const EntityId_t ENTITYID_SPDP_BUILTIN_PARTICIPANT_READER
DDS::Security::ParticipantCryptoHandle crypto_handle_
const EntityId_t ENTITYID_PARTICIPANT
const TypeConsistencyEnforcementQosPolicyKind_t ALLOW_TYPE_COERCION
PresentationQosPolicy presentation
bool ignore_string_bounds
const DDS::TopicQos local_qos() const
void data_received(const DCPS::ReceivedDataSample &sample)
void enqueue_tail(const DataSampleElement *element)
NativeCryptoHandle DatawriterCryptoHandle
const DCPS::GUID_t & remote_id() const
bool get_default_locators(const DCPS::GUID_t &part_id, DCPS::LocatorSeq &target, bool &inlineQos)
void associate(DiscoveredParticipant &participant, const DDS::Security::ParticipantSecurityAttributes &participant_sec_attr)
LocalSubscriptionMap::iterator LocalSubscriptionIter
MonotonicTimePoint time_added_to_map
const DDS::Security::EndpointSecurityAttributes & get_remote_datawriter_security_attributes(const DCPS::GUID_t &id) const
OpenDDS::DCPS::GUID_t destination_endpoint_guid
DataSample * get_sample() const
XTypes::TypeInformation type_info_
typedef OPENDDS_MAP_CMP(GUID_t, DataLink_rch, GUID_tKeyLessThan) DataLinkIndex
const ViewStateKind NOT_NEW_VIEW_STATE
bool associated_with_counterpart(const DCPS::GUID_t &remote_part) const
void send_datareader_crypto_tokens(const DCPS::GUID_t &local_reader, const DCPS::GUID_t &remote_writer, const DDS::Security::DatareaderCryptoTokenSeq &drcts)
TypeLookupReplyWriter_rch type_lookup_reply_secure_writer_
SequenceNumber participant_secure_sequence_
bool remote_has_local_participant_token_i(const GUID_t &local, const GUID_t &remote, const DiscoveredParticipant &participant) const
DCPS::WeakRcHandle< ICE::Endpoint > get_ice_endpoint_if_added()
bool remote_knows_about_local_i(const GUID_t &local, const GUID_t &remote) const
MatchingDataMap::iterator MatchingDataIter
CryptoTokenSeq DatareaderCryptoTokenSeq
TypeLookupReplyReader_rch type_lookup_reply_secure_reader_
virtual void handle_event()
Called when the event is dispatched by an EventDispatcher.
TypeIdentifierWithSize typeid_with_size
Class to serialize and deserialize data for DDS.
PublicationBuiltinTopicData base
DurabilityQosPolicy durability
ParticipantCryptoInfoPair lookup_participant_crypto_info(const DCPS::GUID_t &id) const
bool is_security_enabled()
DDS::ReturnCode_t write_subscription_data(const DCPS::GUID_t &rid, LocalSubscription &sub, const DCPS::GUID_t &reader=GUID_UNKNOWN)
void add_discovered_subscription(const DCPS::GUID_t &guid)
DDS::ReturnCode_t write_subscription_data_secure(const DCPS::GUID_t &rid, LocalSubscription &sub, const DCPS::GUID_t &reader=GUID_UNKNOWN)
const ParameterId_t PID_ENDPOINT_GUID
CryptoKeyExchange_var get_crypto_key_exchange() const
const int AC_SEND_LOCAL_TOKEN
static size_t get_max_serialized_size()
Similar to IDL compiler generated methods.
const BuiltinEndpointSet_t BUILTIN_ENDPOINT_PARTICIPANT_MESSAGE_DATA_READER
void set_permissions_handle(DDS::Security::PermissionsHandle h)
DDS::InstanceHandle_t bit_ih_
DDS::StringSeq expressionParameters
bool handle_datareader_crypto_tokens(const DDS::Security::ParticipantVolatileMessageSecure &msg)
TypeIdentifierWithDependencies complete
void end_historic_samples(const DCPS::GUID_t &reader)
OwnershipStrengthQosPolicy ownership_strength
DCPS::WeakRcHandle< ICE::Endpoint > get_ice_endpoint()
DCPS::TopicStatus find_topic(const char *topicName, CORBA::String_out dataTypeName, DDS::TopicQos_out qos, GUID_t &topicId)
OpenDDS::DCPS::GUID_t writer_guid
bool update_subscription_params(const DCPS::GUID_t &subId, const DDS::StringSeq ¶ms)
OpenDDS::RTPS::SequenceNumber_t sequence_number
LivelinessReader_rch participant_message_secure_reader_
MessageIdentity related_message_identity
DestinationOrderQosPolicy destination_order
Christopher Diggins *renamed files *fixing compilation errors *adding Visual C project file *removed make Max Lybbert *removed references to missing and unused header
sequence< TransportStatistics > TransportStatisticsSequence
Holds a data sample received by the transport.
DeferredSamples deferred_samples_
TypeLookup_getTypes_Out result
const ReturnCode_t RETCODE_TIMEOUT
DCPS::RepoIdSet matched_endpoints_
void populate_locators(DCPS::TransportLocatorSeq &remote_data, const ParticipantData_t &pdata)
DataRepresentationQosPolicy representation
long ParticipantCryptoHandle
unsigned char ttl() const
bool process_type_lookup_request(DCPS::Serializer &ser, XTypes::TypeLookup_Reply &type_lookup_reply)
XTypes::TypeInformation type_info
void match_continue(const GUID_t &writer, const GUID_t &reader)
#define ACE_GUARD_RETURN(MUTEX, OBJ, LOCK, RETURN)
const long TypeLookup_getDependencies_HashId
BuiltinEndpointSet_t available_builtin_endpoints() const
void serialize_type_info(const TypeInformation &type_info, T &seq, const DCPS::Encoding *encoding_option=0)
DDS::Security::AccessControl_var get_access_control() const
void cleanup_reader_association(DCPS::DataReaderCallbacks_wrch callbacks, const GUID_t &reader, const GUID_t &writer)
NativeCryptoHandle DatareaderCryptoHandle
OPENDDS_STRING multicast_interface() const
ParticipantData_t build_local_pdata(bool always_in_the_clear, Security::DiscoveredParticipantDataKind kind)
OPENDDS_STRING get_instance_name(const DCPS::GUID_t &id) const
void associate_volatile(DiscoveredParticipant &participant)
bool handle_participant_crypto_tokens(const DDS::Security::ParticipantVolatileMessageSecure &msg)
GenericMessageClassId message_class_id
DDS::Security::DatareaderCryptoHandle generate_remote_matched_reader_crypto_handle(const DCPS::GUID_t &reader, const DCPS::GUID_t &writer, bool relay_only)
const EntityId_t ENTITYID_SEDP_BUILTIN_SUBSCRIPTIONS_SECURE_WRITER
LivelinessWriter_rch participant_message_writer_
const ViewStateKind NEW_VIEW_STATE
WriterAssociationRecords writer_pending_records_
void message_block_to_sequence(const ACE_Message_Block &mb_locator, T &out)
DDS::Security::EndpointSecurityInfo security_info
const BuiltinEndpointSet_t BUILTIN_PARTICIPANT_VOLATILE_MESSAGE_SECURE_WRITER
DataHolderSeq message_data
WriterAssociationRecords writer_associated_records_
typedef OPENDDS_MAP_CMP(GUID_t, DiscoveredSubscription, GUID_tKeyLessThan) DiscoveredSubscriptionMap
DDS::Security::PermissionsHandle lookup_participant_permissions(const DCPS::GUID_t &id) const
DDS::Security::ExtendedBuiltinEndpointSet_t availableExtendedBuiltinEndpoints
const DCPS::TransportClient_rch transport_client_
TransportLocatorSeq allLocators
void set_local(const OPENDDS_STRING &data_type_name, const DDS::TopicQos &qos, bool has_dcps_key, TopicCallbacks *topic_callbacks)
MonotonicTime_t participantDiscoveredAt
bool deserialize_type_info(TypeInformation &type_info, const T &seq)
unsigned long passive_connect_duration_
LocalPublicationMap::const_iterator LocalPublicationCIter
ACE_Message_Block * cont(void) const
DCPS::TransportLocatorSeq trans_info_
ResourceLimitsQosPolicy resource_limits
DCPS::LocatorSeq metatrafficUnicastLocatorList
const EntityId_t ENTITYID_TL_SVC_REPLY_WRITER_SECURE
void disassociate(DiscoveredParticipant &participant)
const char * get_topic_name() const
DDS::Security::CryptoKeyExchange_var get_crypto_key_exchange() const
void remove_agent_info(const DCPS::GUID_t &a_local_guid)
void update_subscription_locators(const GUID_t &subscriptionId, const DCPS::TransportLocatorSeq &transInfo)
virtual DDS::ReturnCode_t remove_publication_i(const DCPS::GUID_t &publicationId, LocalPublication &pub)
void send_participant_crypto_tokens(const DCPS::GUID_t &id)
HandleRegistry_rch get_handle_registry(const DCPS::GUID_t &participant_id)
SecurityReader_rch participant_volatile_message_secure_reader_
TimePoint_T< MonotonicClock > MonotonicTimePoint
GUID_t add_publication(const GUID_t &topicId, DCPS::DataWriterCallbacks_rch publication, const DDS::DataWriterQos &qos, const DCPS::TransportLocatorSeq &transInfo, const DDS::PublisherQos &publisherQos, const XTypes::TypeInformation &type_info)
virtual ~SecurityReader()
const RepoIdSet & discovered_publications() const
bool send_type_lookup_reply(XTypes::TypeLookup_Reply &type_lookup_reply, const DCPS::GUID_t &reader)
boolean is_liveliness_protected
void process_discovered_reader_data(DCPS::MessageId message_id, const DCPS::DiscoveredReaderData &rdata, const DCPS::GUID_t &guid, const XTypes::TypeInformation &type_info, bool have_ice_agent_info, const ICE::AgentInfo &ice_agent_info, const DDS::Security::EndpointSecurityInfo *security_info=NULL)
SecurityReader_rch participant_stateless_message_reader_
DCPS::SequenceNumber local_participant_manual_liveliness_sn_secure_
const BuiltinEndpointSet_t BUILTIN_PARTICIPANT_STATELESS_MESSAGE_WRITER
const EntityId_t ENTITYID_TL_SVC_REQ_READER
const EntityId_t ENTITYID_TL_SVC_REPLY_WRITER
sequence< GUID_t > WriterIdSeq
bool local_has_remote_endpoint_token_i(const GUID_t &local, const GUID_t &remote) const
ACE_CDR::ULong transport_context_
const ExtendedBuiltinEndpointSet_t TYPE_LOOKUP_SERVICE_REQUEST_READER_SECURE
GUID_t add_subscription(const GUID_t &topicId, DCPS::DataReaderCallbacks_rch subscription, const DDS::DataReaderQos &qos, const DCPS::TransportLocatorSeq &transInfo, const DDS::SubscriberQos &subscriberQos, const char *filterClassName, const char *filterExpr, const DDS::StringSeq ¶ms, const XTypes::TypeInformation &type_info)
DDS::PropertySeq PropertySeq
bool have_ice_agent_info_
const bool use_xtypes_complete_
const EntityId_t ENTITYID_SEDP_BUILTIN_PUBLICATIONS_WRITER
static SequenceNumber ZERO()
TopicDataQosPolicy topic_data
void insert_local_datareader_crypto_handle(const DCPS::GUID_t &id, DDS::Security::DatareaderCryptoHandle handle, const DDS::Security::EndpointSecurityAttributes &attributes)
TypeIdentifierWithSizeSeq dependent_typeids
virtual void data_received_i(const DCPS::ReceivedDataSample &sample, const DCPS::EntityId_t &entity_id, DCPS::Serializer &ser, DCPS::Extensibility extensibility)
ACE_CDR::Long dependent_typeid_count
char * wr_ptr(void) const
ACE_UINT32 message_length_
DCPS::DiscoveredReaderData reader_data_
void signal_liveliness_unsecure(DDS::LivelinessQosPolicyKind kind)
TypeLookup_getTypeDependencies_In getTypeDependencies
void write_durable_participant_message_data_secure(const DCPS::GUID_t &reader)
OpenDDS_Rtps_Export DCPS::LocatorSeq transport_locator_to_locator_seq(const DCPS::TransportLocator &info)
void association_complete_i(const DCPS::GUID_t &localId, const DCPS::GUID_t &remoteId)
std::pair< DDS::Security::ParticipantCryptoHandle, DDS::Security::SharedSecretHandle_var > ParticipantCryptoInfoPair
DCPS::SequenceNumber local_participant_automatic_liveliness_sn_secure_
virtual ~LivelinessWriter()
const DCPS::GUID_t & reader_id() const
void set_num_subs(CORBA::ULong num_subs)
bool need_minimal_and_or_complete_types(const XTypes::TypeInformation *type_info, bool &need_minimal, bool &need_complete) const
void request_remote_complete_type_objects(const GUID_t &remote_entity, const XTypes::TypeInformation &remote_type_info, DCPS::TypeObjReqCond &cond)
DataTags DataTagQosPolicy
OPENDDS_STRING uniqueParticipantId() const
DCPS::MonotonicTime_t get_participant_discovered_at() const
void use_rtps_relay_now(bool f)
const EntityId_t ENTITYID_P2P_BUILTIN_PARTICIPANT_STATELESS_WRITER
AccessControl_var get_access_control() const
void remove_expired_endpoints(const MonotonicTimePoint &)
DDS::ParticipantBuiltinTopicData base
bool assignable(const TypeObject &ta, const TypeObject &tb) const
Both input type objects must be minimal.
ACE_CDR::ULong transport_context_
DiscoveryWriter_rch subscriptions_writer_
LivelinessReader_rch participant_message_reader_
const octet ENTITYKIND_BUILTIN_UNKNOWN
virtual ACE_Reactor * reactor(void) const
AtomicBool shutting_down_
void match(const GUID_t &writer, const GUID_t &reader)
DCPS::SequenceNumber local_participant_automatic_liveliness_sn_
bool process_get_dependencies_reply(const DCPS::ReceivedDataSample &sample, const XTypes::TypeLookup_Reply &reply, const DCPS::SequenceNumber &seq_num, bool is_discovery_protected)
DDS::Security::ParticipantCryptoHandle get_remote_participant_crypto_handle(const DCPS::GUID_t &id) const
ReaderDataLifecycleQosPolicy reader_data_lifecycle
TransportLocatorSeq allLocators
Sequence & append(const T &member)
void purge_dead_topic(const String &topic_name)
const BuiltinEndpointSet_t DISC_BUILTIN_ENDPOINT_PARTICIPANT_DETECTOR
DCPS::RepoIdSet associated_participants_
static void set_inline_qos(DCPS::TransportLocatorSeq &locators)
const BuiltinEndpointSet_t BUILTIN_ENDPOINT_TYPE_LOOKUP_REPLY_DATA_READER
TypeLookupRequestReader_rch type_lookup_request_secure_reader_
EndpointSecurityInfo security_info
void get_remote_type_objects(const XTypes::TypeIdentifierWithDependencies &tid_with_deps, MatchingData &md, bool get_minimal, const GUID_t &remote_id, bool is_discovery_protected)
bool isBuiltinDomainEntity() const
Returns true if the GUID represents a builtin type domain entity.
void data_acked_i(const DCPS::GUID_t &local_id, const DCPS::GUID_t &remote_id)
boolean is_submessage_protected
DiscoveryReader_rch dcps_participant_secure_reader_
const EntityId_t ENTITYID_P2P_BUILTIN_PARTICIPANT_VOLATILE_SECURE_WRITER
const EntityId_t ENTITYID_P2P_BUILTIN_PARTICIPANT_MESSAGE_SECURE_READER
void add_discovered_publication(const DCPS::GUID_t &guid)
Mix-in class for DDS entities which directly use the transport layer.
sequence< Parameter > ParameterList
ACE_INT32 source_timestamp_sec_
long count_since_last_send
void create_and_send_datareader_crypto_tokens(const DDS::Security::DatareaderCryptoHandle &drch, const DCPS::GUID_t &local_reader, const DDS::Security::DatawriterCryptoHandle &dwch, const DCPS::GUID_t &remote_writer)
DDS::ReturnCode_t write_subscription_data_unsecure(const DCPS::GUID_t &rid, LocalSubscription &sub, const DCPS::GUID_t &reader=GUID_UNKNOWN)
const BuiltinEndpointSet_t BUILTIN_ENDPOINT_TYPE_LOOKUP_REPLY_DATA_WRITER
WeakRcHandle< ICE::Endpoint > get_ice_endpoint()
DatareaderCryptoTokenSeqMap pending_remote_reader_crypto_tokens_
bool got_minimal
Whether all minimal types are obtained.
WriterProxy_t writerProxy
OpenDDS_Dcps_Export GUID_t make_part_guid(const GuidPrefix_t &prefix)
virtual ~TypeLookupReplyReader()
const EntityId_t ENTITYID_SEDP_BUILTIN_PUBLICATIONS_SECURE_WRITER
const BuiltinEndpointSet_t DISC_BUILTIN_ENDPOINT_SUBSCRIPTION_DETECTOR
DCPS::LocatorSeq defaultUnicastLocatorList
Authentication_var get_authentication() const
const DCPS::EntityId_t PARTICIPANT_MESSAGE_DATA_KIND_AUTOMATIC_LIVELINESS_UPDATE
virtual void data_received_i(const DCPS::ReceivedDataSample &sample, const DCPS::EntityId_t &entity_id, DCPS::Serializer &ser, DCPS::Extensibility extensibility)
void update_agent_info(const DCPS::GUID_t &a_local_guid, const ICE::AgentInfo &a_agent_info)
TransportLocatorSeq writerTransInfo
void set_crypto_key_exchange(DDS::Security::CryptoKeyExchange_var ckf)
void assign_bit_key(DiscoveredPublication &pub)
SendControlStatus send_control(const DataSampleHeader &header, Message_Block_Ptr msg)
bool associate(const AssociationData &peer, bool active)
void erase_local_datawriter_crypto_handle(const DCPS::GUID_t &id)
const EntityId_t ENTITYID_SEDP_BUILTIN_SUBSCRIPTIONS_WRITER
TransportPriorityQosPolicy transport_priority
LivelinessWriter_rch participant_message_secure_writer_
const char SPDP_AGENT_INFO_KEY[]
void populate_discovered_writer_msg(DCPS::DiscoveredWriterData &dwd, const DCPS::GUID_t &publication_id, const LocalPublication &pub)
const BuiltinEndpointSet_t SPDP_BUILTIN_PARTICIPANT_SECURE_WRITER
void remove_assoc_i(const DCPS::GUID_t &local_guid, const LocalPublication &lpub, const DCPS::GUID_t &remote_guid)
DDS::ReturnCode_t write_dcps_participant_secure(const Security::SPDPdiscoveredParticipantData &msg, const DCPS::GUID_t &reader, DCPS::SequenceNumber &sequence)
BuiltinEndpointSet_t availableBuiltinEndpoints
virtual ~DiscoveryReader()
void erase_remote_datawriter_crypto_handle(const DCPS::GUID_t &id)
const BuiltinEndpointSet_t SEDP_BUILTIN_PUBLICATIONS_SECURE_WRITER
bool has_security_data() const
TypeLookupRequestWriter_rch type_lookup_request_writer_
bool process_get_dependencies_request(const XTypes::TypeLookup_Request &request, XTypes::TypeLookup_Reply &reply)
bool should_drop_volatile_message(const DDS::Security::ParticipantGenericMessage &msg)
OpenDDS_Dcps_Export bool equal_guid_prefixes(const GuidPrefix_t &lhs, const GuidPrefix_t &rhs)
#define OPENDDS_VECTOR(T)
OpenDDS::DCPS::GUID_t source_guid
DiscoveryWriter_rch subscriptions_secure_writer_
virtual void assign_publication_key(GUID_t &rid, const GUID_t &topicId, const DDS::DataWriterQos &)
DCPS::DiscoveredWriterData data
DatareaderCryptoHandleList get_all_remote_datareaders(const DCPS::GUID_t &prefix) const
Priority publication_transport_priority_
void push_back(Seq &seq, const typename Seq::value_type &val)
std::vector-style push_back() for CORBA Sequences
OpenDDS_Dcps_Export unsigned int DCPS_debug_level
const EntityId_t ENTITYID_P2P_BUILTIN_PARTICIPANT_VOLATILE_SECURE_READER
const char * get_topic_name() const
DDS::Security::DatawriterCryptoHandle get_remote_datawriter_crypto_handle(const DCPS::GUID_t &id) const
bool local_has_remote_participant_token_i(const GUID_t &local, const GUID_t &remote) const
void write_durable_participant_message_data(const DCPS::GUID_t &reader)
ReliabilityQosPolicy reliability
OpenDDS_Dcps_Export LogLevel log_level
DCPS::GuidPrefix_t guidPrefix
void add_local_subscription(const DCPS::GUID_t &guid)
void disassociate_helper_extended(DDS::Security::ExtendedBuiltinEndpointSet_t &extended_associated_endpoints, const CORBA::ULong flags, const DCPS::GUID_t &id, const EntityId_t &ent, DCPS::TransportClient &client)
sequence< octet, 32 > OctetSeq32
void replay_durable_data_for(const DCPS::GUID_t &remote_sub_id)
void send_datawriter_crypto_tokens(const DCPS::GUID_t &local_writer, const DCPS::GUID_t &remote_reader, const DDS::Security::DatawriterCryptoTokenSeq &dwcts)
ReactorTask_rch reactor_task()
OpenDDSParticipantFlags_t opendds_participant_flags
void send_deferred_samples(const GUID_t &reader)
bool repr_to_encoding_kind(DDS::DataRepresentationId_t repr, Encoding::Kind &kind)
DDS::Security::DatareaderCryptoHandle get_remote_datareader_crypto_handle(const DCPS::GUID_t &id) const
void set_header_fields(DCPS::DataSampleHeader &dsh, size_t size, const DCPS::GUID_t &reader, DCPS::SequenceNumber &sequence, bool historic_sample=false, DCPS::MessageId id=DCPS::SAMPLE_DATA)
virtual ~SecurityWriter()
bool is_security_enabled() const
bool generate_remote_matched_crypto_handle() const
GUID_t make_counterpart_guid(const DCPS::GUID_t &remote_part) const
SecurityWriter_rch participant_volatile_message_secure_writer_
void append_transport_statistics(DCPS::TransportStatisticsSequence &seq)
const SequenceNumber_t SEQUENCENUMBER_UNKNOWN
void remove_from_bit(const DiscoveredPublication &pub)
const BuiltinEndpointSet_t SEDP_BUILTIN_SUBSCRIPTIONS_SECURE_READER
virtual void handle_event()
Called when the event is dispatched by an EventDispatcher.
DCPS::DataWriterCallbacks_wrch publication_
DDS::Security::EndpointSecurityAttributes security_attribs_
const string GMCLASSID_SECURITY_AUTH_HANDSHAKE
void write_control_msg(DCPS::Message_Block_Ptr payload, size_t size, DCPS::MessageId id, DCPS::SequenceNumber seq=DCPS::SequenceNumber())
MonotonicTimePoint time_started
virtual ~LivelinessReader()
Sequence number abstraction. Only allows positive 64 bit values.
DDS::Security::EndpointSecurityInfo security_info
void ignore(const GUID_t &to_ignore)
ReactorInterceptor_rch interceptor() const
void handle_handshake_message(const DDS::Security::ParticipantStatelessMessage &msg)
TransportLocatorSeq readerTransInfo
const EntityId_t ENTITYID_P2P_BUILTIN_PARTICIPANT_STATELESS_READER
const EntityId_t ENTITYID_TL_SVC_REQ_READER_SECURE
const string GMCLASSID_SECURITY_AUTH_REQUEST
const char * retcode_to_string(DDS::ReturnCode_t value)
RcHandle< T > static_rchandle_cast(const RcHandle< U > &h)
void request_type_objects(const XTypes::TypeInformation *type_info, const MatchingPair &mp, bool is_discovery_protected, bool get_minimal, bool get_complete)
void write_durable_subscription_data(const DCPS::GUID_t &reader, bool secure)
DDS::ReturnCode_t write_volatile_message_secure(const DDS::Security::ParticipantVolatileMessageSecure &msg, const DCPS::GUID_t &reader, DCPS::SequenceNumber &sequence)
static SequenceNumber SEQUENCENUMBER_UNKNOWN()
const ExtendedBuiltinEndpointSet_t TYPE_LOOKUP_SERVICE_REQUEST_WRITER_SECURE
virtual void data_received_i(const DCPS::ReceivedDataSample &sample, const DCPS::EntityId_t &entity_id, DCPS::Serializer &ser, DCPS::Extensibility extensibility)
void notify_liveliness(const ParticipantMessageData &pmd)
const DCPS::Encoding & get_locators_encoding()
const ReturnCode_t RETCODE_ERROR
DiscoveredPublicationMap discovered_publications_
DCPS::RcHandle< ICE::Agent > ice_agent_
long long sequence_number
bool send_type_lookup_request(const XTypes::TypeIdentifierSeq &type_ids, const DCPS::GUID_t &reader, const DCPS::SequenceNumber &rpc_sequence, CORBA::Long tl_kind)
#define OPENDDS_END_VERSIONED_NAMESPACE_DECL
bool prevent_type_widening
RcHandle< SubscriptionAgentInfoListener > subscription_agent_info_listener_
ContentFilterProperty_t contentFilterProperty
bool to_param_list(const DDS::ParticipantBuiltinTopicData &pbtd, ParameterList ¶m_list)
const DDS::Security::EndpointSecurityAttributes & get_local_datawriter_security_attributes(const DCPS::GUID_t &id) const
Security::SecurityConfig_rch security_config_
LifespanQosPolicy lifespan
void generate_remote_matched_crypto_handle(const BuiltinAssociationRecord &record)
DCPS::TopicStatus assert_topic(GUID_t &topicId, const char *topicName, const char *dataTypeName, const DDS::TopicQos &qos, bool hasDcpsKey, DCPS::TopicCallbacks *topic_callbacks)
void remove_discovered_publication(const DCPS::GUID_t &guid)
bool ignoring(const GUID_t &guid) const
DCPS::RcHandle< RtpsDiscoveryConfig > config() const
DCPS::GUID_t participantGuid
DCPS::MonotonicTime_t participant_discovered_at_
void set_port_number(u_short, int encode=1)
static const char DEFAULT_INST_PREFIX[]
ACE_Message_Block * data(ACE_Allocator *mb_alloc=0) const
WriterDataLifecycleQosPolicy writer_data_lifecycle
RcHandle< DCPS::BitSubscriber > get_builtin_subscriber_proxy() const
boolean is_access_protected
const BuiltinEndpointSet_t DISC_BUILTIN_ENDPOINT_PUBLICATION_DETECTOR
DDS::ReturnCode_t write_unregister_dispose(const DCPS::GUID_t &rid, CORBA::UShort pid=PID_ENDPOINT_GUID)
string transport_type
The transport type (e.g. tcp or udp)
ACE_Reactor * get_reactor()
bool should_drop_message(const char *unsecure_topic_name)
void send_builtin_crypto_tokens(const DCPS::GUID_t &remoteId)
DCPS::RepoIdSet remote_expectant_opendds_associations_
DCPS::WeakRcHandle< ICE::Endpoint > get_ice_endpoint()
const TypeFlag IS_APPENDABLE
bool remote_durable() const
void type_lookup_init(DCPS::ReactorInterceptor_rch reactor_interceptor)
const ReturnCode_t RETCODE_OK
boolean is_write_protected
DDS::DomainId_t get_domain_id() const
boolean force_type_validation
void disassociate_volatile(DiscoveredParticipant &participant)
const BuiltinEndpointSet_t BUILTIN_PARTICIPANT_VOLATILE_MESSAGE_SECURE_READER
ReaderAssociationRecords reader_associated_records_
void remove_entities_belonging_to(Map &m, DCPS::GUID_t participant, bool subscription, OPENDDS_VECTOR(typename Map::mapped_type)&to_remove_from_bit)
CryptoKeyFactory_var get_crypto_key_factory() const
void remove_agent_info(const DCPS::GUID_t &a_local_guid)
const BuiltinEndpointSet_t BUILTIN_PARTICIPANT_STATELESS_MESSAGE_READER
void add_to_dynamic_type_map(const GUID_t &pub_id, const XTypes::TypeIdentifier &ti)
const DCPS::GUID_t & reader_id() const
DiscoveryReader_rch publications_reader_
bool use_xtypes_complete() const
void process_discovered_writer_data(DCPS::MessageId message_id, const DCPS::DiscoveredWriterData &wdata, const DCPS::GUID_t &guid, const XTypes::TypeInformation &type_info, bool have_ice_agent_info, const ICE::AgentInfo &ice_agent_info, const DDS::Security::EndpointSecurityInfo *security_info=NULL)
bool update_subscription_qos(const DCPS::GUID_t &subscriptionId, const DDS::DataReaderQos &qos, const DDS::SubscriberQos &subscriberQos)
DDS::InstanceHandle_t bit_ih_
const char * to_string(MessageId value)
const DCPS::NetworkAddress & local_address() const
void stun_server_address(const ACE_INET_Addr &address)
DCPS::RcHandle< DCPS::BitSubscriber > bit_subscriber_
Security::SecurityConfig_rch get_security_config() const
LocalPublicationMap local_publications_
void assign(EntityId_t &dest, const EntityId_t &src)
DCPS::LocatorSeq multicast_locators() const
void gen_continuation_point(XTypes::OctetSeq32 &cont_point) const
const EntityId_t ENTITYID_SPDP_RELIABLE_BUILTIN_PARTICIPANT_SECURE_WRITER
TopicNameMap topic_names_
bool assoc(const DCPS::AssociationData &subscription)
const OPENDDS_STRING local_data_type_name() const
SequenceNumber rpc_seqnum_minimal
Sequence number of the first request for remote minimal types.
void enable_transport_using_config(bool reliable, bool durable, const TransportConfig_rch &tc)
DDS::ReturnCode_t write_publication_data(const DCPS::GUID_t &rid, LocalPublication &pub, const DCPS::GUID_t &reader=GUID_UNKNOWN)
const BuiltinEndpointSet_t BUILTIN_ENDPOINT_TYPE_LOOKUP_REQUEST_DATA_READER
const EntityId_t ENTITYID_SEDP_BUILTIN_PUBLICATIONS_READER
OpenDDS::DCPS::GUID_t source_endpoint_guid
LivelinessQosPolicy liveliness
void request_ack(const DCPS::GUID_t &reader)
RcHandle< T > lock() const
TypeConsistencyEnforcementQosPolicyKind_t kind
virtual bool dispatch(EventBase_rch event)=0
DatawriterCryptoTokenSeqMap pending_remote_writer_crypto_tokens_
DataRepresentationIdSeq value
::DDS::PublisherQos pubQos
GUID_t make_id(const GuidPrefix_t &prefix, const EntityId_t &entity)
DatawriterCryptoHandleList get_all_remote_datawriters(const DCPS::GUID_t &prefix) const
const BuiltinEndpointSet_t BUILTIN_PARTICIPANT_MESSAGE_SECURE_READER
const string GMCLASSID_SECURITY_DATAWRITER_CRYPTO_TOKENS
UserDataQosPolicy user_data
TypeLookupRequestReader_rch type_lookup_request_reader_
void set_crypto_handles(DDS::Security::ParticipantCryptoHandle p, DDS::Security::NativeCryptoHandle e=DDS::HANDLE_NIL)
void signal_liveliness(DDS::LivelinessQosPolicyKind kind)
const EntityId_t ENTITYID_P2P_BUILTIN_PARTICIPANT_MESSAGE_WRITER
UserDataQosPolicy user_data
RTPS::SequenceNumber_t to_rtps_seqnum(const DCPS::SequenceNumber &opendds_seqnum)
boolean is_payload_protected
virtual void populate_transport_locator_sequence(DCPS::TransportLocatorSeq &tls, DiscoveredSubscriptionIter &iter, const DCPS::GUID_t &reader)
BuiltinAssociationRecords builtin_pending_records_
DeadlineQosPolicy deadline
DCPS::ReactorTask_rch reactor_task_
const EntityId_t ENTITYID_UNKNOWN
virtual bool shutting_down() const
virtual DDS::ReturnCode_t remove_subscription_i(const DCPS::GUID_t &subscriptionId, LocalSubscription &sub)
GroupDataQosPolicy group_data
void signal_liveliness_secure(DDS::LivelinessQosPolicyKind kind)
const DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)
void resend_user_crypto_tokens(const DCPS::GUID_t &remote_participant)
Defines the interface for Discovery callbacks into the Topic.
#define TheServiceParticipant
bool isWriter() const
Returns true if the GUID represents a writer entity.
const BuiltinEndpointSet_t SEDP_BUILTIN_SUBSCRIPTIONS_SECURE_WRITER
virtual ~TypeLookupRequestWriter()
EntityId_t counterpart_entity_id() const
void transport_assoc_done(int flags, const DCPS::GUID_t &remote)
const DDS::Security::EndpointSecurityAttributes & default_endpoint_security_attributes() const
TypeLookup_getTypes_In getTypes
void match_continue_security_enabled(const GUID_t &writer, const GUID_t &reader, bool call_writer, bool call_reader)
void data_received(DCPS::MessageId message_id, const DiscoveredPublication &wdata)
OpenDDS_Dcps_Export DDS::BuiltinTopicKey_t guid_to_bit_key(const GUID_t &guid)
void send_sample(DCPS::Message_Block_Ptr payload, size_t size, const DCPS::GUID_t &reader, DCPS::SequenceNumber &sequence, bool historic=false)
void update_locators(const ParticipantData_t &pdata)
::DDS::DataWriterQos writerQos
bool has_discovered_participant(const DCPS::GUID_t &guid) const
void create_datawriter_crypto_tokens(const DDS::Security::DatawriterCryptoHandle &dwch, const DDS::Security::DatareaderCryptoHandle &drch, DDS::Security::DatawriterCryptoTokenSeq &dwcts)
PartitionQosPolicy partition
bool update_publication_qos(const DCPS::GUID_t &publicationId, const DDS::DataWriterQos &qos, const DDS::PublisherQos &publisherQos)
The Internal API and Implementation of OpenDDS.
SecurityWriter_rch participant_stateless_message_writer_
void create_and_send_datawriter_crypto_tokens(const DDS::Security::DatawriterCryptoHandle &dwch, const DCPS::GUID_t &local_writer, const DDS::Security::DatareaderCryptoHandle &drch, const DCPS::GUID_t &remote_reader)
CryptoTokenSeq DatawriterCryptoTokenSeq
const octet ENTITYKIND_BUILTIN_READER_NO_KEY
boolean is_read_protected
bool remote_reliable() const
void cleanup_type_lookup_data(const DCPS::GUID_t &guid, const XTypes::TypeIdentifier &ti, bool secure)
DDS::ReturnCode_t write_participant_message(const ParticipantMessageData &pmd, const DCPS::GUID_t &reader, DCPS::SequenceNumber &sequence)
DDS::ReturnCode_t write_dcps_participant_secure(const Security::SPDPdiscoveredParticipantData &msg, const DCPS::GUID_t &part)
void cleanup_secure_writer(const GUID_t &publicationId)
DiscoveredParticipantMap participants_
const octet ENTITYKIND_BUILTIN_READER_WITH_KEY
TypeIdentifierWithDependencies minimal
void create_association_data_proto(DCPS::AssociationData &proto, const ParticipantData_t &pdata)
DCPS::SequenceNumber to_opendds_seqnum(const RTPS::SequenceNumber_t &rtps_seqnum)
PresentationQosPolicy presentation
void get_continuation_point(const GUID_t &guid, const XTypes::TypeIdentifier &remote_ti, XTypes::OctetSeq32 &cont_point) const
void erase_remote_datareader_crypto_handle(const DCPS::GUID_t &id)
ACE_CDR::ULong length() const
static const size_t serialized_size
ResourceLimitsQosPolicy resource_limits
DCPS::SequenceNumber local_participant_manual_liveliness_sn_
bool handle_datawriter_crypto_tokens(const DDS::Security::ParticipantVolatileMessageSecure &msg)
void use_rtps_relay_now(bool flag)
ParticipantBuiltinTopicData base
DDS::OctetArray16 address
void add_assoc_i(const DCPS::GUID_t &local_guid, const LocalPublication &lpub, const DCPS::GUID_t &remote_guid, const DiscoveredSubscription &dsub)
void remove_remote_crypto_handle(const DCPS::GUID_t &participant, const EntityId_t &entity)
const EntityId_t ENTITYID_SEDP_BUILTIN_SUBSCRIPTIONS_SECURE_READER
OpenDDS_Dcps_Export void primitive_serialized_size_boolean(const Encoding &encoding, size_t &size, size_t count=1)
void control_dropped(const DCPS::Message_Block_Ptr &sample, bool dropped_by_transport)
OpenDDS_Dcps_Export SecurityDebug security_debug
DDS::ReturnCode_t write_parameter_list(const ParameterList &plist, const DCPS::GUID_t &reader, DCPS::SequenceNumber &sequence)
virtual void update_locators(const GUID_t &, const TransportLocatorSeq &)
DiscoveredPublicationMap::iterator DiscoveredPublicationIter
bool update_topic_qos(const DCPS::GUID_t &topicId, const DDS::TopicQos &qos)
DCPS::MonotonicTime_t participant_discovered_at_
unsigned long transportContext
bool assoc(const DCPS::AssociationData &publication)
DDS::ReturnCode_t init_security(DDS::Security::IdentityHandle id_handle, DDS::Security::PermissionsHandle perm_handle, DDS::Security::ParticipantCryptoHandle crypto_handle)
static const ConnectionInfoFlags CONNINFO_MULTICAST
void set_crypto_key_factory(DDS::Security::CryptoKeyFactory_var ckf)
void cleanup_writer_association(DCPS::DataWriterCallbacks_wrch callbacks, const GUID_t &writer, const GUID_t &reader)
ICE::AgentInfo ice_agent_info
sequence< string > StringSeq
extensibility(MUTABLE) struct TypeLookup_getTypes_In
DCPS::SequenceNumber seq_
void start_ice(const DCPS::GUID_t &guid, const LocalPublication &lpub)
XTypes::TypeInformation type_info
void send_sample_i(DCPS::DataSampleElement *el)
void erase_local_datareader_crypto_handle(const DCPS::GUID_t &id)
unsigned long BuiltinEndpointSet_t
void handle_participant_data(DCPS::MessageId id, const ParticipantData_t &pdata, const DCPS::MonotonicTimePoint &now, const DCPS::SequenceNumber &seq, const ACE_INET_Addr &from, bool from_sedp)
Discovery Strategy class that implements RTPS discovery.
static const ConnectionInfoFlags CONNINFO_UNICAST
virtual ~TypeLookupReplyWriter()
DiscoveryWriter_rch publications_writer_
DDS::Security::ParticipantCryptoHandle crypto_handle() const
void erase_handle_registry(const DCPS::GUID_t &participant_id)
DDS::ReturnCode_t write_participant_message_data_secure(const DCPS::GUID_t &rid, DCPS::SequenceNumber &sn, const DCPS::GUID_t &reader=GUID_UNKNOWN)
DDS::Security::ParticipantSecurityAttributesMask security_attributes_to_bitmask(const DDS::Security::ParticipantSecurityAttributes &sec_attr)
const DCPS::EntityId_t PARTICIPANT_MESSAGE_DATA_KIND_MANUAL_LIVELINESS_UPDATE
const string GMCLASSID_SECURITY_PARTICIPANT_CRYPTO_TOKENS
void done(DDS::ReturnCode_t retcode)
LatencyBudgetQosPolicy latency_budget
const DCPS::GUID_t & writer_id() const
LocalPublicationMap::iterator LocalPublicationIter
const BuiltinEndpointSet_t BUILTIN_PARTICIPANT_MESSAGE_SECURE_WRITER
void rtps_relay_address(const ACE_INET_Addr &address)
DCPS::ContentFilterProperty_t filterProperties
void received_volatile_message_secure(DCPS::MessageId message_id, const DDS::Security::ParticipantVolatileMessageSecure &data)
void remove_subscription(const GUID_t &subscriptionId)
const ReturnCode_t RETCODE_BAD_PARAMETER
virtual bool deferrable() const
DCPS::LocatorSeq unicast_locators() const
DDS::SubscriptionBuiltinTopicData base
boolean ignore_string_bounds