488 lines
16 KiB
C++
488 lines
16 KiB
C++
#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 <dds/core/detail/conformance.hpp>
|
|
#include <dds/core/Value.hpp>
|
|
#include <dds/core/policy/CorePolicy.hpp>
|
|
#include <dds/topic/BuiltinTopicKey.hpp>
|
|
|
|
namespace dds
|
|
{
|
|
namespace topic
|
|
{
|
|
template <typename D>
|
|
class TParticipantBuiltinTopicData;
|
|
|
|
template <typename D>
|
|
class TTopicBuiltinTopicData;
|
|
|
|
template <typename D>
|
|
class TPublicationBuiltinTopicData;
|
|
|
|
template <typename D>
|
|
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<dds::sub::DataReader<dds::topic::ParticipantBuiltinTopicData> > readersVector;
|
|
* dds::sub::find<dds::sub::DataReader<dds::topic::ParticipantBuiltinTopicData>,
|
|
* back_insert_iterator<vector<dds::sub::DataReader<dds::topic::ParticipantBuiltinTopicData> > > >(
|
|
* builtinSubscriber,
|
|
* name,
|
|
* back_inserter<vector<dds::sub::DataReader<dds::topic::ParticipantBuiltinTopicData> > >(readersVector));
|
|
* dds::sub::DataReader<dds::topic::ParticipantBuiltinTopicData> 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 <typename D>
|
|
class dds::topic::TParticipantBuiltinTopicData : public ::dds::core::Value<D>
|
|
{
|
|
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<dds::sub::DataReader<dds::topic::TopicBuiltinTopicData> > readersVector;
|
|
* dds::sub::find<dds::sub::DataReader<dds::topic::TopicBuiltinTopicData>,
|
|
* back_insert_iterator<vector<dds::sub::DataReader<dds::topic::TopicBuiltinTopicData> > > >(
|
|
* builtinSubscriber,
|
|
* name,
|
|
* back_inserter<vector<dds::sub::DataReader<dds::topic::TopicBuiltinTopicData> > >(readersVector));
|
|
* dds::sub::DataReader<dds::topic::TopicBuiltinTopicData> 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 <typename D>
|
|
class dds::topic::TTopicBuiltinTopicData : public ::dds::core::Value<D>
|
|
{
|
|
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<dds::sub::DataReader<dds::topic::PublicationBuiltinTopicData> > readersVector;
|
|
* dds::sub::find<dds::sub::DataReader<dds::topic::PublicationBuiltinTopicData>,
|
|
* back_insert_iterator<vector<dds::sub::DataReader<dds::topic::PublicationBuiltinTopicData> > > >(
|
|
* builtinSubscriber,
|
|
* name,
|
|
* back_inserter<vector<dds::sub::DataReader<dds::topic::PublicationBuiltinTopicData> > >(readersVector));
|
|
* dds::sub::DataReader<dds::topic::PublicationBuiltinTopicData> 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 <typename D>
|
|
class dds::topic::TPublicationBuiltinTopicData : public ::dds::core::Value<D>
|
|
{
|
|
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<dds::sub::DataReader<dds::topic::SubscriptionBuiltinTopicData> > readersVector;
|
|
* dds::sub::find<dds::sub::DataReader<dds::topic::SubscriptionBuiltinTopicData>,
|
|
* back_insert_iterator<vector<dds::sub::DataReader<dds::topic::SubscriptionBuiltinTopicData> > > >(
|
|
* builtinSubscriber,
|
|
* name,
|
|
* back_inserter<vector<dds::sub::DataReader<dds::topic::SubscriptionBuiltinTopicData> > >(readersVector));
|
|
* dds::sub::DataReader<dds::topic::SubscriptionBuiltinTopicData> 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 <typename D>
|
|
class dds::topic::TSubscriptionBuiltinTopicData : public ::dds::core::Value<D>
|
|
{
|
|
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_ */
|