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 bool matched_writers_guids(
std::vector<GUID_t>& guids) const = 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