#ifndef OMG_TDDS_TOPIC_BUILT_IN_TOPIC_HPP_ #define OMG_TDDS_TOPIC_BUILT_IN_TOPIC_HPP_ /* Copyright 2010, Object Management Group, Inc. * Copyright 2010, PrismTech, Corp. * Copyright 2010, Real-Time Innovations, Inc. * All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include #include namespace dds { namespace topic { template class TParticipantBuiltinTopicData; template class TTopicBuiltinTopicData; template class TPublicationBuiltinTopicData; template class TSubscriptionBuiltinTopicData; } } /** * @brief * Class that contains information about available DomainParticipants within * the system. * * The DCPSParticipant topic communicates the existence of DomainParticipants * by means of the ParticipantBuiltinTopicData datatype. Each * ParticipantBuiltinTopicData sample in a Domain represents a DomainParticipant * that participates in that Domain: a new ParticipantBuiltinTopicData instance * is created when a newly-added DomainParticipant is enabled, and it is disposed * when that DomainParticipant is deleted. An updated ParticipantBuiltinTopicData * sample is written each time the DomainParticipant modifies its UserDataQosPolicy. * * @code{.cpp} * // Get builtin subscriber * dds::domain::DomainParticipant participant(org::eclipse::cyclonedds::domain::default_id()); * dds::sub::Subscriber builtinSubscriber = dds::sub::builtin_subscriber(participant); * * // Get DCPSParticipant builtin reader (happy flow) * string name = "DCPSParticipant"; * vector > readersVector; * dds::sub::find, * back_insert_iterator > > >( * builtinSubscriber, * name, * back_inserter > >(readersVector)); * dds::sub::DataReader builtinReader = readersVector[0]; * * // The builtinReader can now be used just as a normal dds::sub::DataReader to get * // dds::topic::ParticipantBuiltinTopicData samples. * @endcode * * @see for more information: @ref DCPS_Builtin_Topics * @see for more information: @ref DCPS_Builtin_Topics_ParticipantData */ template class dds::topic::TParticipantBuiltinTopicData : public ::dds::core::Value { public: /** * Globally unique identifier of the participant */ const dds::topic::BuiltinTopicKey& key() const; /** * User-defined data attached to the participant via a QosPolicy */ const ::dds::core::policy::UserData& user_data() const; }; /** * @brief * Class that contains information about available Topics within * the system. * * The DCPSTopic topic communicates the existence of topics by means of the * TopicBuiltinTopicData datatype. Each TopicBuiltinTopicData sample in * a Domain represents a Topic in that Domain: a new TopicBuiltinTopicData * instance is created when a newly-added Topic is enabled. However, the instance is * not disposed when a Topic is deleted by its participant because a topic lifecycle * is tied to the lifecycle of a Domain, not to the lifecycle of an individual * participant. An updated TopicBuiltinTopicData sample is written each time a * Topic modifies one or more of its QosPolicy values. * * @code{.cpp} * // Get builtin subscriber * dds::domain::DomainParticipant participant(org::eclipse::cyclonedds::domain::default_id()); * dds::sub::Subscriber builtinSubscriber = dds::sub::builtin_subscriber(participant); * * // Get DCPSTopic builtin reader (happy flow) * string name = "DCPSTopic"; * vector > readersVector; * dds::sub::find, * back_insert_iterator > > >( * builtinSubscriber, * name, * back_inserter > >(readersVector)); * dds::sub::DataReader builtinReader = readersVector[0]; * * // The builtinReader can now be used just as a normal dds::sub::DataReader to get * // dds::topic::TopicBuiltinTopicData samples. * @endcode * * @see for more information: @ref DCPS_Builtin_Topics * @see for more information: @ref DCPS_Builtin_Topics_TopicData */ template class dds::topic::TTopicBuiltinTopicData : public ::dds::core::Value { public: /** * Global unique identifier of the Topic */ const dds::topic::BuiltinTopicKey& key() const; /** * Name of the Topic */ const std::string& name() const; /** * Type name of the Topic (i.e. the fully scoped IDL name) */ const std::string& type_name() const; /** * QosPolicy attached to the Topic */ const ::dds::core::policy::Durability& durability() const; #ifdef OMG_DDS_PERSISTENCE_SUPPORT /** * QosPolicy attached to the Topic */ const ::dds::core::policy::DurabilityService& durability_service() const; #endif // OMG_DDS_PERSISTENCE_SUPPORT /** * QosPolicy attached to the Topic */ const ::dds::core::policy::Deadline& deadline() const; /** * QosPolicy attached to the Topic */ const ::dds::core::policy::LatencyBudget& latency_budget() const; /** * QosPolicy attached to the Topic */ const ::dds::core::policy::Liveliness& liveliness() const; /** * QosPolicy attached to the Topic */ const ::dds::core::policy::Reliability& reliability() const; /** * QosPolicy attached to the Topic */ const ::dds::core::policy::TransportPriority& transport_priority() const; /** * QosPolicy attached to the Topic */ const ::dds::core::policy::Lifespan& lifespan() const; /** * QosPolicy attached to the Topic */ const ::dds::core::policy::DestinationOrder& destination_order() const; /** * QosPolicy attached to the Topic */ const ::dds::core::policy::History& history() const; /** * QosPolicy attached to the Topic */ const ::dds::core::policy::ResourceLimits& resource_limits() const; /** * QosPolicy attached to the Topic */ const ::dds::core::policy::Ownership& ownership() const; /** * QosPolicy attached to the Topic */ const ::dds::core::policy::TopicData& topic_data() const; }; /** * @brief * Class that contains information about available DataWriters within * the system. * * The DCPSPublication topic communicates the existence of datawriters by means * of the PublicationBuiltinTopicData datatype. Each PublicationBuiltinTopicData * sample in a Domain represents a datawriter in that Domain: a new * PublicationBuiltinTopicData instance is created when a newly-added DataWriter * is enabled, and it is disposed when that DataWriter is deleted. An updated * PublicationBuiltinTopicData sample is written each time the DataWriter (or * the Publisher to which it belongs) modifies a QosPolicy that applies to the * entities connected to it. Also will it be updated when the writer looses or * regains its liveliness. * * @code{.cpp} * // Get builtin subscriber * dds::domain::DomainParticipant participant(org::eclipse::cyclonedds::domain::default_id()); * dds::sub::Subscriber builtinSubscriber = dds::sub::builtin_subscriber(participant); * * // Get DCPSPublication builtin reader (happy flow) * string name = "DCPSPublication"; * vector > readersVector; * dds::sub::find, * back_insert_iterator > > >( * builtinSubscriber, * name, * back_inserter > >(readersVector)); * dds::sub::DataReader builtinReader = readersVector[0]; * * // The builtinReader can now be used just as a normal dds::sub::DataReader to get * // dds::topic::PublicationBuiltinTopicData samples. * @endcode * * @see for more information: @ref DCPS_Builtin_Topics * @see for more information: @ref DCPS_Builtin_Topics_PublicationData */ template class dds::topic::TPublicationBuiltinTopicData : public ::dds::core::Value { public: /** * Global unique identifier of the DataWriter */ const dds::topic::BuiltinTopicKey& key() const; /** * Global unique identifier of the Participant to which the DataWriter belongs */ const dds::topic::BuiltinTopicKey& participant_key() const; /** * Name of the Topic used by the DataWriter */ const std::string& topic_name() const; /** * Type name of the Topic used by the DataWriter */ const std::string& type_name() const; /** * QosPolicy attached to the DataWriter */ const ::dds::core::policy::Durability& durability() const; #ifdef OMG_DDS_PERSISTENCE_SUPPORT /** * QosPolicy attached to the DataWriter */ const ::dds::core::policy::DurabilityService& durability_service() const; #endif // OMG_DDS_PERSISTENCE_SUPPORT /** * QosPolicy attached to the DataWriter */ const ::dds::core::policy::Deadline& deadline() const; /** * QosPolicy attached to the DataWriter */ const ::dds::core::policy::LatencyBudget& latency_budget() const; /** * QosPolicy attached to the DataWriter */ const ::dds::core::policy::Liveliness& liveliness() const; /** * QosPolicy attached to the DataWriter */ const ::dds::core::policy::Reliability& reliability() const; /** * QosPolicy attached to the DataWriter */ const ::dds::core::policy::Lifespan& lifespan() const; /** * QosPolicy attached to the DataWriter */ const ::dds::core::policy::UserData& user_data() const; /** * QosPolicy attached to the DataWriter */ const ::dds::core::policy::Ownership& ownership() const; #ifdef OMG_DDS_OWNERSHIP_SUPPORT /** * QosPolicy attached to the DataWriter */ const ::dds::core::policy::OwnershipStrength& ownership_strength() const; #endif // OMG_DDS_OWNERSHIP_SUPPORT /** * QosPolicy attached to the DataWriter */ const ::dds::core::policy::DestinationOrder& destination_order() const; /** * QosPolicy attached to the Publisher to which the DataWriter belongs */ const ::dds::core::policy::Presentation& presentation() const; /** * QosPolicy attached to the Publisher to which the DataWriter belongs */ const ::dds::core::policy::Partition& partition() const; /** * QosPolicy attached to the Publisher to which the DataWriter belongs */ const ::dds::core::policy::TopicData& topic_data() const; /** * QosPolicy attached to the Publisher to which the DataWriter belongs */ const ::dds::core::policy::GroupData& group_data() const; }; /** * @brief * Class that contains information about available DataReaders within * the system. * * The DCPSSubscription topic communicates the existence of datareaders by * means of the SubscriptionBuiltinTopicData datatype. Each * SubscriptionBuiltinTopicData sample in a Domain represents a datareader * in that Domain: a new SubscriptionBuiltinTopicData instance is created * when a newly-added DataReader is enabled, and it is disposed when that * DataReader is deleted. An updated SubscriptionBuiltinTopicData sample is * written each time the DataReader (or the Subscriber to which it belongs) * modifies a QosPolicy that applies to the entities connected to it. * * @code{.cpp} * // Get builtin subscriber * dds::domain::DomainParticipant participant(org::eclipse::cyclonedds::domain::default_id()); * dds::sub::Subscriber builtinSubscriber = dds::sub::builtin_subscriber(participant); * * // Get DCPSSubscription builtin reader (happy flow) * string name = "DCPSSubscription"; * vector > readersVector; * dds::sub::find, * back_insert_iterator > > >( * builtinSubscriber, * name, * back_inserter > >(readersVector)); * dds::sub::DataReader builtinReader = readersVector[0]; * * // The builtinReader can now be used just as a normal dds::sub::DataReader to get * // dds::topic::SubscriptionBuiltinTopicData samples. * @endcode * * @see for more information: @ref DCPS_Builtin_Topics * @see for more information: @ref DCPS_Builtin_Topics_SubscriptionData */ template class dds::topic::TSubscriptionBuiltinTopicData : public ::dds::core::Value { public: /** * Global unique identifier of the DataReader */ const dds::topic::BuiltinTopicKey& key() const; /** * Global unique identifier of the Participant to which the DataReader belongs */ const dds::topic::BuiltinTopicKey& participant_key() const; /** * Name of the Topic used by the DataReader */ const std::string& topic_name() const; /** * Type name of the Topic used by the DataReader */ const std::string& type_name() const; /** * QosPolicy attached to the DataReader */ const ::dds::core::policy::Durability& durability() const; /** * QosPolicy attached to the DataReader */ const ::dds::core::policy::Deadline& deadline() const; /** * QosPolicy attached to the DataReader */ const ::dds::core::policy::LatencyBudget& latency_budget() const; /** * QosPolicy attached to the DataReader */ const ::dds::core::policy::Liveliness& liveliness() const; /** * QosPolicy attached to the DataReader */ const ::dds::core::policy::Reliability& reliability() const; /** * QosPolicy attached to the DataReader */ const ::dds::core::policy::Ownership& ownership() const; /** * QosPolicy attached to the DataReader */ const ::dds::core::policy::DestinationOrder& destination_order() const; /** * QosPolicy attached to the DataReader */ const ::dds::core::policy::UserData& user_data() const; /** * QosPolicy attached to the DataReader */ const ::dds::core::policy::TimeBasedFilter& time_based_filter() const; /** * QosPolicy attached to the Subscriber to which the DataReader belongs */ const ::dds::core::policy::Presentation& presentation() const; /** * QosPolicy attached to the Subscriber to which the DataReader belongs */ const ::dds::core::policy::Partition& partition() const; /** * QosPolicy attached to the Subscriber to which the DataReader belongs */ const ::dds::core::policy::TopicData& topic_data() const; /** * QosPolicy attached to the Subscriber to which the DataReader belongs */ const ::dds::core::policy::GroupData& group_data() const; }; #endif /* OMG_TDDS_TOPIC_BUILT_IN_TOPIC_HPP_ */