Program Listing for File Subscriber.hpp

Return to documentation for file (/tmp/ws/src/fastrtps/include/fastdds/dds/subscriber/Subscriber.hpp)

// 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.

#ifndef _FASTDDS_SUBSCRIBER_HPP_
#define _FASTDDS_SUBSCRIBER_HPP_

#include <fastdds/dds/core/Entity.hpp>
#include <fastdds/dds/subscriber/DataReaderListener.hpp>
#include <fastdds/dds/subscriber/InstanceState.hpp>
#include <fastdds/dds/subscriber/qos/DataReaderQos.hpp>
#include <fastdds/dds/subscriber/qos/SubscriberQos.hpp>
#include <fastdds/dds/subscriber/SampleState.hpp>
#include <fastdds/dds/subscriber/ViewState.hpp>
#include <fastdds/dds/topic/qos/TopicQos.hpp>
#include <fastdds/dds/topic/TypeSupport.hpp>
#include <fastrtps/types/TypesBase.h>

using eprosima::fastrtps::types::ReturnCode_t;

namespace dds {
namespace sub {

class Subscriber;

} // namespace sub
} // namespace dds

namespace eprosima {
namespace fastrtps {

class TopicAttributes;

} // namespace fastrtps

namespace fastdds {
namespace dds {

class DomainParticipant;
class SubscriberListener;
class SubscriberImpl;
class DataReader;
class DataReaderListener;
class DataReaderQos;
class TopicDescription;
class Subscriber : public DomainEntity
{
protected:

    friend class SubscriberImpl;
    friend class DomainParticipantImpl;

    Subscriber(
            SubscriberImpl* pimpl,
            const StatusMask& mask = StatusMask::all());

    Subscriber(
            DomainParticipant* dp,
            const SubscriberQos& qos = SUBSCRIBER_QOS_DEFAULT,
            SubscriberListener* listener = nullptr,
            const StatusMask& mask = StatusMask::all());

public:

    virtual ~Subscriber()
    {
    }

    RTPS_DllAPI ReturnCode_t enable() override;

    RTPS_DllAPI const SubscriberQos& get_qos() const;

    RTPS_DllAPI ReturnCode_t get_qos(
            SubscriberQos& qos) const;

    RTPS_DllAPI ReturnCode_t set_qos(
            const SubscriberQos& qos);

    RTPS_DllAPI const SubscriberListener* get_listener() const;

    RTPS_DllAPI ReturnCode_t set_listener(
            SubscriberListener* listener);

    RTPS_DllAPI ReturnCode_t set_listener(
            SubscriberListener* listener,
            const StatusMask& mask);
    RTPS_DllAPI DataReader* create_datareader(
            TopicDescription* topic,
            const DataReaderQos& reader_qos,
            DataReaderListener* listener = nullptr,
            const StatusMask& mask = StatusMask::all());

    RTPS_DllAPI DataReader* create_datareader_with_profile(
            TopicDescription* topic,
            const std::string& profile_name,
            DataReaderListener* listener = nullptr,
            const StatusMask& mask = StatusMask::all());

    RTPS_DllAPI ReturnCode_t delete_datareader(
            const DataReader* reader);

    RTPS_DllAPI DataReader* lookup_datareader(
            const std::string& topic_name) const;

    RTPS_DllAPI ReturnCode_t get_datareaders(
            std::vector<DataReader*>& readers) const;

    RTPS_DllAPI ReturnCode_t get_datareaders(
            std::vector<DataReader*>& readers,
            const std::vector<SampleStateKind>& sample_states,
            const std::vector<ViewStateKind>& view_states,
            const std::vector<InstanceStateKind>& instance_states) const;

    RTPS_DllAPI bool has_datareaders() const;

    RTPS_DllAPI ReturnCode_t begin_access();

    RTPS_DllAPI ReturnCode_t end_access();


    RTPS_DllAPI ReturnCode_t notify_datareaders() const;

    RTPS_DllAPI ReturnCode_t delete_contained_entities();

    RTPS_DllAPI ReturnCode_t set_default_datareader_qos(
            const DataReaderQos& qos);

    RTPS_DllAPI const DataReaderQos& get_default_datareader_qos() const;


    RTPS_DllAPI DataReaderQos& get_default_datareader_qos();

    RTPS_DllAPI ReturnCode_t get_default_datareader_qos(
            DataReaderQos& qos) const;

    RTPS_DllAPI ReturnCode_t get_datareader_qos_from_profile(
            const std::string& profile_name,
            DataReaderQos& qos) const;

    RTPS_DllAPI static ReturnCode_t copy_from_topic_qos(
            DataReaderQos& reader_qos,
            const TopicQos& topic_qos);

    RTPS_DllAPI const DomainParticipant* get_participant() const;

    RTPS_DllAPI const InstanceHandle_t& get_instance_handle() const;

protected:

    SubscriberImpl* impl_;

    friend class ::dds::sub::Subscriber;
};

} /* namespace dds */
} /* namespace fastdds */
} /* namespace eprosima */

#endif /* _FASTDDS_SUBSCRIBER_HPP_ */