Program Listing for File RTPSReader.hpp

Return to documentation for file (include/fastdds/rtps/reader/RTPSReader.hpp)

// Copyright 2016 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_RTPS_READER__RTPSREADER_HPP
#define FASTDDS_RTPS_READER__RTPSREADER_HPP

#include <cstdint>
#include <memory>

#include <fastdds/fastdds_dll.hpp>
#include <fastdds/rtps/attributes/ReaderAttributes.hpp>
#include <fastdds/rtps/builtin/data/PublicationBuiltinTopicData.hpp>
#include <fastdds/rtps/common/Guid.hpp>
#include <fastdds/rtps/common/RemoteLocators.hpp>
#include <fastdds/rtps/common/SequenceNumber.hpp>
#include <fastdds/rtps/common/Time_t.hpp>
#include <fastdds/rtps/Endpoint.hpp>
#include <fastdds/rtps/history/ReaderHistory.hpp>
#include <fastdds/rtps/interfaces/IReaderDataFilter.hpp>
#include <fastdds/statistics/IListeners.hpp>
#include <fastdds/statistics/rtps/monitor_service/connections_fwd.hpp>
#include <fastdds/statistics/rtps/StatisticsCommon.hpp>

namespace eprosima {
namespace fastdds {
namespace rtps {

// Forward declarations
struct CacheChange_t;
class ReaderListener;
class RTPSParticipantImpl;

class RTPSReader : public Endpoint
{

public:

    FASTDDS_EXPORTED_API virtual bool matched_writer_add(
            const PublicationBuiltinTopicData& info) = 0;

    FASTDDS_EXPORTED_API virtual bool matched_writer_remove(
            const GUID_t& writer_guid,
            bool removed_by_lease = false) = 0;

    FASTDDS_EXPORTED_API virtual bool matched_writer_is_matched(
            const GUID_t& writer_guid) = 0;

    FASTDDS_EXPORTED_API virtual void assert_writer_liveliness(
            const GUID_t& writer) = 0;

    FASTDDS_EXPORTED_API virtual bool is_in_clean_state() = 0;

    FASTDDS_EXPORTED_API virtual ReaderListener* get_listener() const = 0;

    FASTDDS_EXPORTED_API virtual void set_listener(
            ReaderListener* listener) = 0;

    FASTDDS_EXPORTED_API virtual bool expects_inline_qos() const = 0;

    FASTDDS_EXPORTED_API virtual ReaderHistory* get_history() const = 0;

    FASTDDS_EXPORTED_API virtual eprosima::fastdds::rtps::IReaderDataFilter* get_content_filter() const = 0;

    FASTDDS_EXPORTED_API virtual void set_content_filter(
            eprosima::fastdds::rtps::IReaderDataFilter* filter) = 0;

    FASTDDS_EXPORTED_API virtual CacheChange_t* next_unread_cache() = 0;

    FASTDDS_EXPORTED_API virtual CacheChange_t* next_untaken_cache() = 0;

    FASTDDS_EXPORTED_API virtual bool wait_for_unread_cache(
            const eprosima::fastdds::dds::Duration_t& timeout) = 0;

    FASTDDS_EXPORTED_API virtual uint64_t get_unread_count() const = 0;

    FASTDDS_EXPORTED_API virtual uint64_t get_unread_count(
            bool mark_as_read) = 0;

    FASTDDS_EXPORTED_API virtual bool is_sample_valid(
            const void* data,
            const GUID_t& writer,
            const SequenceNumber_t& sn) const = 0;

#ifdef FASTDDS_STATISTICS

    FASTDDS_EXPORTED_API virtual bool add_statistics_listener(
            std::shared_ptr<fastdds::statistics::IListener> listener) = 0;

    FASTDDS_EXPORTED_API virtual bool remove_statistics_listener(
            std::shared_ptr<fastdds::statistics::IListener> listener) = 0;

    FASTDDS_EXPORTED_API virtual void set_enabled_statistics_writers_mask(
            uint32_t enabled_writers) = 0;

    FASTDDS_EXPORTED_API virtual bool get_connections(
            fastdds::statistics::rtps::ConnectionList& connection_list) = 0;

#endif // FASTDDS_STATISTICS

protected:

    RTPSReader(
            RTPSParticipantImpl* pimpl,
            const GUID_t& guid,
            const ReaderAttributes& att,
            ReaderHistory* hist);

    ~RTPSReader();

    ReaderHistory* history_;

private:

    RTPSReader& operator =(
            const RTPSReader&) = delete;

};

} // namespace rtps
} // namespace fastdds
} // namespace eprosima

#endif // FASTDDS_RTPS_READER__RTPSREADER_HPP