Fast DDS  Version 3.0.0
Fast DDS
Loading...
Searching...
No Matches
RTPSWriter.hpp
1// Copyright 2016 Proyectos y Sistemas de Mantenimiento SL (eProsima).
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7// http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
19#ifndef FASTDDS_RTPS_WRITER__RTPSWRITER_HPP
20#define FASTDDS_RTPS_WRITER__RTPSWRITER_HPP
21
22#include <chrono>
23#include <cstdint>
24#include <functional>
25#include <limits>
26#include <memory>
27#include <mutex>
28#include <vector>
29
30#include <fastdds/fastdds_dll.hpp>
31#include <fastdds/dds/core/policy/QosPolicies.hpp>
32#include <fastdds/dds/core/status/BaseStatus.hpp>
33#include <fastdds/rtps/attributes/HistoryAttributes.hpp>
34#include <fastdds/rtps/attributes/WriterAttributes.hpp>
35#include <fastdds/rtps/builtin/data/SubscriptionBuiltinTopicData.hpp>
36#include <fastdds/rtps/common/CdrSerialization.hpp>
37#include <fastdds/rtps/common/Guid.hpp>
38#include <fastdds/rtps/common/RemoteLocators.hpp>
39#include <fastdds/rtps/common/VendorId_t.hpp>
40#include <fastdds/rtps/Endpoint.hpp>
41#include <fastdds/rtps/interfaces/IReaderDataFilter.hpp>
42#include <fastdds/statistics/IListeners.hpp>
43#include <fastdds/statistics/rtps/monitor_service/connections_fwd.hpp>
44#include <fastdds/rtps/common/SequenceNumber.hpp>
45#include <fastdds/rtps/common/Time_t.hpp>
46#include <fastdds/utils/TimedMutex.hpp>
47
48namespace eprosima {
49namespace fastdds {
50namespace rtps {
51
52class FlowController;
53class RTPSParticipantImpl;
54class WriterHistory;
55class WriterListener;
56
61class RTPSWriter : public Endpoint
62{
63protected:
64
67 const GUID_t& guid,
68 const WriterAttributes& att);
69
70 virtual ~RTPSWriter();
71
72public:
73
81 FASTDDS_EXPORTED_API virtual bool matched_reader_add(
82 const SubscriptionBuiltinTopicData& info) = 0;
83
89 FASTDDS_EXPORTED_API virtual bool matched_reader_remove(
90 const GUID_t& reader_guid) = 0;
91
97 FASTDDS_EXPORTED_API virtual bool matched_reader_is_matched(
98 const GUID_t& reader_guid) = 0;
99
109 FASTDDS_EXPORTED_API virtual void reader_data_filter(
110 IReaderDataFilter* filter) = 0;
111
117 FASTDDS_EXPORTED_API virtual const IReaderDataFilter* reader_data_filter() const = 0;
118
126 FASTDDS_EXPORTED_API virtual bool has_been_fully_delivered(
127 const SequenceNumber_t& seq_num) const = 0;
128
137 FASTDDS_EXPORTED_API virtual bool is_acked_by_all(
138 const SequenceNumber_t& seq_num) const = 0;
139
147 FASTDDS_EXPORTED_API virtual bool wait_for_all_acked(
148 const dds::Duration_t& max_wait) = 0;
149
154 FASTDDS_EXPORTED_API virtual void update_attributes(
155 const WriterAttributes& att) = 0;
156
161 FASTDDS_EXPORTED_API virtual WriterListener* get_listener() const = 0;
162
169 FASTDDS_EXPORTED_API virtual bool set_listener(
170 WriterListener* listener) = 0;
171
176 FASTDDS_EXPORTED_API virtual bool is_async() const = 0;
177
184 FASTDDS_EXPORTED_API virtual bool get_disable_positive_acks() const = 0;
185
186#ifdef FASTDDS_STATISTICS
187
193 FASTDDS_EXPORTED_API virtual bool add_statistics_listener(
194 std::shared_ptr<fastdds::statistics::IListener> listener) = 0;
195
201 FASTDDS_EXPORTED_API virtual bool remove_statistics_listener(
202 std::shared_ptr<fastdds::statistics::IListener> listener) = 0;
203
209 FASTDDS_EXPORTED_API virtual void set_enabled_statistics_writers_mask(
210 uint32_t enabled_writers) = 0;
211
218 FASTDDS_EXPORTED_API virtual bool get_connections(
219 fastdds::statistics::rtps::ConnectionList& connection_list) = 0;
220
221#endif // FASTDDS_STATISTICS
222
223private:
224
225 RTPSWriter& operator =(
226 const RTPSWriter&) = delete;
227
228};
229
230} // namespace rtps
231} // namespace fastdds
232} // namespace eprosima
233
234#endif // FASTDDS_RTPS_WRITER__RTPSWRITER_HPP
Class Endpoint, all entities of the RTPS network derive from this class.
Definition Endpoint.hpp:46
friend class RTPSParticipantImpl
Definition Endpoint.hpp:47
Abstract class IReaderDataFilter that acts as virtual interface for data filters in ReaderProxy.
Definition IReaderDataFilter.hpp:36
Class RTPSWriter, manages the sending of data to the readers.
Definition RTPSWriter.hpp:62
virtual FASTDDS_EXPORTED_API bool has_been_fully_delivered(const SequenceNumber_t &seq_num) const =0
Check if a specific change has been delivered to the transport layer of every matched remote RTPSRead...
virtual FASTDDS_EXPORTED_API WriterListener * get_listener() const =0
Get listener.
virtual FASTDDS_EXPORTED_API bool matched_reader_add(const SubscriptionBuiltinTopicData &info)=0
Add a matched reader represented by its attributes.
virtual FASTDDS_EXPORTED_API bool is_async() const =0
Get the publication mode.
RTPSWriter(RTPSParticipantImpl *impl, const GUID_t &guid, const WriterAttributes &att)
virtual FASTDDS_EXPORTED_API bool is_acked_by_all(const SequenceNumber_t &seq_num) const =0
Check if a specific change has been acknowledged by all Readers.
virtual FASTDDS_EXPORTED_API bool wait_for_all_acked(const dds::Duration_t &max_wait)=0
Waits until all changes were acknowledged or max_wait.
virtual FASTDDS_EXPORTED_API const IReaderDataFilter * reader_data_filter() const =0
Get the content filter used to perform content filtering on this writer.
virtual FASTDDS_EXPORTED_API bool get_disable_positive_acks() const =0
Returns if disable positive ACKs QoS is enabled.
virtual FASTDDS_EXPORTED_API void reader_data_filter(IReaderDataFilter *filter)=0
Set a content filter to perform content filtering on this writer.
virtual FASTDDS_EXPORTED_API bool matched_reader_remove(const GUID_t &reader_guid)=0
Remove a matched reader.
virtual FASTDDS_EXPORTED_API bool matched_reader_is_matched(const GUID_t &reader_guid)=0
Tells us if a specific Reader is matched against this writer.
virtual FASTDDS_EXPORTED_API bool set_listener(WriterListener *listener)=0
Set the listener.
virtual FASTDDS_EXPORTED_API void update_attributes(const WriterAttributes &att)=0
Update the Attributes of the Writer.
Class WriterAttributes, defining the attributes of a RTPSWriter.
Definition WriterAttributes.hpp:73
Class WriterListener with virtual method so the user can implement callbacks to certain events.
Definition WriterListener.hpp:40
std::vector< eprosima::fastdds::statistics::Connection > ConnectionList
Definition connections_fwd.hpp:31
eProsima namespace.
Structure Time_t, used to describe times at a DDS level.
Definition Time_t.hpp:36
Structure GUID_t, entity identifier, unique in DDS-RTPS Domain.
Definition Guid.hpp:40
Structure SequenceNumber_t, different for each change in the same writer.
Definition SequenceNumber.hpp:38
Structure SubscriptionBuiltinTopicData, contains the information on a discovered subscription.
Definition SubscriptionBuiltinTopicData.hpp:37