OpenDDS::DCPS::Qos_Helper Class Reference

This class implements methods that verify whether a qos is valid, consistent and changeable. More...

#include <Qos_Helper.h>

List of all members.

Static Public Member Functions

static bool consistent (const DDS::ResourceLimitsQosPolicy &resource_limits, const DDS::HistoryQosPolicy &history)
static bool consistent (const DDS::DeadlineQosPolicy &deadline, const DDS::TimeBasedFilterQosPolicy &time_based_filter)
static bool consistent (const DDS::DomainParticipantQos &qos)
static bool consistent (const DDS::TopicQos &qos)
static bool consistent (const DDS::DataWriterQos &qos)
static bool consistent (const DDS::PublisherQos &qos)
static bool consistent (const DDS::DataReaderQos &qos)
static bool consistent (const DDS::SubscriberQos &qos)
static bool consistent (const DDS::DomainParticipantFactoryQos &qos)
static bool valid (const DDS::UserDataQosPolicy &qos)
static bool valid (const DDS::TopicDataQosPolicy &qos)
static bool valid (const DDS::GroupDataQosPolicy &qos)
static bool valid (const DDS::TransportPriorityQosPolicy &qos)
static bool valid (const DDS::LifespanQosPolicy &qos)
static bool valid (const DDS::DurabilityQosPolicy &qos)
static bool valid (const DDS::DurabilityServiceQosPolicy &qos)
static bool valid (const DDS::PresentationQosPolicy &qos)
static bool valid (const DDS::DeadlineQosPolicy &qos)
static bool valid (const DDS::LatencyBudgetQosPolicy &qos)
static bool valid (const DDS::OwnershipQosPolicy &qos)
static bool valid (const DDS::OwnershipStrengthQosPolicy &qos)
static bool valid (const DDS::LivelinessQosPolicy &qos)
static bool valid (const DDS::TimeBasedFilterQosPolicy &qos)
static bool valid (const DDS::PartitionQosPolicy &qos)
static bool valid (const DDS::ReliabilityQosPolicy &qos)
static bool valid (const DDS::DestinationOrderQosPolicy &qos)
static bool valid (const DDS::HistoryQosPolicy &qos)
static bool valid (const DDS::ResourceLimitsQosPolicy &qos)
static bool valid (const DDS::EntityFactoryQosPolicy &qos)
static bool valid (const DDS::PropertyQosPolicy &qos)
static bool valid (const DDS::WriterDataLifecycleQosPolicy &qos)
static bool valid (const DDS::ReaderDataLifecycleQosPolicy &qos)
static bool valid (const DDS::DomainParticipantQos &qos)
static bool valid (const DDS::TopicQos &qos)
static bool valid (const DDS::DataWriterQos &qos)
static bool valid (const DDS::PublisherQos &qos)
static bool valid (const DDS::DataReaderQos &qos)
static bool valid (const DDS::SubscriberQos &qos)
static bool valid (const DDS::DomainParticipantFactoryQos &qos)
static bool changeable (const DDS::UserDataQosPolicy &qos1, const DDS::UserDataQosPolicy &qos2)
static bool changeable (const DDS::TopicDataQosPolicy &qos1, const DDS::TopicDataQosPolicy &qos2)
static bool changeable (const DDS::GroupDataQosPolicy &qos1, const DDS::GroupDataQosPolicy &qos2)
static bool changeable (const DDS::TransportPriorityQosPolicy &qos1, const DDS::TransportPriorityQosPolicy &qos2)
static bool changeable (const DDS::LifespanQosPolicy &qos1, const DDS::LifespanQosPolicy &qos2)
static bool changeable (const DDS::DurabilityQosPolicy &qos1, const DDS::DurabilityQosPolicy &qos2)
static bool changeable (const DDS::DurabilityServiceQosPolicy &qos1, const DDS::DurabilityServiceQosPolicy &qos2)
static bool changeable (const DDS::PresentationQosPolicy &qos1, const DDS::PresentationQosPolicy &qos2)
static bool changeable (const DDS::DeadlineQosPolicy &qos1, const DDS::DeadlineQosPolicy &qos2)
static bool changeable (const DDS::LatencyBudgetQosPolicy &qos1, const DDS::LatencyBudgetQosPolicy &qos2)
static bool changeable (const DDS::OwnershipQosPolicy &qos1, const DDS::OwnershipQosPolicy &qos2)
static bool changeable (const DDS::OwnershipStrengthQosPolicy &qos1, const DDS::OwnershipStrengthQosPolicy &qos2)
static bool changeable (const DDS::LivelinessQosPolicy &qos1, const DDS::LivelinessQosPolicy &qos2)
static bool changeable (const DDS::TimeBasedFilterQosPolicy &qos1, const DDS::TimeBasedFilterQosPolicy &qos2)
static bool changeable (const DDS::PartitionQosPolicy &qos1, const DDS::PartitionQosPolicy &qos2)
static bool changeable (const DDS::ReliabilityQosPolicy &qos1, const DDS::ReliabilityQosPolicy &qos2)
static bool changeable (const DDS::DestinationOrderQosPolicy &qos1, const DDS::DestinationOrderQosPolicy &qos2)
static bool changeable (const DDS::HistoryQosPolicy &qos1, const DDS::HistoryQosPolicy &qos2)
static bool changeable (const DDS::ResourceLimitsQosPolicy &qos1, const DDS::ResourceLimitsQosPolicy &qos2)
static bool changeable (const DDS::EntityFactoryQosPolicy &qos1, const DDS::EntityFactoryQosPolicy &qos2)
static bool changeable (const DDS::WriterDataLifecycleQosPolicy &qos1, const DDS::WriterDataLifecycleQosPolicy &qos2)
static bool changeable (const DDS::ReaderDataLifecycleQosPolicy &qos1, const DDS::ReaderDataLifecycleQosPolicy &qos2)
static bool changeable (const DDS::DomainParticipantQos &qos1, const DDS::DomainParticipantQos &qos2)
static bool changeable (const DDS::TopicQos &qos1, const DDS::TopicQos &qos2)
static bool changeable (const DDS::DataWriterQos &qos1, const DDS::DataWriterQos &qos2)
static bool changeable (const DDS::PublisherQos &qos1, const DDS::PublisherQos &qos2)
static bool changeable (const DDS::DataReaderQos &qos1, const DDS::DataReaderQos &qos2)
static bool changeable (const DDS::SubscriberQos &qos1, const DDS::SubscriberQos &qos2)
static bool changeable (const DDS::DomainParticipantFactoryQos &qos1, const DDS::DomainParticipantFactoryQos &qos2)
static bool copy_from_topic_qos (DDS::DataReaderQos &a_datareader_qos, const DDS::TopicQos &a_topic_qos)
static bool copy_from_topic_qos (DDS::DataWriterQos &a_datareader_qos, const DDS::TopicQos &a_topic_qos)

