// Copyright 2019 Proyectos y Sistemas de Mantenimiento SL (eProsima). // // 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. /** * @file TopicDescription.hpp */ #ifndef _FASTDDS_TOPIC_DESCRIPTION_HPP_ #define _FASTDDS_TOPIC_DESCRIPTION_HPP_ #include namespace eprosima { namespace fastdds { namespace dds { class DomainParticipant; class TopicDescriptionImpl; /** * Class TopicDescription, represents the fact that both publications * and subscriptions are tied to a single data-type * @ingroup FASTDDS_MODULE */ class TopicDescription { public: /** * Get the DomainParticipant to which the TopicDescription belongs. * @return The DomainParticipant to which the TopicDescription belongs. */ virtual DomainParticipant* get_participant() const = 0; /** * Get the name used to create this TopicDescription. * @return the name used to create this TopicDescription. */ const std::string& get_name() const { return name_; } /** * Get the associated type name. * @return the type name. */ const std::string& get_type_name() const { return type_name_; } /** * Get the TopicDescriptionImpl * @return pointer to TopicDescriptionImpl */ virtual TopicDescriptionImpl* get_impl() const = 0; protected: /** * @brief Constructor using topic name and data type name * @param name Name for the topic * @param type_name Data type name */ TopicDescription( const std::string& name, const std::string& type_name) : name_(name) , type_name_(type_name) { } /** * @brief Destructor */ virtual ~TopicDescription() { } protected: //! Name that allows the TopicDescription to be retrieved locally std::string name_; //! Name that defines a unique resulting type for the publication or the subscription std::string type_name_; }; } /* namespace dds */ } /* namespace fastdds */ } /* namespace eprosima */ #endif /* _FASTDDS_TOPIC_DESCRIPTION_HPP_ */