# 14.1.3.1. DataWriter¶

class eprosima::fastdds::dds::DataWriter : public eprosima::fastdds::dds::DomainEntity

Class DataWriter, contains the actual implementation of the behaviour of the DataWriter.

Public Functions

ReturnCode_t enable() override

This operation enables the DataWriter.

Return

RETCODE_OK is successfully enabled. RETCODE_PRECONDITION_NOT_MET if the Publisher creating this DataWriter is not enabled.

bool write(void *data)

Write data to the topic.

Return

True if correct, false otherwise

Parameters
• data: Pointer to the data

bool write(void *data, fastrtps::rtps::WriteParams &params)

Write data with params to the topic.

Return

True if correct, false otherwise

Parameters
• data: Pointer to the data

• params: Extra write parameters.

ReturnCode_t write(void *data, const fastrtps::rtps::InstanceHandle_t &handle)

Write data with handle.

The special value HANDLE_NIL can be used for the parameter handle.This indicates that the identity of the instance should be automatically deduced from the instance_data (by means of the key).

Return

RETCODE_PRECONDITION_NOT_MET if the handle introduced does not match with the one associated to the data, RETCODE_OK if the data is correctly sent and RETCODE_ERROR otherwise.

Parameters
• data: Pointer to the data

• handle: InstanceHandle_t.

fastrtps::rtps::InstanceHandle_t register_instance(void *instance)

Informs that the application will be modifying a particular instance.

It gives an opportunity to the middleware to pre-configure itself to improve performance.

Return

Handle containing the instance’s key. This handle could be used in successive write or dispose operations. In case of error, HANDLE_NIL will be returned.

Parameters
• [in] instance: Sample used to get the instance’s key.

ReturnCode_t unregister_instance(void *instance, const fastrtps::rtps::InstanceHandle_t &handle)

This operation reverses the action of register_instance.

It should only be called on an instance that is currently registered. Informs the middleware that the DataWriter is not intending to modify any more of that data instance. Also indicates that the middleware can locally remove all information regarding that instance.

Return

Returns the operation’s result. If the operation finishes successfully, ReturnCode_t::RETCODE_OK is returned.

Parameters
• [in] instance: Sample used to deduce instance’s key in case of handle parameter is HANDLE_NIL.

• [in] handle: Instance’s key to be unregistered.

const fastrtps::rtps::GUID_t &guid()

Returns the DataWriter’s GUID

Return

Reference to the DataWriter GUID

fastrtps::rtps::InstanceHandle_t get_instance_handle() const

Returns the DataWriter’s InstanceHandle

Return

Copy of the DataWriter InstanceHandle

TypeSupport get_type() const

Get data type associated to the DataWriter

Return

Copy of the TypeSupport

ReturnCode_t wait_for_acknowledgments(const fastrtps::Duration_t &max_wait)

Return

RETCODE_OK if the DataWriter receive the acknowledgments before the time expires and RETCODE_ERROR otherwise

Parameters
• max_wait: Maximum blocking time for this operation

ReturnCode_t get_offered_deadline_missed_status(fastrtps::OfferedDeadlineMissedStatus &status)

Returns the offered deadline missed status.

Return

RETCODE_OK

Parameters
• [out] status: Deadline missed status struct

ReturnCode_t get_offered_incompatible_qos_status(OfferedIncompatibleQosStatus &status)

Returns the offered incompatible qos status.

Return

RETCODE_OK

Parameters
• [out] status: Offered incompatible qos status struct

ReturnCode_t set_qos(const DataWriterQos &qos)

Establishes the DataWriterQos for this DataWriter.

Return

RETCODE_IMMUTABLE_POLICY if any of the Qos cannot be changed, RETCODE_INCONSISTENT_POLICY if the Qos is not self consistent and RETCODE_OK if the qos is changed correctly.

Parameters

const DataWriterQos &get_qos() const

Retrieves the DataWriterQos for this DataWriter.

Return

Reference to the current DataWriterQos

ReturnCode_t get_qos(DataWriterQos &qos) const

Fills the DataWriterQos with the values of this DataWriter.

Return

RETCODE_OK

Parameters
• qos: DataWriterQos object where the qos is returned.

Topic *get_topic() const

Retrieves the topic for this DataWriter.

Return

Pointer to the associated Topic

const DataWriterListener *get_listener() const

Retrieves the listener for this DataWriter.

Return

Pointer to the DataWriterListener

ReturnCode_t set_listener(DataWriterListener *listener)

Return

RETCODE_OK

Parameters

ReturnCode_t set_listener(DataWriterListener *listener, const StatusMask &mask)

Modifies the DataWriterListener.

Return

RETCODE_OK

Parameters
• listener: new value for the DataWriterListener

• mask: StatusMask that holds statuses the listener responds to (default: all).

ReturnCode_t dispose(void *data, const fastrtps::rtps::InstanceHandle_t &handle)

This operation requests the middleware to delete the data (the actual deletion is postponed until there is no more use for that data in the whole system). In general, applications are made aware of the deletion by means of operations on the DataReader objects that already knew that instance. This operation does not modify the value of the instance. The instance parameter is passed just for the purposes of identifying the instance. When this operation is used, the Service will automatically supply the value of the source_timestamp that is made available to DataReader objects by means of the source_timestamp attribute inside the SampleInfo. The constraints on the values of the handle parameter and the corresponding error behavior are the same specified for the unregister_instance operation.

Return

RETCODE_PRECONDITION_NOT_MET if the handle introduced does not match with the one associated to the data, RETCODE_OK if the data is correctly sent and RETCODE_ERROR otherwise.

Parameters
• [in] data: Sample used to deduce instance’s key in case of handle parameter is HANDLE_NIL.

• [in] handle: InstanceHandle of the data

ReturnCode_t get_liveliness_lost_status(LivelinessLostStatus &status)

Returns the liveliness lost status.

Return

RETCODE_OK

Parameters
• status: Liveliness lost status struct

const Publisher *get_publisher() const

Getter for the Publisher that creates this DataWriter.

Return

Pointer to the Publisher

ReturnCode_t assert_liveliness()

This operation manually asserts the liveliness of the DataWriter. This is used in combination with the LivelinessQosPolicy to indicate to the Service that the entity remains active. This operation need only be used if the LIVELINESS setting is either MANUAL_BY_PARTICIPANT or MANUAL_BY_TOPIC. Otherwise, it has no effect.

Note

Writing data via the write operation on a DataWriter asserts liveliness on the DataWriter itself and its DomainParticipant. Consequently the use of assert_liveliness is only needed if the application is not writing data regularly.

Return

RETCODE_OK if asserted, RETCODE_ERROR otherwise

ReturnCode_t clear_history(size_t *removed)

Clears the DataWriter history.

Return

RETCODE_OK if the samples are removed and RETCODE_ERROR otherwise

Parameters
• removed: size_t pointer to return the size of the data removed