Detailed Description

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.

Note:
Since in the first implementation of DSS in TAO a limited number of QoS values are allowed to be modified, the consistency test on QoS settings have not been implemented to check future "valid" QoS values.
None of the supported QoS in the first implementation are changeable. The changed value will be checked per the QoS table in the DDS specification.

Definition at line 61 of file Qos_Helper.h.


Member Function Documentation

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 }

Here is the call graph for this function:

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 }

Here is the call graph for this function:

ACE_INLINE bool OpenDDS::DCPS::Qos_Helper::changeable ( const DDS::DataReaderQos qos1,
const DDS::DataReaderQos qos2 
) [static]
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 }

Here is the call graph for this function:

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 }

Here is the call graph for this function:

ACE_INLINE bool OpenDDS::DCPS::Qos_Helper::changeable ( const DDS::TopicQos qos1,
const DDS::TopicQos qos2 
) [static]
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 }

Here is the call graph for this function:

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.

01218 {
01219   return true;
01220 }

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.

01210 {
01211   return true;
01212 }

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.

01202 {
01203   return true;
01204 }

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.

01194 {
01195   return qos1 == qos2;
01196 }

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.

01187 {
01188   return qos1 == qos2;
01189 }

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.

01180 {
01181   return qos1 == qos2;
01182 }

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.

01173 {
01174   return qos1 == qos2;
01175 }

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.

01166 {
01167   return true;
01168 }

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.

01158 {
01159   return true;
01160 }

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.

01150 {
01151   return qos1 == qos2;
01152 }

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.

01142 {
01143   return true;
01144 }

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.

01132 {
01133   return qos1 == qos2;
01134 }

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.

01125 {
01126   return true;
01127 }

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.

01117 {
01118   return true;
01119 }

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.

01099 {
01100   if (qos1 == qos2)
01101     return true;
01102 
01103   else
01104     return false;
01105 }

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.

01091 {
01092   return qos1 == qos2;
01093 }

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.

01082 {
01083   return qos1 == qos2;
01084 }

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.

01075 {
01076   return true;
01077 }

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.

01062 {
01063   // formal/07-01-01 specifies that this is changeable.  OpenDDS as
01064   // of Version 1.3 does not support dynamic modification of the
01065   // priority of a single DataWriter TRANSPORT_PRIORITY.value.
01066   //
01067   // return true;
01068   return qos1 == qos2;
01069 }

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.

01054 {
01055   return true;
01056 }

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.

01047 {
01048   return true;
01049 }

ACE_INLINE bool OpenDDS::DCPS::Qos_Helper::changeable ( const DDS::UserDataQosPolicy qos1,
const DDS::UserDataQosPolicy qos2 
) [static]
ACE_INLINE bool OpenDDS::DCPS::Qos_Helper::consistent ( const DDS::DomainParticipantFactoryQos qos  )  [static]

