Fast DDS  Version 3.6.1.0
Fast DDS
DataWriter.hpp
1 // Copyright 2019 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_DDS_PUBLISHER__DATAWRITER_HPP
20 #define FASTDDS_DDS_PUBLISHER__DATAWRITER_HPP
21 
22 #include <fastdds/dds/builtin/topic/PublicationBuiltinTopicData.hpp>
23 #include <fastdds/dds/builtin/topic/SubscriptionBuiltinTopicData.hpp>
24 #include <fastdds/dds/core/Entity.hpp>
25 #include <fastdds/dds/core/ReturnCode.hpp>
26 #include <fastdds/dds/core/status/BaseStatus.hpp>
27 #include <fastdds/dds/core/status/DeadlineMissedStatus.hpp>
28 #include <fastdds/dds/core/status/IncompatibleQosStatus.hpp>
29 #include <fastdds/dds/core/status/PublicationMatchedStatus.hpp>
30 #include <fastdds/dds/core/status/StatusMask.hpp>
31 #include <fastdds/dds/publisher/qos/DataWriterQos.hpp>
32 #include <fastdds/fastdds_dll.hpp>
33 #include <fastdds/rtps/common/LocatorList.hpp>
34 #include <fastdds/rtps/common/Time_t.hpp>
35 #include <fastdds/dds/topic/TopicDataType.hpp>
36 
37 namespace eprosima {
38 namespace fastdds {
39 namespace rtps {
40 
41 class WriteParams;
42 struct GUID_t;
43 
44 } // namespace rtps
45 
46 namespace dds {
47 
48 class DataReader;
49 class PublisherListener;
50 class PublisherImpl;
51 class Publisher;
52 
53 class TypeSupport;
54 
55 class DataWriterImpl;
56 class DataWriterListener;
57 class DataWriterQos;
58 class Topic;
59 
60 struct IContentFilter;
61 
67 class DataWriter : public DomainEntity
68 {
69 protected:
70 
71  friend class PublisherImpl;
72  friend class DataWriterImpl;
73 
79  DataWriterImpl* impl,
80  const StatusMask& mask = StatusMask::all());
81 
83  Publisher* pub,
84  Topic* topic,
86  DataWriterListener* listener = nullptr,
87  const StatusMask& mask = StatusMask::all());
88 
89 public:
90 
95  {
104 
112 
120  };
121 
122  virtual ~DataWriter();
123 
130  FASTDDS_EXPORTED_API ReturnCode_t enable() override;
131 
138  FASTDDS_EXPORTED_API ReturnCode_t write(
139  const void* const data);
140 
148  FASTDDS_EXPORTED_API ReturnCode_t write(
149  const void* const data,
151 
163  FASTDDS_EXPORTED_API ReturnCode_t write(
164  const void* const data,
165  const InstanceHandle_t& handle);
166 
183  FASTDDS_EXPORTED_API ReturnCode_t write_w_timestamp(
184  const void* const data,
185  const InstanceHandle_t& handle,
186  const fastdds::dds::Time_t& timestamp);
187 
197  FASTDDS_EXPORTED_API InstanceHandle_t register_instance(
198  const void* const instance);
199 
219  const void* const instance,
220  const fastdds::dds::Time_t& timestamp);
221 
233  FASTDDS_EXPORTED_API ReturnCode_t unregister_instance(
234  const void* const instance,
235  const InstanceHandle_t& handle);
236 
257  const void* const instance,
258  const InstanceHandle_t& handle,
259  const fastdds::dds::Time_t& timestamp);
260 
275  FASTDDS_EXPORTED_API ReturnCode_t get_key_value(
276  void* key_holder,
277  const InstanceHandle_t& handle);
278 
290  FASTDDS_EXPORTED_API InstanceHandle_t lookup_instance(
291  const void* const instance) const;
292 
298  FASTDDS_EXPORTED_API const fastdds::rtps::GUID_t& guid() const;
299 
305  FASTDDS_EXPORTED_API InstanceHandle_t get_instance_handle() const;
306 
312  FASTDDS_EXPORTED_API TypeSupport get_type() const;
313 
321  const fastdds::dds::Duration_t& max_wait);
322 
331 
340 
348  PublicationMatchedStatus& status) const;
349 
357  FASTDDS_EXPORTED_API ReturnCode_t set_qos(
358  const DataWriterQos& qos);
359 
365  FASTDDS_EXPORTED_API const DataWriterQos& get_qos() const;
366 
373  FASTDDS_EXPORTED_API ReturnCode_t get_qos(
374  DataWriterQos& qos) const;
375 
381  FASTDDS_EXPORTED_API Topic* get_topic() const;
382 
388  FASTDDS_EXPORTED_API const DataWriterListener* get_listener() const;
389 
396  FASTDDS_EXPORTED_API ReturnCode_t set_listener(
397  DataWriterListener* listener);
398 
406  FASTDDS_EXPORTED_API ReturnCode_t set_listener(
407  DataWriterListener* listener,
408  const StatusMask& mask);
409 
425  FASTDDS_EXPORTED_API ReturnCode_t dispose(
426  const void* const data,
427  const InstanceHandle_t& handle);
428 
449  FASTDDS_EXPORTED_API ReturnCode_t dispose_w_timestamp(
450  const void* const instance,
451  const InstanceHandle_t& handle,
452  const fastdds::dds::Time_t& timestamp);
460  LivelinessLostStatus& status);
461 
467  FASTDDS_EXPORTED_API const Publisher* get_publisher() const;
468 
481  FASTDDS_EXPORTED_API ReturnCode_t assert_liveliness();
482 
491  SubscriptionBuiltinTopicData& subscription_data,
492  const InstanceHandle_t& subscription_handle) const;
493 
501  std::vector<InstanceHandle_t>& subscription_handles) const;
502 
509  FASTDDS_EXPORTED_API ReturnCode_t clear_history(
510  size_t* removed);
511 
537  FASTDDS_EXPORTED_API ReturnCode_t loan_sample(
538  void*& sample,
540 
553  FASTDDS_EXPORTED_API ReturnCode_t discard_loan(
554  void*& sample);
555 
564  FASTDDS_EXPORTED_API ReturnCode_t get_sending_locators(
565  rtps::LocatorList& locators) const;
566 
584  const void* const instance,
585  const InstanceHandle_t& handle,
586  const fastdds::dds::Duration_t& max_wait);
587 
597  PublicationBuiltinTopicData& publication_data) const;
598 
611  FASTDDS_EXPORTED_API ReturnCode_t set_sample_prefilter(
612  std::shared_ptr<IContentFilter> prefilter);
613 
629  FASTDDS_EXPORTED_API ReturnCode_t set_related_datareader(
630  const DataReader* related_reader);
631 
642  const std::shared_ptr<TopicDataType::Context>& context);
643 
644 protected:
645 
647 };
648 
649 } // namespace dds
650 } // namespace fastdds
651 } // namespace eprosima
652 
653 #endif // FASTDDS_DDS_PUBLISHER__DATAWRITER_HPP
Class DataReader, contains the actual implementation of the behaviour of the Subscriber.
Definition: DataReader.hpp:85
Class DataWriter, contains the actual implementation of the behaviour of the DataWriter.
Definition: DataWriter.hpp:68
FASTDDS_EXPORTED_API ReturnCode_t set_listener(DataWriterListener *listener, const StatusMask &mask)
Modifies the DataWriterListener.
FASTDDS_EXPORTED_API ReturnCode_t discard_loan(void *&sample)
Discards a loaned sample pointer.
FASTDDS_EXPORTED_API ReturnCode_t get_liveliness_lost_status(LivelinessLostStatus &status)
Returns the liveliness lost status.
FASTDDS_EXPORTED_API InstanceHandle_t register_instance_w_timestamp(const void *const instance, const fastdds::dds::Time_t &timestamp)
This operation performs the same function as register_instance and can be used instead of register_in...
FASTDDS_EXPORTED_API ReturnCode_t dispose(const void *const data, const InstanceHandle_t &handle)
This operation requests the middleware to delete the data (the actual deletion is postponed until the...
FASTDDS_EXPORTED_API ReturnCode_t set_related_datareader(const DataReader *related_reader)
This operation sets the key of the DataReader that is related to this DataWriter.
FASTDDS_EXPORTED_API ReturnCode_t write(const void *const data, fastdds::rtps::WriteParams &params)
Write data with params to the topic.
FASTDDS_EXPORTED_API ReturnCode_t set_qos(const DataWriterQos &qos)
Establishes the DataWriterQos for this DataWriter.
FASTDDS_EXPORTED_API ReturnCode_t set_type_support_context(const std::shared_ptr< TopicDataType::Context > &context)
Set the type support context to be used when serializing data for this DataWriter.
FASTDDS_EXPORTED_API ReturnCode_t assert_liveliness()
This operation manually asserts the liveliness of the DataWriter.
friend class DataWriterImpl
Definition: DataWriter.hpp:72
FASTDDS_EXPORTED_API ReturnCode_t write(const void *const data)
Write data to the topic.
FASTDDS_EXPORTED_API const Publisher * get_publisher() const
Getter for the Publisher that creates this DataWriter.
FASTDDS_EXPORTED_API ReturnCode_t loan_sample(void *&sample, LoanInitializationKind initialization=LoanInitializationKind::NO_LOAN_INITIALIZATION)
Get a pointer to the internal pool where the user could directly write.
DataWriter(DataWriterImpl *impl, const StatusMask &mask=StatusMask::all())
Create a data writer, assigning its pointer to the associated implementation.
DataWriterImpl * impl_
Definition: DataWriter.hpp:646
DataWriter(Publisher *pub, Topic *topic, const DataWriterQos &qos=DATAWRITER_QOS_DEFAULT, DataWriterListener *listener=nullptr, const StatusMask &mask=StatusMask::all())
FASTDDS_EXPORTED_API ReturnCode_t get_matched_subscription_data(SubscriptionBuiltinTopicData &subscription_data, const InstanceHandle_t &subscription_handle) const
Retrieves in a subscription associated with the DataWriter.
FASTDDS_EXPORTED_API ReturnCode_t get_publication_matched_status(PublicationMatchedStatus &status) const
Returns the publication matched status.
FASTDDS_EXPORTED_API ReturnCode_t unregister_instance(const void *const instance, const InstanceHandle_t &handle)
This operation reverses the action of register_instance.
FASTDDS_EXPORTED_API TypeSupport get_type() const
Get data type associated to the DataWriter.
FASTDDS_EXPORTED_API InstanceHandle_t lookup_instance(const void *const instance) const
NOT YET IMPLEMENTED.
FASTDDS_EXPORTED_API ReturnCode_t get_key_value(void *key_holder, const InstanceHandle_t &handle)
This operation can be used to retrieve the instance key that corresponds to an instance_handle.
LoanInitializationKind
How to initialize samples loaned with loan_sample.
Definition: DataWriter.hpp:95
@ ZERO_LOAN_INITIALIZATION
Initialize all memory with zero-valued bytes.
@ NO_LOAN_INITIALIZATION
Do not perform initialization of sample.
@ CONSTRUCTED_LOAN_INITIALIZATION
Use in-place constructor initialization.
FASTDDS_EXPORTED_API ReturnCode_t get_sending_locators(rtps::LocatorList &locators) const
Get the list of locators from which this DataWriter may send data.
FASTDDS_EXPORTED_API InstanceHandle_t get_instance_handle() const
Returns the DataWriter's InstanceHandle.
FASTDDS_EXPORTED_API ReturnCode_t unregister_instance_w_timestamp(const void *const instance, const InstanceHandle_t &handle, const fastdds::dds::Time_t &timestamp)
This operation performs the same function as unregister_instance and can be used instead of unregiste...
FASTDDS_EXPORTED_API ReturnCode_t get_offered_incompatible_qos_status(OfferedIncompatibleQosStatus &status)
Returns the offered incompatible qos status.
FASTDDS_EXPORTED_API ReturnCode_t set_listener(DataWriterListener *listener)
Modifies the DataWriterListener, sets the mask to StatusMask::all()
FASTDDS_EXPORTED_API const DataWriterListener * get_listener() const
Retrieves the listener for this DataWriter.
FASTDDS_EXPORTED_API ReturnCode_t get_publication_builtin_topic_data(PublicationBuiltinTopicData &publication_data) const
Retrieve the publication data discovery information.
FASTDDS_EXPORTED_API InstanceHandle_t register_instance(const void *const instance)
Informs that the application will be modifying a particular instance.
FASTDDS_EXPORTED_API ReturnCode_t set_sample_prefilter(std::shared_ptr< IContentFilter > prefilter)
Set a sample prefilter to be used.
FASTDDS_EXPORTED_API ReturnCode_t dispose_w_timestamp(const void *const instance, const InstanceHandle_t &handle, const fastdds::dds::Time_t &timestamp)
This operation performs the same functions as dispose except that the application provides the value ...
FASTDDS_EXPORTED_API ReturnCode_t enable() override
This operation enables the DataWriter.
FASTDDS_EXPORTED_API ReturnCode_t get_matched_subscriptions(std::vector< InstanceHandle_t > &subscription_handles) const
Fills the given vector with the InstanceHandle_t of matched DataReaders.
FASTDDS_EXPORTED_API ReturnCode_t write(const void *const data, const InstanceHandle_t &handle)
Write data with handle.
friend class PublisherImpl
Definition: DataWriter.hpp:71
FASTDDS_EXPORTED_API const DataWriterQos & get_qos() const
Retrieves the DataWriterQos for this DataWriter.
FASTDDS_EXPORTED_API ReturnCode_t wait_for_acknowledgments(const void *const instance, const InstanceHandle_t &handle, const fastdds::dds::Duration_t &max_wait)
Block the current thread until the writer has received the acknowledgment corresponding to the given ...
FASTDDS_EXPORTED_API ReturnCode_t get_offered_deadline_missed_status(OfferedDeadlineMissedStatus &status)
Returns the offered deadline missed status.
FASTDDS_EXPORTED_API Topic * get_topic() const
Retrieves the topic for this DataWriter.
FASTDDS_EXPORTED_API ReturnCode_t wait_for_acknowledgments(const fastdds::dds::Duration_t &max_wait)
Waits the current thread until all writers have received their acknowledgments.
FASTDDS_EXPORTED_API const fastdds::rtps::GUID_t & guid() const
Returns the DataWriter's GUID.
FASTDDS_EXPORTED_API ReturnCode_t write_w_timestamp(const void *const data, const InstanceHandle_t &handle, const fastdds::dds::Time_t &timestamp)
This operation performs the same function as write except that it also provides the value for the sou...
FASTDDS_EXPORTED_API ReturnCode_t clear_history(size_t *removed)
Clears the DataWriter history.
FASTDDS_EXPORTED_API ReturnCode_t get_qos(DataWriterQos &qos) const
Fills the DataWriterQos with the values of this DataWriter.
Class DataWriterListener, allows the end user to implement callbacks triggered by certain events.
Definition: DataWriterListener.hpp:39
Class DataWriterQos, containing all the possible Qos that can be set for a determined DataWriter.
Definition: DataWriterQos.hpp:44
The DomainEntity class is a subclass of Entity created in order to differentiate between DomainPartic...
Definition: Entity.hpp:176
Class Publisher, used to send data to associated subscribers.
Definition: Publisher.hpp:61
StatusMask is a bitmap or bitset field.
Definition: StatusMask.hpp:48
static StatusMask all()
Get all StatusMasks.
Definition: StatusMask.hpp:104
Class Topic, represents the fact that both publications and subscriptions are tied to a single data-t...
Definition: Topic.hpp:53
Class TypeSupport used to provide the DomainRTPSParticipant with the methods to serialize,...
Definition: TypeSupport.hpp:47
Class LocatorList, a Locator vector that doesn't allow duplicates.
Definition: LocatorList.hpp:97
This class contains additional information of a CacheChange.
Definition: WriteParams.hpp:37
Definition: DomainParticipant.hpp:46
FASTDDS_EXPORTED_API const DataWriterQos DATAWRITER_QOS_DEFAULT
int32_t ReturnCode_t
Definition: DDSReturnCode.hpp:59
A struct storing the base status.
Definition: BaseStatus.hpp:30
A struct storing the deadline status.
Definition: DeadlineMissedStatus.hpp:31
A struct storing the requested incompatible QoS status.
Definition: IncompatibleQosStatus.hpp:61
A structure storing the publication status.
Definition: PublicationMatchedStatus.hpp:32
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
Struct InstanceHandle_t, used to contain the key for WITH_KEY topics.
Definition: InstanceHandle.hpp:154
Structure PublicationBuiltinTopicData, contains the information on a discovered publication.
Definition: PublicationBuiltinTopicData.hpp:48
Structure SubscriptionBuiltinTopicData, contains the information on a discovered subscription.
Definition: SubscriptionBuiltinTopicData.hpp:47