#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_ */