This class implements methods that verify whether a qos is valid, consistent and changeable. More...
#include <Qos_Helper.h>
This class implements methods that verify whether a qos is valid, consistent and changeable.
valid - the values are in acceptable ranges without respect to any other values.
consistent - the values are consistent with each other. The spec sometimes calls this "compatible" but I this compatible should be reserved for matching QoS of subscriptions and publications. The spec is confusing in its inconsistency of the use of "compatible" and "consistent".
The qos supported in current implementation: Liveliness : kind = AUTOMATIC Reliability : kind = RELIABLE | BEST_EFFORT max_blocking_time History : kind = KEEP_ALL | KEEP_LAST depth > 1 RESOURCE_LIMITS : max_samples_per_instance
Other than these supported qos, any qos that is different from the initial value is invalid.
Definition at line 61 of file Qos_Helper.h.
ACE_INLINE bool OpenDDS::DCPS::Qos_Helper::changeable | ( | const DDS::DomainParticipantFactoryQos & | qos1, | |
const DDS::DomainParticipantFactoryQos & | qos2 | |||
) | [static] |
Definition at line 1319 of file Qos_Helper.inl.
References changeable(), and DDS::DomainParticipantFactoryQos::entity_factory.
01321 { 01322 return changeable(qos1.entity_factory, qos2.entity_factory); 01323 }
ACE_INLINE bool OpenDDS::DCPS::Qos_Helper::changeable | ( | const DDS::SubscriberQos & | qos1, | |
const DDS::SubscriberQos & | qos2 | |||
) | [static] |
Definition at line 1308 of file Qos_Helper.inl.
References changeable(), DDS::SubscriberQos::entity_factory, DDS::SubscriberQos::group_data, DDS::SubscriberQos::partition, and DDS::SubscriberQos::presentation.
01310 { 01311 return 01312 changeable(qos1.presentation, qos2.presentation) 01313 && changeable(qos1.partition, qos2.partition) 01314 && changeable(qos1.group_data, qos2.group_data) 01315 && changeable(qos1.entity_factory, qos2.entity_factory); 01316 }
ACE_INLINE bool OpenDDS::DCPS::Qos_Helper::changeable | ( | const DDS::DataReaderQos & | qos1, | |
const DDS::DataReaderQos & | qos2 | |||
) | [static] |
Definition at line 1289 of file Qos_Helper.inl.
References changeable(), DDS::DataReaderQos::deadline, DDS::DataReaderQos::destination_order, DDS::DataReaderQos::durability, DDS::DataReaderQos::history, DDS::DataReaderQos::latency_budget, DDS::DataReaderQos::liveliness, DDS::DataReaderQos::ownership, DDS::DataReaderQos::reader_data_lifecycle, DDS::DataReaderQos::reliability, DDS::DataReaderQos::resource_limits, DDS::DataReaderQos::time_based_filter, and DDS::DataReaderQos::user_data.
01291 { 01292 return 01293 changeable(qos1.durability, qos2.durability) 01294 && changeable(qos1.deadline, qos2.deadline) 01295 && changeable(qos1.latency_budget, qos2.latency_budget) 01296 && changeable(qos1.liveliness, qos2.liveliness) 01297 && changeable(qos1.reliability, qos2.reliability) 01298 && changeable(qos1.destination_order, qos2.destination_order) 01299 && changeable(qos1.history, qos2.history) 01300 && changeable(qos1.resource_limits, qos2.resource_limits) 01301 && changeable(qos1.user_data, qos2.user_data) 01302 && changeable(qos1.time_based_filter, qos2.time_based_filter) 01303 && changeable(qos1.reader_data_lifecycle, qos2.reader_data_lifecycle) 01304 && changeable(qos1.ownership, qos2.ownership); 01305 }
ACE_INLINE bool OpenDDS::DCPS::Qos_Helper::changeable | ( | const DDS::PublisherQos & | qos1, | |
const DDS::PublisherQos & | qos2 | |||
) | [static] |
Definition at line 1278 of file Qos_Helper.inl.
References changeable(), DDS::PublisherQos::entity_factory, DDS::PublisherQos::group_data, DDS::PublisherQos::partition, and DDS::PublisherQos::presentation.
01280 { 01281 return 01282 changeable(qos1.presentation, qos2.presentation) 01283 && changeable(qos1.partition, qos2.partition) 01284 && changeable(qos1.group_data, qos2.group_data) 01285 && changeable(qos1.entity_factory, qos2.entity_factory); 01286 }
ACE_INLINE bool OpenDDS::DCPS::Qos_Helper::changeable | ( | const DDS::DataWriterQos & | qos1, | |
const DDS::DataWriterQos & | qos2 | |||
) | [static] |
Definition at line 1253 of file Qos_Helper.inl.
References changeable(), DDS::DataWriterQos::deadline, DDS::DataWriterQos::destination_order, DDS::DataWriterQos::durability, DDS::DataWriterQos::durability_service, DDS::DataWriterQos::history, DDS::DataWriterQos::latency_budget, DDS::DataWriterQos::lifespan, DDS::DataWriterQos::liveliness, DDS::DataWriterQos::ownership, DDS::DataWriterQos::ownership_strength, DDS::DataWriterQos::resource_limits, DDS::DataWriterQos::transport_priority, DDS::DataWriterQos::user_data, and DDS::DataWriterQos::writer_data_lifecycle.
01255 { 01256 return 01257 changeable(qos1.durability, qos2.durability) 01258 #ifndef OPENDDS_NO_PERSISTENCE_PROFILE 01259 && changeable(qos1.durability_service, qos2.durability_service) 01260 #endif 01261 && changeable(qos1.deadline, qos2.deadline) 01262 && changeable(qos1.latency_budget, qos2.latency_budget) 01263 && changeable(qos1.liveliness, qos2.liveliness) 01264 && changeable(qos1.destination_order, qos2.destination_order) 01265 && changeable(qos1.history, qos2.history) 01266 && changeable(qos1.resource_limits, qos2.resource_limits) 01267 && changeable(qos1.transport_priority, qos2.transport_priority) 01268 && changeable(qos1.lifespan, qos2.lifespan) 01269 && changeable(qos1.user_data, qos2.user_data) 01270 && changeable(qos1.ownership, qos2.ownership) 01271 #ifndef OPENDDS_NO_OWNERSHIP_KIND_EXCLUSIVE 01272 && changeable(qos1.ownership_strength, qos2.ownership_strength) 01273 #endif 01274 && changeable(qos1.writer_data_lifecycle, qos2.writer_data_lifecycle); 01275 }
ACE_INLINE bool OpenDDS::DCPS::Qos_Helper::changeable | ( | const DDS::TopicQos & | qos1, | |
const DDS::TopicQos & | qos2 | |||
) | [static] |
Definition at line 1232 of file Qos_Helper.inl.
References changeable(), DDS::TopicQos::deadline, DDS::TopicQos::destination_order, DDS::TopicQos::durability, DDS::TopicQos::durability_service, DDS::TopicQos::history, DDS::TopicQos::latency_budget, DDS::TopicQos::lifespan, DDS::TopicQos::liveliness, DDS::TopicQos::ownership, DDS::TopicQos::resource_limits, DDS::TopicQos::topic_data, and DDS::TopicQos::transport_priority.
01234 { 01235 return 01236 changeable(qos1.topic_data, qos2.topic_data) 01237 && changeable(qos1.durability, qos2.durability) 01238 #ifndef OPENDDS_NO_PERSISTENCE_PROFILE 01239 && changeable(qos1.durability_service, qos2.durability_service) 01240 #endif 01241 && changeable(qos1.deadline, qos2.deadline) 01242 && changeable(qos1.latency_budget, qos2.latency_budget) 01243 && changeable(qos1.liveliness, qos2.liveliness) 01244 && changeable(qos1.destination_order, qos2.destination_order) 01245 && changeable(qos1.history, qos2.history) 01246 && changeable(qos1.resource_limits, qos2.resource_limits) 01247 && changeable(qos1.transport_priority, qos2.transport_priority) 01248 && changeable(qos1.lifespan, qos2.lifespan) 01249 && changeable(qos1.ownership, qos2.ownership); 01250 }
ACE_INLINE bool OpenDDS::DCPS::Qos_Helper::changeable | ( | const DDS::DomainParticipantQos & | qos1, | |
const DDS::DomainParticipantQos & | qos2 | |||
) | [static] |
Definition at line 1223 of file Qos_Helper.inl.
References changeable(), DDS::DomainParticipantQos::entity_factory, and DDS::DomainParticipantQos::user_data.
01225 { 01226 return 01227 changeable(qos1.user_data, qos2.user_data) 01228 && changeable(qos1.entity_factory, qos2.entity_factory); 01229 }
ACE_INLINE bool OpenDDS::DCPS::Qos_Helper::changeable | ( | const DDS::ReaderDataLifecycleQosPolicy & | qos1, | |
const DDS::ReaderDataLifecycleQosPolicy & | qos2 | |||
) | [static] |
Definition at line 1215 of file Qos_Helper.inl.
ACE_INLINE bool OpenDDS::DCPS::Qos_Helper::changeable | ( | const DDS::WriterDataLifecycleQosPolicy & | qos1, | |
const DDS::WriterDataLifecycleQosPolicy & | qos2 | |||
) | [static] |
Definition at line 1207 of file Qos_Helper.inl.
ACE_INLINE bool OpenDDS::DCPS::Qos_Helper::changeable | ( | const DDS::EntityFactoryQosPolicy & | qos1, | |
const DDS::EntityFactoryQosPolicy & | qos2 | |||
) | [static] |
Definition at line 1199 of file Qos_Helper.inl.
ACE_INLINE bool OpenDDS::DCPS::Qos_Helper::changeable | ( | const DDS::ResourceLimitsQosPolicy & | qos1, | |
const DDS::ResourceLimitsQosPolicy & | qos2 | |||
) | [static] |
Definition at line 1192 of file Qos_Helper.inl.
ACE_INLINE bool OpenDDS::DCPS::Qos_Helper::changeable | ( | const DDS::HistoryQosPolicy & | qos1, | |
const DDS::HistoryQosPolicy & | qos2 | |||
) | [static] |
Definition at line 1185 of file Qos_Helper.inl.
ACE_INLINE bool OpenDDS::DCPS::Qos_Helper::changeable | ( | const DDS::DestinationOrderQosPolicy & | qos1, | |
const DDS::DestinationOrderQosPolicy & | qos2 | |||
) | [static] |
Definition at line 1178 of file Qos_Helper.inl.
ACE_INLINE bool OpenDDS::DCPS::Qos_Helper::changeable | ( | const DDS::ReliabilityQosPolicy & | qos1, | |
const DDS::ReliabilityQosPolicy & | qos2 | |||
) | [static] |
Definition at line 1171 of file Qos_Helper.inl.
ACE_INLINE bool OpenDDS::DCPS::Qos_Helper::changeable | ( | const DDS::PartitionQosPolicy & | qos1, | |
const DDS::PartitionQosPolicy & | qos2 | |||
) | [static] |
Definition at line 1164 of file Qos_Helper.inl.
ACE_INLINE bool OpenDDS::DCPS::Qos_Helper::changeable | ( | const DDS::TimeBasedFilterQosPolicy & | qos1, | |
const DDS::TimeBasedFilterQosPolicy & | qos2 | |||
) | [static] |
Definition at line 1155 of file Qos_Helper.inl.
ACE_INLINE bool OpenDDS::DCPS::Qos_Helper::changeable | ( | const DDS::LivelinessQosPolicy & | qos1, | |
const DDS::LivelinessQosPolicy & | qos2 | |||
) | [static] |
Definition at line 1148 of file Qos_Helper.inl.
ACE_INLINE bool OpenDDS::DCPS::Qos_Helper::changeable | ( | const DDS::OwnershipStrengthQosPolicy & | qos1, | |
const DDS::OwnershipStrengthQosPolicy & | qos2 | |||
) | [static] |
Definition at line 1139 of file Qos_Helper.inl.
ACE_INLINE bool OpenDDS::DCPS::Qos_Helper::changeable | ( | const DDS::OwnershipQosPolicy & | qos1, | |
const DDS::OwnershipQosPolicy & | qos2 | |||
) | [static] |
Definition at line 1130 of file Qos_Helper.inl.
ACE_INLINE bool OpenDDS::DCPS::Qos_Helper::changeable | ( | const DDS::LatencyBudgetQosPolicy & | qos1, | |
const DDS::LatencyBudgetQosPolicy & | qos2 | |||
) | [static] |
Definition at line 1122 of file Qos_Helper.inl.
ACE_INLINE bool OpenDDS::DCPS::Qos_Helper::changeable | ( | const DDS::DeadlineQosPolicy & | qos1, | |
const DDS::DeadlineQosPolicy & | qos2 | |||
) | [static] |
TBD: These QoS are not supported currently, they are changeable, but need a compatibility check between the publisher and subscriber ends when changing the QoS.
Definition at line 1115 of file Qos_Helper.inl.
ACE_INLINE bool OpenDDS::DCPS::Qos_Helper::changeable | ( | const DDS::PresentationQosPolicy & | qos1, | |
const DDS::PresentationQosPolicy & | qos2 | |||
) | [static] |
Definition at line 1097 of file Qos_Helper.inl.
ACE_INLINE bool OpenDDS::DCPS::Qos_Helper::changeable | ( | const DDS::DurabilityServiceQosPolicy & | qos1, | |
const DDS::DurabilityServiceQosPolicy & | qos2 | |||
) | [static] |
Definition at line 1089 of file Qos_Helper.inl.
ACE_INLINE bool OpenDDS::DCPS::Qos_Helper::changeable | ( | const DDS::DurabilityQosPolicy & | qos1, | |
const DDS::DurabilityQosPolicy & | qos2 | |||
) | [static] |
Definition at line 1080 of file Qos_Helper.inl.
ACE_INLINE bool OpenDDS::DCPS::Qos_Helper::changeable | ( | const DDS::LifespanQosPolicy & | qos1, | |
const DDS::LifespanQosPolicy & | qos2 | |||
) | [static] |
Definition at line 1073 of file Qos_Helper.inl.
ACE_INLINE bool OpenDDS::DCPS::Qos_Helper::changeable | ( | const DDS::TransportPriorityQosPolicy & | qos1, | |
const DDS::TransportPriorityQosPolicy & | qos2 | |||
) | [static] |
Definition at line 1059 of file Qos_Helper.inl.
ACE_INLINE bool OpenDDS::DCPS::Qos_Helper::changeable | ( | const DDS::GroupDataQosPolicy & | qos1, | |
const DDS::GroupDataQosPolicy & | qos2 | |||
) | [static] |
Definition at line 1052 of file Qos_Helper.inl.
ACE_INLINE bool OpenDDS::DCPS::Qos_Helper::changeable | ( | const DDS::TopicDataQosPolicy & | qos1, | |
const DDS::TopicDataQosPolicy & | qos2 | |||
) | [static] |
Definition at line 1045 of file Qos_Helper.inl.
ACE_INLINE bool OpenDDS::DCPS::Qos_Helper::changeable | ( | const DDS::UserDataQosPolicy & | qos1, | |
const DDS::UserDataQosPolicy & | qos2 | |||
) | [static] |
Definition at line 1038 of file Qos_Helper.inl.
Referenced by changeable(), OpenDDS::DCPS::TopicImpl::set_qos(), OpenDDS::DCPS::SubscriberImpl::set_qos(), OpenDDS::DCPS::ReplayerImpl::set_qos(), OpenDDS::DCPS::RecorderImpl::set_qos(), OpenDDS::DCPS::PublisherImpl::set_qos(), OpenDDS::DCPS::DomainParticipantImpl::set_qos(), OpenDDS::DCPS::DomainParticipantFactoryImpl::set_qos(), OpenDDS::DCPS::DataWriterImpl::set_qos(), and OpenDDS::DCPS::DataReaderImpl::set_qos().
ACE_INLINE bool OpenDDS::DCPS::Qos_Helper::consistent | ( | const DDS::DomainParticipantFactoryQos & | qos | ) | [static] |
Definition at line 659 of file Qos_Helper.inl.
ACE_INLINE bool OpenDDS::DCPS::Qos_Helper::consistent | ( | const DDS::SubscriberQos & | qos | ) | [static] |
Definition at line 652 of file Qos_Helper.inl.
ACE_INLINE bool OpenDDS::DCPS::Qos_Helper::consistent | ( | const DDS::DataReaderQos & | qos | ) | [static] |
Definition at line 643 of file Qos_Helper.inl.
References consistent(), DDS::DataReaderQos::deadline, DDS::DataReaderQos::history, DDS::DataReaderQos::resource_limits, and DDS::DataReaderQos::time_based_filter.
00644 { 00645 return 00646 consistent(qos.deadline, qos.time_based_filter) && 00647 consistent(qos.resource_limits, qos.history); 00648 }
ACE_INLINE bool OpenDDS::DCPS::Qos_Helper::consistent | ( | const DDS::PublisherQos & | qos | ) | [static] |
Definition at line 636 of file Qos_Helper.inl.
ACE_INLINE bool OpenDDS::DCPS::Qos_Helper::consistent | ( | const DDS::DataWriterQos & | qos | ) | [static] |
Definition at line 608 of file Qos_Helper.inl.
References consistent(), DDS::DataWriterQos::durability_service, DDS::DataWriterQos::history, and DDS::DataWriterQos::resource_limits.
00609 { 00610 // Leverage existing validation functions for related QoS 00611 // policies. 00612 00613 #ifndef OPENDDS_NO_PERSISTENCE_PROFILE 00614 DDS::HistoryQosPolicy const ds_history = { 00615 qos.durability_service.history_kind, 00616 qos.durability_service.history_depth 00617 }; 00618 00619 DDS::ResourceLimitsQosPolicy const ds_resource_limits = { 00620 qos.durability_service.max_samples, 00621 qos.durability_service.max_instances, 00622 qos.durability_service.max_samples_per_instance 00623 }; 00624 00625 return 00626 consistent(qos.resource_limits, qos.history) 00627 && consistent(ds_resource_limits, ds_history); 00628 #else 00629 ACE_UNUSED_ARG(qos); 00630 return true; 00631 #endif 00632 }
ACE_INLINE bool OpenDDS::DCPS::Qos_Helper::consistent | ( | const DDS::TopicQos & | qos | ) | [static] |
Definition at line 580 of file Qos_Helper.inl.
References consistent(), DDS::TopicQos::durability_service, DDS::TopicQos::history, and DDS::TopicQos::resource_limits.
00581 { 00582 // Leverage existing validation functions for related QoS 00583 // policies. 00584 00585 #ifndef OPENDDS_NO_PERSISTENCE_PROFILE 00586 DDS::HistoryQosPolicy const ds_history = { 00587 qos.durability_service.history_kind, 00588 qos.durability_service.history_depth 00589 }; 00590 00591 DDS::ResourceLimitsQosPolicy const ds_resource_limits = { 00592 qos.durability_service.max_samples, 00593 qos.durability_service.max_instances, 00594 qos.durability_service.max_samples_per_instance 00595 }; 00596 00597 return 00598 consistent(qos.resource_limits, qos.history) 00599 && consistent(ds_resource_limits, ds_history); 00600 #else 00601 ACE_UNUSED_ARG(qos); 00602 return true; 00603 #endif 00604 }
ACE_INLINE bool OpenDDS::DCPS::Qos_Helper::consistent | ( | const DDS::DomainParticipantQos & | qos | ) | [static] |
Definition at line 574 of file Qos_Helper.inl.
ACE_INLINE bool OpenDDS::DCPS::Qos_Helper::consistent | ( | const DDS::DeadlineQosPolicy & | deadline, | |
const DDS::TimeBasedFilterQosPolicy & | time_based_filter | |||
) | [static] |
Definition at line 567 of file Qos_Helper.inl.
References DDS::TimeBasedFilterQosPolicy::minimum_separation, and DDS::DeadlineQosPolicy::period.
00569 { 00570 return time_based_filter.minimum_separation <= deadline.period; 00571 }
ACE_INLINE bool OpenDDS::DCPS::Qos_Helper::consistent | ( | const DDS::ResourceLimitsQosPolicy & | resource_limits, | |
const DDS::HistoryQosPolicy & | history | |||
) | [static] |
Definition at line 550 of file Qos_Helper.inl.
References DDS::HistoryQosPolicy::depth, DDS::LENGTH_UNLIMITED, DDS::ResourceLimitsQosPolicy::max_samples, max_samples, and DDS::ResourceLimitsQosPolicy::max_samples_per_instance.
Referenced by consistent(), copy_from_topic_qos(), OpenDDS::DCPS::DomainParticipantFactoryImpl::create_participant(), OpenDDS::DCPS::DomainParticipantImpl::create_topic_i(), OpenDDS::DCPS::SubscriberImpl::set_default_datareader_qos(), OpenDDS::DCPS::PublisherImpl::set_default_datawriter_qos(), OpenDDS::DCPS::DomainParticipantFactoryImpl::set_default_participant_qos(), OpenDDS::DCPS::DomainParticipantImpl::set_default_publisher_qos(), OpenDDS::DCPS::DomainParticipantImpl::set_default_subscriber_qos(), OpenDDS::DCPS::DomainParticipantImpl::set_default_topic_qos(), OpenDDS::DCPS::TopicImpl::set_qos(), OpenDDS::DCPS::SubscriberImpl::set_qos(), OpenDDS::DCPS::ReplayerImpl::set_qos(), OpenDDS::DCPS::RecorderImpl::set_qos(), OpenDDS::DCPS::PublisherImpl::set_qos(), OpenDDS::DCPS::DomainParticipantImpl::set_qos(), OpenDDS::DCPS::DomainParticipantFactoryImpl::set_qos(), OpenDDS::DCPS::DataWriterImpl::set_qos(), OpenDDS::DCPS::DataReaderImpl::set_qos(), OpenDDS::DCPS::SubscriberImpl::validate_datareader_qos(), OpenDDS::DCPS::PublisherImpl::validate_datawriter_qos(), OpenDDS::DCPS::DomainParticipantImpl::validate_publisher_qos(), and OpenDDS::DCPS::DomainParticipantImpl::validate_subscriber_qos().
00553 { 00554 CORBA::Long const max_samples_per_instance = 00555 resource_limits.max_samples_per_instance; 00556 CORBA::Long const max_samples = resource_limits.max_samples; 00557 00558 return 00559 (max_samples_per_instance == DDS::LENGTH_UNLIMITED 00560 || (max_samples_per_instance >= history.depth 00561 && (max_samples == DDS::LENGTH_UNLIMITED 00562 || max_samples >= max_samples_per_instance))); 00563 }
ACE_INLINE bool OpenDDS::DCPS::Qos_Helper::copy_from_topic_qos | ( | DDS::DataWriterQos & | a_datareader_qos, | |
const DDS::TopicQos & | a_topic_qos | |||
) | [static] |
Definition at line 1347 of file Qos_Helper.inl.
References consistent(), DDS::TopicQos::deadline, DDS::DataWriterQos::deadline, DDS::TopicQos::destination_order, DDS::DataWriterQos::destination_order, DDS::TopicQos::durability, DDS::DataWriterQos::durability, DDS::TopicQos::durability_service, DDS::DataWriterQos::durability_service, DDS::TopicQos::history, DDS::DataWriterQos::history, DDS::TopicQos::latency_budget, DDS::DataWriterQos::latency_budget, DDS::TopicQos::lifespan, DDS::DataWriterQos::lifespan, DDS::TopicQos::liveliness, DDS::DataWriterQos::liveliness, DDS::TopicQos::ownership, DDS::DataWriterQos::ownership, DDS::TopicQos::reliability, DDS::DataWriterQos::reliability, DDS::TopicQos::resource_limits, DDS::DataWriterQos::resource_limits, DDS::TopicQos::transport_priority, DDS::DataWriterQos::transport_priority, and valid().
01349 { 01350 if (!Qos_Helper::valid(a_topic_qos) || !Qos_Helper::consistent(a_topic_qos)) { 01351 return false; 01352 } 01353 // Some members in the DataWriterQos are not contained 01354 // in the TopicQos. The caller needs initialize them. 01355 a_datawriter_qos.durability = a_topic_qos.durability; 01356 #ifndef OPENDDS_NO_PERSISTENCE_PROFILE 01357 a_datawriter_qos.durability_service = a_topic_qos.durability_service; 01358 #endif 01359 a_datawriter_qos.deadline = a_topic_qos.deadline; 01360 a_datawriter_qos.latency_budget = a_topic_qos.latency_budget; 01361 a_datawriter_qos.liveliness = a_topic_qos.liveliness; 01362 a_datawriter_qos.reliability = a_topic_qos.reliability; 01363 a_datawriter_qos.destination_order = a_topic_qos.destination_order; 01364 a_datawriter_qos.history = a_topic_qos.history; 01365 a_datawriter_qos.resource_limits = a_topic_qos.resource_limits; 01366 a_datawriter_qos.transport_priority = a_topic_qos.transport_priority; 01367 a_datawriter_qos.lifespan = a_topic_qos.lifespan; 01368 a_datawriter_qos.ownership = a_topic_qos.ownership; 01369 return true; 01370 }
ACE_INLINE bool OpenDDS::DCPS::Qos_Helper::copy_from_topic_qos | ( | DDS::DataReaderQos & | a_datareader_qos, | |
const DDS::TopicQos & | a_topic_qos | |||
) | [static] |
Definition at line 1326 of file Qos_Helper.inl.
References consistent(), DDS::TopicQos::deadline, DDS::DataReaderQos::deadline, DDS::TopicQos::destination_order, DDS::DataReaderQos::destination_order, DDS::TopicQos::durability, DDS::DataReaderQos::durability, DDS::TopicQos::history, DDS::DataReaderQos::history, DDS::TopicQos::latency_budget, DDS::DataReaderQos::latency_budget, DDS::TopicQos::liveliness, DDS::DataReaderQos::liveliness, DDS::TopicQos::ownership, DDS::DataReaderQos::ownership, DDS::TopicQos::reliability, DDS::DataReaderQos::reliability, DDS::TopicQos::resource_limits, DDS::DataReaderQos::resource_limits, and valid().
Referenced by OpenDDS::DCPS::SubscriberImpl::copy_from_topic_qos(), and OpenDDS::DCPS::PublisherImpl::copy_from_topic_qos().
01328 { 01329 if (!Qos_Helper::valid(a_topic_qos) || !Qos_Helper::consistent(a_topic_qos)) { 01330 return false; 01331 } 01332 // the caller can get the default before calling this 01333 // method if it wants to. 01334 a_datareader_qos.durability = a_topic_qos.durability; 01335 a_datareader_qos.deadline = a_topic_qos.deadline; 01336 a_datareader_qos.latency_budget = a_topic_qos.latency_budget; 01337 a_datareader_qos.liveliness = a_topic_qos.liveliness; 01338 a_datareader_qos.reliability = a_topic_qos.reliability; 01339 a_datareader_qos.destination_order = a_topic_qos.destination_order; 01340 a_datareader_qos.history = a_topic_qos.history; 01341 a_datareader_qos.resource_limits = a_topic_qos.resource_limits; 01342 a_datareader_qos.ownership = a_topic_qos.ownership; 01343 return true; 01344 }
ACE_INLINE bool OpenDDS::DCPS::Qos_Helper::valid | ( | const DDS::DomainParticipantFactoryQos & | qos | ) | [static] |
Definition at line 1032 of file Qos_Helper.inl.
References DDS::DomainParticipantFactoryQos::entity_factory, and valid().
01033 { 01034 return valid(qos.entity_factory); 01035 }
ACE_INLINE bool OpenDDS::DCPS::Qos_Helper::valid | ( | const DDS::SubscriberQos & | qos | ) | [static] |
Definition at line 1022 of file Qos_Helper.inl.
References DDS::SubscriberQos::entity_factory, DDS::SubscriberQos::group_data, DDS::SubscriberQos::partition, DDS::SubscriberQos::presentation, and valid().
01023 { 01024 return 01025 valid(qos.presentation) 01026 && valid(qos.partition) 01027 && valid(qos.group_data) 01028 && valid(qos.entity_factory); 01029 }
ACE_INLINE bool OpenDDS::DCPS::Qos_Helper::valid | ( | const DDS::DataReaderQos & | qos | ) | [static] |
Definition at line 1004 of file Qos_Helper.inl.
References DDS::DataReaderQos::deadline, DDS::DataReaderQos::destination_order, DDS::DataReaderQos::durability, DDS::DataReaderQos::history, DDS::DataReaderQos::latency_budget, DDS::DataReaderQos::liveliness, DDS::DataReaderQos::ownership, DDS::DataReaderQos::reader_data_lifecycle, DDS::DataReaderQos::reliability, DDS::DataReaderQos::resource_limits, DDS::DataReaderQos::time_based_filter, DDS::DataReaderQos::user_data, and valid().
01005 { 01006 return 01007 valid(qos.durability) 01008 && valid(qos.deadline) 01009 && valid(qos.latency_budget) 01010 && valid(qos.liveliness) 01011 && valid(qos.reliability) 01012 && valid(qos.destination_order) 01013 && valid(qos.history) 01014 && valid(qos.resource_limits) 01015 && valid(qos.user_data) 01016 && valid(qos.time_based_filter) 01017 && valid(qos.reader_data_lifecycle) 01018 && valid(qos.ownership); 01019 }
ACE_INLINE bool OpenDDS::DCPS::Qos_Helper::valid | ( | const DDS::PublisherQos & | qos | ) | [static] |
Definition at line 994 of file Qos_Helper.inl.
References DDS::PublisherQos::entity_factory, DDS::PublisherQos::group_data, DDS::PublisherQos::partition, DDS::PublisherQos::presentation, and valid().
00995 { 00996 return 00997 valid(qos.presentation) 00998 && valid(qos.partition) 00999 && valid(qos.group_data) 01000 && valid(qos.entity_factory); 01001 }
ACE_INLINE bool OpenDDS::DCPS::Qos_Helper::valid | ( | const DDS::DataWriterQos & | qos | ) | [static] |
Definition at line 902 of file Qos_Helper.inl.
References ACE_TEXT(), DDS::DataWriterQos::deadline, DDS::DataWriterQos::destination_order, DDS::DataWriterQos::durability, DDS::DataWriterQos::durability_service, DDS::DataWriterQos::history, DDS::DataWriterQos::latency_budget, DDS::DataWriterQos::lifespan, DDS::DataWriterQos::liveliness, LM_ERROR, DDS::DataWriterQos::ownership, DDS::DataWriterQos::ownership_strength, DDS::DataWriterQos::resource_limits, DDS::DataWriterQos::transport_priority, DDS::DataWriterQos::user_data, valid(), and DDS::DataWriterQos::writer_data_lifecycle.
00903 { 00904 if (!valid(qos.durability)) 00905 ACE_ERROR_RETURN ((LM_ERROR, 00906 ACE_TEXT("(%P|%t) ERROR: ") 00907 ACE_TEXT("Qos_Helper::valid::DataWriterQos, ") 00908 ACE_TEXT("invalid durability qos.\n")), false); 00909 00910 #ifndef OPENDDS_NO_PERSISTENCE_PROFILE 00911 if (!valid(qos.durability_service)) 00912 ACE_ERROR_RETURN ((LM_ERROR, 00913 ACE_TEXT("(%P|%t) ERROR: ") 00914 ACE_TEXT("Qos_Helper::valid::DataWriterQos, ") 00915 ACE_TEXT("invalid durability_service qos.\n")), false); 00916 #endif 00917 if (!valid(qos.deadline)) 00918 ACE_ERROR_RETURN ((LM_ERROR, 00919 ACE_TEXT("(%P|%t) ERROR: ") 00920 ACE_TEXT("Qos_Helper::valid::DataWriterQos, ") 00921 ACE_TEXT("invalid deadline qos.\n")), false); 00922 00923 if (!valid(qos.latency_budget)) 00924 ACE_ERROR_RETURN ((LM_ERROR, 00925 ACE_TEXT("(%P|%t) ERROR: ") 00926 ACE_TEXT("Qos_Helper::valid::DataWriterQos, ") 00927 ACE_TEXT("invalid latency_budget qos.\n")), false); 00928 00929 if (!valid(qos.liveliness)) 00930 ACE_ERROR_RETURN ((LM_ERROR, 00931 ACE_TEXT("(%P|%t) ERROR: ") 00932 ACE_TEXT("Qos_Helper::valid::DataWriterQos, ") 00933 ACE_TEXT("invalid liveliness qos.\n")), false); 00934 00935 if (!valid(qos.destination_order)) 00936 ACE_ERROR_RETURN ((LM_ERROR, 00937 ACE_TEXT("(%P|%t) ERROR: ") 00938 ACE_TEXT("Qos_Helper::valid::DataWriterQos, ") 00939 ACE_TEXT("invalid destination_order qos.\n")), false); 00940 00941 if (!valid(qos.history)) 00942 ACE_ERROR_RETURN ((LM_ERROR, 00943 ACE_TEXT("(%P|%t) ERROR: ") 00944 ACE_TEXT("Qos_Helper::valid::DataWriterQos, ") 00945 ACE_TEXT("invalid history qos.\n")), false); 00946 00947 if (!valid(qos.resource_limits)) 00948 ACE_ERROR_RETURN ((LM_ERROR, 00949 ACE_TEXT("(%P|%t) ERROR: ") 00950 ACE_TEXT("Qos_Helper::valid::DataWriterQos, ") 00951 ACE_TEXT("invalid resource_limits qos.\n")), false); 00952 00953 if (!valid(qos.transport_priority)) 00954 ACE_ERROR_RETURN ((LM_ERROR, 00955 ACE_TEXT("(%P|%t) ERROR: ") 00956 ACE_TEXT("Qos_Helper::valid::DataWriterQos, ") 00957 ACE_TEXT("invalid transport_priority qos.\n")), false); 00958 00959 if (!valid(qos.lifespan)) 00960 ACE_ERROR_RETURN ((LM_ERROR, 00961 ACE_TEXT("(%P|%t) ERROR: ") 00962 ACE_TEXT("Qos_Helper::valid::DataWriterQos, ") 00963 ACE_TEXT("invalid lifespan qos.\n")), false); 00964 00965 if (!valid(qos.user_data)) 00966 ACE_ERROR_RETURN ((LM_ERROR, 00967 ACE_TEXT("(%P|%t) ERROR: ") 00968 ACE_TEXT("Qos_Helper::valid::DataWriterQos, ") 00969 ACE_TEXT("invalid user_data qos.\n")), false); 00970 00971 if (!valid(qos.ownership)) 00972 ACE_ERROR_RETURN ((LM_ERROR, 00973 ACE_TEXT("(%P|%t) ERROR: ") 00974 ACE_TEXT("Qos_Helper::valid::DataWriterQos, ") 00975 ACE_TEXT("invalid ownership qos.\n")), false); 00976 00977 #ifndef OPENDDS_NO_OWNERSHIP_KIND_EXCLUSIVE 00978 if (!valid(qos.ownership_strength)) 00979 ACE_ERROR_RETURN ((LM_ERROR, 00980 ACE_TEXT("(%P|%t) ERROR: ") 00981 ACE_TEXT("Qos_Helper::valid::DataWriterQos, ") 00982 ACE_TEXT("invalid ownership_strength qos.\n")), false); 00983 #endif 00984 if (!valid(qos.writer_data_lifecycle)) 00985 ACE_ERROR_RETURN ((LM_ERROR, 00986 ACE_TEXT("(%P|%t) ERROR: ") 00987 ACE_TEXT("Qos_Helper::valid::DataWriterQos, ") 00988 ACE_TEXT("invalid writer_data_lifecycle qos.\n")), false); 00989 00990 return true; 00991 }
ACE_INLINE bool OpenDDS::DCPS::Qos_Helper::valid | ( | const DDS::TopicQos & | qos | ) | [static] |
Definition at line 882 of file Qos_Helper.inl.
References DDS::TopicQos::deadline, DDS::TopicQos::destination_order, DDS::TopicQos::durability, DDS::TopicQos::durability_service, DDS::TopicQos::history, DDS::TopicQos::latency_budget, DDS::TopicQos::lifespan, DDS::TopicQos::liveliness, DDS::TopicQos::ownership, DDS::TopicQos::resource_limits, DDS::TopicQos::topic_data, DDS::TopicQos::transport_priority, and valid().
00883 { 00884 return 00885 valid(qos.topic_data) 00886 && valid(qos.durability) 00887 #ifndef OPENDDS_NO_PERSISTENCE_PROFILE 00888 && valid(qos.durability_service) 00889 #endif 00890 && valid(qos.deadline) 00891 && valid(qos.latency_budget) 00892 && valid(qos.liveliness) 00893 && valid(qos.destination_order) 00894 && valid(qos.history) 00895 && valid(qos.resource_limits) 00896 && valid(qos.transport_priority) 00897 && valid(qos.lifespan) 00898 && valid(qos.ownership); 00899 }
ACE_INLINE bool OpenDDS::DCPS::Qos_Helper::valid | ( | const DDS::DomainParticipantQos & | qos | ) | [static] |
Definition at line 876 of file Qos_Helper.inl.
References DDS::DomainParticipantQos::entity_factory, DDS::DomainParticipantQos::property, DDS::DomainParticipantQos::user_data, and valid().
00877 { 00878 return valid(qos.user_data) && valid(qos.entity_factory) && valid(qos.property); 00879 }
ACE_INLINE bool OpenDDS::DCPS::Qos_Helper::valid | ( | const DDS::ReaderDataLifecycleQosPolicy & | qos | ) | [static] |
Definition at line 870 of file Qos_Helper.inl.
ACE_INLINE bool OpenDDS::DCPS::Qos_Helper::valid | ( | const DDS::WriterDataLifecycleQosPolicy & | qos | ) | [static] |
Definition at line 864 of file Qos_Helper.inl.
ACE_INLINE bool OpenDDS::DCPS::Qos_Helper::valid | ( | const DDS::PropertyQosPolicy & | qos | ) | [static] |
Definition at line 858 of file Qos_Helper.inl.
ACE_INLINE bool OpenDDS::DCPS::Qos_Helper::valid | ( | const DDS::EntityFactoryQosPolicy & | qos | ) | [static] |
Definition at line 850 of file Qos_Helper.inl.
References DDS::EntityFactoryQosPolicy::autoenable_created_entities.
00851 { 00852 // see Marked_Default_Qos::marked_default_DomainParticipantQos() 00853 const void* const mem = &qos.autoenable_created_entities; 00854 return *static_cast<const char*>(mem) != 3; 00855 }
ACE_INLINE bool OpenDDS::DCPS::Qos_Helper::valid | ( | const DDS::ResourceLimitsQosPolicy & | qos | ) | [static] |
Definition at line 813 of file Qos_Helper.inl.
References DDS::LENGTH_UNLIMITED, DDS::ResourceLimitsQosPolicy::max_instances, DDS::ResourceLimitsQosPolicy::max_samples, and DDS::ResourceLimitsQosPolicy::max_samples_per_instance.
00814 { 00815 return 00816 (qos.max_samples == DDS::LENGTH_UNLIMITED 00817 || qos.max_samples > 0) 00818 && (qos.max_instances == DDS::LENGTH_UNLIMITED 00819 || qos.max_instances > 0) 00820 && (qos.max_samples_per_instance == DDS::LENGTH_UNLIMITED 00821 || qos.max_samples_per_instance > 0); 00822 }
ACE_INLINE bool OpenDDS::DCPS::Qos_Helper::valid | ( | const DDS::HistoryQosPolicy & | qos | ) | [static] |
Definition at line 802 of file Qos_Helper.inl.
References DDS::HistoryQosPolicy::depth, DDS::KEEP_ALL_HISTORY_QOS, DDS::KEEP_LAST_HISTORY_QOS, DDS::HistoryQosPolicy::kind, and DDS::LENGTH_UNLIMITED.
00803 { 00804 return 00805 (qos.kind == DDS::KEEP_LAST_HISTORY_QOS 00806 || qos.kind == DDS::KEEP_ALL_HISTORY_QOS) 00807 && (qos.depth == DDS::LENGTH_UNLIMITED 00808 || qos.depth > 0); 00809 }
ACE_INLINE bool OpenDDS::DCPS::Qos_Helper::valid | ( | const DDS::DestinationOrderQosPolicy & | qos | ) | [static] |
Definition at line 794 of file Qos_Helper.inl.
References DDS::BY_RECEPTION_TIMESTAMP_DESTINATIONORDER_QOS, DDS::BY_SOURCE_TIMESTAMP_DESTINATIONORDER_QOS, and DDS::DestinationOrderQosPolicy::kind.
00795 { 00796 return qos.kind == DDS::BY_RECEPTION_TIMESTAMP_DESTINATIONORDER_QOS 00797 || qos.kind == DDS::BY_SOURCE_TIMESTAMP_DESTINATIONORDER_QOS; 00798 }
ACE_INLINE bool OpenDDS::DCPS::Qos_Helper::valid | ( | const DDS::ReliabilityQosPolicy & | qos | ) | [static] |
Definition at line 786 of file Qos_Helper.inl.
References DDS::BEST_EFFORT_RELIABILITY_QOS, DDS::ReliabilityQosPolicy::kind, and DDS::RELIABLE_RELIABILITY_QOS.
00787 { 00788 return 00789 qos.kind == DDS::BEST_EFFORT_RELIABILITY_QOS 00790 || qos.kind == DDS::RELIABLE_RELIABILITY_QOS; 00791 }
ACE_INLINE bool OpenDDS::DCPS::Qos_Helper::valid | ( | const DDS::PartitionQosPolicy & | qos | ) | [static] |
Definition at line 777 of file Qos_Helper.inl.
ACE_INLINE bool OpenDDS::DCPS::Qos_Helper::valid | ( | const DDS::TimeBasedFilterQosPolicy & | qos | ) | [static] |
Definition at line 770 of file Qos_Helper.inl.
ACE_INLINE bool OpenDDS::DCPS::Qos_Helper::valid | ( | const DDS::LivelinessQosPolicy & | qos | ) | [static] |
Definition at line 759 of file Qos_Helper.inl.
References DDS::AUTOMATIC_LIVELINESS_QOS, DDS::LivelinessQosPolicy::kind, DDS::LivelinessQosPolicy::lease_duration, DDS::MANUAL_BY_PARTICIPANT_LIVELINESS_QOS, DDS::MANUAL_BY_TOPIC_LIVELINESS_QOS, and OpenDDS::DCPS::valid_duration().
00760 { 00761 return 00762 (qos.kind == DDS::AUTOMATIC_LIVELINESS_QOS 00763 || qos.kind == DDS::MANUAL_BY_PARTICIPANT_LIVELINESS_QOS 00764 || qos.kind == DDS::MANUAL_BY_TOPIC_LIVELINESS_QOS) 00765 00766 && valid_duration(qos.lease_duration); 00767 }
ACE_INLINE bool OpenDDS::DCPS::Qos_Helper::valid | ( | const DDS::OwnershipStrengthQosPolicy & | qos | ) | [static] |
Definition at line 752 of file Qos_Helper.inl.
ACE_INLINE bool OpenDDS::DCPS::Qos_Helper::valid | ( | const DDS::OwnershipQosPolicy & | qos | ) | [static] |
Definition at line 740 of file Qos_Helper.inl.
References DDS::EXCLUSIVE_OWNERSHIP_QOS, DDS::OwnershipQosPolicy::kind, and DDS::SHARED_OWNERSHIP_QOS.
00741 { 00742 return 00743 qos.kind == DDS::SHARED_OWNERSHIP_QOS 00744 #ifndef OPENDDS_NO_OWNERSHIP_KIND_EXCLUSIVE 00745 || qos.kind == DDS::EXCLUSIVE_OWNERSHIP_QOS 00746 #endif 00747 ; 00748 }
ACE_INLINE bool OpenDDS::DCPS::Qos_Helper::valid | ( | const DDS::LatencyBudgetQosPolicy & | qos | ) | [static] |
Definition at line 734 of file Qos_Helper.inl.
ACE_INLINE bool OpenDDS::DCPS::Qos_Helper::valid | ( | const DDS::DeadlineQosPolicy & | qos | ) | [static] |
Definition at line 728 of file Qos_Helper.inl.
References DDS::DeadlineQosPolicy::period, and OpenDDS::DCPS::valid_duration().
00729 { 00730 return valid_duration(qos.period); 00731 }
ACE_INLINE bool OpenDDS::DCPS::Qos_Helper::valid | ( | const DDS::PresentationQosPolicy & | qos | ) | [static] |
Definition at line 719 of file Qos_Helper.inl.
References DDS::PresentationQosPolicy::access_scope, DDS::GROUP_PRESENTATION_QOS, DDS::INSTANCE_PRESENTATION_QOS, and DDS::TOPIC_PRESENTATION_QOS.
00720 { 00721 return 00722 (qos.access_scope == DDS::INSTANCE_PRESENTATION_QOS 00723 || qos.access_scope == DDS::TOPIC_PRESENTATION_QOS 00724 || qos.access_scope == DDS::GROUP_PRESENTATION_QOS); 00725 }
ACE_INLINE bool OpenDDS::DCPS::Qos_Helper::valid | ( | const DDS::DurabilityServiceQosPolicy & | qos | ) | [static] |
Definition at line 827 of file Qos_Helper.inl.
References DDS::DurabilityServiceQosPolicy::history_depth, DDS::DurabilityServiceQosPolicy::history_kind, DDS::DurabilityServiceQosPolicy::max_instances, DDS::DurabilityServiceQosPolicy::max_samples, DDS::DurabilityServiceQosPolicy::max_samples_per_instance, OpenDDS::DCPS::non_negative_duration(), DDS::DurabilityServiceQosPolicy::service_cleanup_delay, and valid().
00828 { 00829 // Leverage existing validation functions for related QoS 00830 // policies. 00831 DDS::HistoryQosPolicy const history = { 00832 qos.history_kind, 00833 qos.history_depth 00834 }; 00835 00836 DDS::ResourceLimitsQosPolicy const resource_limits = { 00837 qos.max_samples, 00838 qos.max_instances, 00839 qos.max_samples_per_instance 00840 }; 00841 00842 return 00843 non_negative_duration(qos.service_cleanup_delay) 00844 && valid(history) 00845 && valid(resource_limits); 00846 }
ACE_INLINE bool OpenDDS::DCPS::Qos_Helper::valid | ( | const DDS::DurabilityQosPolicy & | qos | ) | [static] |
Definition at line 709 of file Qos_Helper.inl.
References DDS::DurabilityQosPolicy::kind, DDS::PERSISTENT_DURABILITY_QOS, DDS::TRANSIENT_DURABILITY_QOS, DDS::TRANSIENT_LOCAL_DURABILITY_QOS, and DDS::VOLATILE_DURABILITY_QOS.
00710 { 00711 return 00712 (qos.kind == DDS::VOLATILE_DURABILITY_QOS 00713 || qos.kind == DDS::TRANSIENT_LOCAL_DURABILITY_QOS 00714 || qos.kind == DDS::TRANSIENT_DURABILITY_QOS 00715 || qos.kind == DDS::PERSISTENT_DURABILITY_QOS); 00716 }
ACE_INLINE bool OpenDDS::DCPS::Qos_Helper::valid | ( | const DDS::LifespanQosPolicy & | qos | ) | [static] |
Definition at line 702 of file Qos_Helper.inl.
References DDS::LifespanQosPolicy::duration, and OpenDDS::DCPS::valid_duration().
00703 { 00704 return valid_duration(qos.duration); 00705 }
ACE_INLINE bool OpenDDS::DCPS::Qos_Helper::valid | ( | const DDS::TransportPriorityQosPolicy & | qos | ) | [static] |
Definition at line 696 of file Qos_Helper.inl.
ACE_INLINE bool OpenDDS::DCPS::Qos_Helper::valid | ( | const DDS::GroupDataQosPolicy & | qos | ) | [static] |
Definition at line 689 of file Qos_Helper.inl.
ACE_INLINE bool OpenDDS::DCPS::Qos_Helper::valid | ( | const DDS::TopicDataQosPolicy & | qos | ) | [static] |
Definition at line 683 of file Qos_Helper.inl.
ACE_INLINE bool OpenDDS::DCPS::Qos_Helper::valid | ( | const DDS::UserDataQosPolicy & | qos | ) | [static] |
Definition at line 677 of file Qos_Helper.inl.
Referenced by copy_from_topic_qos(), OpenDDS::DCPS::DomainParticipantFactoryImpl::create_participant(), OpenDDS::DCPS::DomainParticipantImpl::create_topic_i(), OpenDDS::DCPS::SubscriberImpl::set_default_datareader_qos(), OpenDDS::DCPS::PublisherImpl::set_default_datawriter_qos(), OpenDDS::DCPS::DomainParticipantFactoryImpl::set_default_participant_qos(), OpenDDS::DCPS::DomainParticipantImpl::set_default_publisher_qos(), OpenDDS::DCPS::DomainParticipantImpl::set_default_subscriber_qos(), OpenDDS::DCPS::DomainParticipantImpl::set_default_topic_qos(), OpenDDS::DCPS::TopicImpl::set_qos(), OpenDDS::DCPS::SubscriberImpl::set_qos(), OpenDDS::DCPS::ReplayerImpl::set_qos(), OpenDDS::DCPS::RecorderImpl::set_qos(), OpenDDS::DCPS::PublisherImpl::set_qos(), OpenDDS::DCPS::DomainParticipantImpl::set_qos(), OpenDDS::DCPS::DomainParticipantFactoryImpl::set_qos(), OpenDDS::DCPS::DataWriterImpl::set_qos(), OpenDDS::DCPS::DataReaderImpl::set_qos(), valid(), OpenDDS::DCPS::SubscriberImpl::validate_datareader_qos(), OpenDDS::DCPS::PublisherImpl::validate_datawriter_qos(), OpenDDS::DCPS::DomainParticipantImpl::validate_publisher_qos(), and OpenDDS::DCPS::DomainParticipantImpl::validate_subscriber_qos().