Definition at line 659 of file Qos_Helper.inl.

00660 {
00661   return true;
00662 }

ACE_INLINE bool OpenDDS::DCPS::Qos_Helper::consistent ( const DDS::SubscriberQos qos  )  [static]

Definition at line 652 of file Qos_Helper.inl.

00653 {
00654   return true;
00655 }

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 }

Here is the call graph for this function:

ACE_INLINE bool OpenDDS::DCPS::Qos_Helper::consistent ( const DDS::PublisherQos qos  )  [static]

Definition at line 636 of file Qos_Helper.inl.

00637 {
00638   return true;
00639 }

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 }

Here is the call graph for this function:

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 }

Here is the call graph for this function:

ACE_INLINE bool OpenDDS::DCPS::Qos_Helper::consistent ( const DDS::DomainParticipantQos qos  )  [static]

Definition at line 574 of file Qos_Helper.inl.

00575 {
00576   return true;
00577 }

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 }

Here is the caller graph for this function:

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 }

Here is the call graph for this function:

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 }

Here is the call graph for this function:

Here is the caller graph for this function:

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 }

Here is the call graph for this function:

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 }

Here is the call graph for this function:

ACE_INLINE bool OpenDDS::DCPS::Qos_Helper::valid ( const DDS::DataReaderQos qos  )  [static]
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 }

Here is the call graph for this function:

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 }

Here is the call graph for this function:

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 }

Here is the call graph for this function:

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 }

Here is the call graph for this function:

ACE_INLINE bool OpenDDS::DCPS::Qos_Helper::valid ( const DDS::ReaderDataLifecycleQosPolicy qos  )  [static]

Definition at line 870 of file Qos_Helper.inl.

00871 {
00872   return true;
00873 }

ACE_INLINE bool OpenDDS::DCPS::Qos_Helper::valid ( const DDS::WriterDataLifecycleQosPolicy qos  )  [static]

Definition at line 864 of file Qos_Helper.inl.

00865 {
00866   return true;
00867 }

ACE_INLINE bool OpenDDS::DCPS::Qos_Helper::valid ( const DDS::PropertyQosPolicy qos  )  [static]

Definition at line 858 of file Qos_Helper.inl.

00859 {
00860   return true;
00861 }

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]
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]
ACE_INLINE bool OpenDDS::DCPS::Qos_Helper::valid ( const DDS::ReliabilityQosPolicy qos  )  [static]
ACE_INLINE bool OpenDDS::DCPS::Qos_Helper::valid ( const DDS::PartitionQosPolicy qos  )  [static]

Definition at line 777 of file Qos_Helper.inl.

00778 {
00779   // All strings are valid, although we may not accept all
00780   // wildcard patterns.  For now we treat unsupported wildcard
00781   // patterns literally instead of as wildcards.
00782   return true;
00783 }

ACE_INLINE bool OpenDDS::DCPS::Qos_Helper::valid ( const DDS::TimeBasedFilterQosPolicy qos  )  [static]

Definition at line 770 of file Qos_Helper.inl.

00771 {
00772   return true;
00773 }

ACE_INLINE bool OpenDDS::DCPS::Qos_Helper::valid ( const DDS::LivelinessQosPolicy qos  )  [static]
ACE_INLINE bool OpenDDS::DCPS::Qos_Helper::valid ( const DDS::OwnershipStrengthQosPolicy qos  )  [static]

Definition at line 752 of file Qos_Helper.inl.

00753 {
00754   return true;
00755 }

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.

00735 {
00736   return true;
00737 }

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 }

Here is the call graph for this function:

ACE_INLINE bool OpenDDS::DCPS::Qos_Helper::valid ( const DDS::PresentationQosPolicy qos  )  [static]
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 }

Here is the call graph for this function:

ACE_INLINE bool OpenDDS::DCPS::Qos_Helper::valid ( const DDS::DurabilityQosPolicy qos  )  [static]
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 }

Here is the call graph for this function:

ACE_INLINE bool OpenDDS::DCPS::Qos_Helper::valid ( const DDS::TransportPriorityQosPolicy qos  )  [static]

Definition at line 696 of file Qos_Helper.inl.

00697 {
00698   return true;
00699 }

ACE_INLINE bool OpenDDS::DCPS::Qos_Helper::valid ( const DDS::GroupDataQosPolicy qos  )  [static]

Definition at line 689 of file Qos_Helper.inl.

00690 {
00691   return true;
00692 }

ACE_INLINE bool OpenDDS::DCPS::Qos_Helper::valid ( const DDS::TopicDataQosPolicy qos  )  [static]

Definition at line 683 of file Qos_Helper.inl.

00684 {
00685   return true;
00686 }

ACE_INLINE bool OpenDDS::DCPS::Qos_Helper::valid ( const DDS::UserDataQosPolicy qos  )  [static]

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

Generated on 10 Aug 2018 for OpenDDS by  doxygen 1.6.1