Class Publisher

Inheritance Relationships

Base Type

Class Documentation

class Publisher : public eprosima::fastdds::dds::DomainEntity

Class Publisher, used to send data to associated subscribers.

Public Functions

virtual ~Publisher()

Destructor.

virtual RTPS_DllAPI ReturnCode_t enable () override

This operation enables the Publisher.

Returns:

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

RTPS_DllAPI const PublisherQos & get_qos () const

Allows accessing the Publisher Qos.

Returns:

PublisherQos reference

RTPS_DllAPI ReturnCode_t get_qos (PublisherQos &qos) const

Retrieves the Publisher Qos.

Returns:

RETCODE_OK

RTPS_DllAPI ReturnCode_t set_qos (const PublisherQos &qos)

Allows modifying the Publisher Qos. The given Qos must be supported by the PublisherQos.

Parameters:

qosPublisherQos to be set

Returns:

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.

RTPS_DllAPI const PublisherListener * get_listener () const

Retrieves the attached PublisherListener.

Returns:

PublisherListener pointer

RTPS_DllAPI ReturnCode_t set_listener (PublisherListener *listener)

Modifies the PublisherListener, sets the mask to StatusMask::all()

Parameters:

listener – new value for the PublisherListener

Returns:

RETCODE_OK

RTPS_DllAPI ReturnCode_t set_listener (PublisherListener *listener, const StatusMask &mask)

Modifies the PublisherListener.

Parameters:
Returns:

RETCODE_OK

RTPS_DllAPI DataWriter * create_datawriter (Topic *topic, const DataWriterQos &qos, DataWriterListener *listener=nullptr, const StatusMask &mask=StatusMask::all(), std::shared_ptr< fastrtps::rtps::IPayloadPool > payload_pool=nullptr)

This operation creates a DataWriter. The returned DataWriter will be attached and belongs to the Publisher.

Parameters:
  • topicTopic the DataWriter will be listening

  • qos – QoS of the DataWriter.

  • listener – Pointer to the listener (default: nullptr).

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

  • payload_pool – IPayloadPool shared pointer that defines writer payload (default: nullptr).

Returns:

Pointer to the created DataWriter. nullptr if failed.

RTPS_DllAPI DataWriter * create_datawriter_with_profile (Topic *topic, const std::string &profile_name, DataWriterListener *listener=nullptr, const StatusMask &mask=StatusMask::all(), std::shared_ptr< fastrtps::rtps::IPayloadPool > payload_pool=nullptr)

This operation creates a DataWriter. The returned DataWriter will be attached and belongs to the Publisher.

Parameters:
  • topicTopic the DataWriter will be listening

  • profile_nameDataWriter profile name.

  • listener – Pointer to the listener (default: nullptr).

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

  • payload_pool – IPayloadPool shared pointer that defines writer payload (default: nullptr).

Returns:

Pointer to the created DataWriter. nullptr if failed.

RTPS_DllAPI ReturnCode_t delete_datawriter (const DataWriter *writer)

This operation deletes a DataWriter that belongs to the Publisher.

The delete_datawriter operation must be called on the same Publisher object used to create the DataWriter. If delete_datawriter is called on a different Publisher, the operation will have no effect and it will return false.

The deletion of the DataWriter will automatically unregister all instances. Depending on the settings of the WRITER_DATA_LIFECYCLE QosPolicy, the deletion of the DataWriter may also dispose all instances.

Parameters:

writerDataWriter to delete

Returns:

RETCODE_PRECONDITION_NOT_MET if it does not belong to this Publisher, RETCODE_OK if it is correctly deleted and RETCODE_ERROR otherwise.

RTPS_DllAPI DataWriter * lookup_datawriter (const std::string &topic_name) const

This operation retrieves a previously created DataWriter belonging to the Publisher that is attached to a Topic with a matching topic_name. If no such DataWriter exists, the operation will return nullptr.

If multiple DataWriter attached to the Publisher satisfy this condition, then the operation will return one of them. It is not specified which one.

Parameters:

topic_name – Name of the Topic

Returns:

Pointer to a previously created DataWriter associated to a Topic with the requested topic_name

RTPS_DllAPI ReturnCode_t suspend_publications ()

Indicates to FastDDS that the contained DataWriters are about to be modified.

Warning

Not supported yet. Currently returns RETCODE_UNSUPPORTED

Returns:

RETCODE_OK if successful, an error code otherwise

RTPS_DllAPI ReturnCode_t resume_publications ()

Indicates to FastDDS that the modifications to the DataWriters are complete.

Warning

Not supported yet. Currently returns RETCODE_UNSUPPORTED

Returns:

RETCODE_OK if successful, an error code otherwise

RTPS_DllAPI ReturnCode_t begin_coherent_changes ()

Signals the beginning of a set of coherent cache changes using the Datawriters attached to the publisher.

Warning

Not supported yet. Currently returns RETCODE_UNSUPPORTED

Returns:

RETCODE_OK if successful, an error code otherwise

RTPS_DllAPI ReturnCode_t end_coherent_changes ()

Signals the end of a set of coherent cache changes.

Warning

Not supported yet. Currently returns RETCODE_UNSUPPORTED

Returns:

RETCODE_OK if successful, an error code otherwise

RTPS_DllAPI ReturnCode_t wait_for_acknowledgments (const fastrtps::Duration_t &max_wait)

This operation blocks the calling thread until either all data written by the reliable DataWriter entities is acknowledged by all matched reliable DataReader entities, or else the duration specified by the max_wait parameter elapses, whichever happens first. A return value of true indicates that all the samples written have been acknowledged by all reliable matched data readers; a return value of false indicates that max_wait elapsed before all the data was acknowledged.

Parameters:

max_wait – Maximum blocking time for this operation

Returns:

RETCODE_TIMEOUT if the function takes more than the maximum blocking time established, RETCODE_OK if the Publisher receives the acknowledgments and RETCODE_ERROR otherwise.

RTPS_DllAPI const DomainParticipant * get_participant () const

This operation returns the DomainParticipant to which the Publisher belongs.

Returns:

Pointer to the DomainParticipant

RTPS_DllAPI ReturnCode_t delete_contained_entities ()

Deletes all contained DataWriters.

Returns:

RETCODE_OK if successful, an error code otherwise

RTPS_DllAPI ReturnCode_t set_default_datawriter_qos (const DataWriterQos &qos)

This operation sets a default value of the DataWriter QoS policies which will be used for newly created DataWriter entities in the case where the QoS policies are defaulted in the create_datawriter operation.

This operation will check that the resulting policies are self consistent; if they are not, the operation will have no effect and return false.

The special value DATAWRITER_QOS_DEFAULT may be passed to this operation to indicate that the default QoS should be reset back to the initial values the factory would use, that is the values that would be used if the set_default_datawriter_qos operation had never been called.

Parameters:

qosDataWriterQos to be set

Returns:

RETCODE_INCONSISTENT_POLICY if the Qos is not self consistent and RETCODE_OK if the qos is changed correctly.

RTPS_DllAPI const DataWriterQos & get_default_datawriter_qos () const

This operation returns the default value of the DataWriter QoS, that is, the QoS policies which will be used for newly created DataWriter entities in the case where the QoS policies are defaulted in the create_datawriter operation.

The values retrieved by get_default_datawriter_qos will match the set of values specified on the last successful call to set_default_datawriter_qos, or else, if the call was never made, the default values.

Returns:

Current default WriterQos

RTPS_DllAPI ReturnCode_t get_default_datawriter_qos (DataWriterQos &qos) const

This operation retrieves the default value of the DataWriter QoS, that is, the QoS policies which will be used for newly created DataWriter entities in the case where the QoS policies are defaulted in the create_datawriter operation.

The values retrieved by get_default_datawriter_qos will match the set of values specified on the last successful call to set_default_datawriter_qos, or else, if the call was never made, the default values.

Parameters:

qos – Reference to the current default WriterQos.

Returns:

RETCODE_OK

RTPS_DllAPI ReturnCode_t copy_from_topic_qos (fastdds::dds::DataWriterQos &writer_qos, const fastdds::dds::TopicQos &topic_qos) const

Copies TopicQos into the corresponding DataWriterQos.

Warning

Not supported yet. Currently returns RETCODE_UNSUPPORTED

Parameters:
  • writer_qos[out]

  • topic_qos[in]

Returns:

RETCODE_OK if successful, an error code otherwise

RTPS_DllAPI ReturnCode_t get_datawriter_qos_from_profile (const std::string &profile_name, DataWriterQos &qos) const

Fills the DataWriterQos with the values of the XML profile.

Parameters:
Returns:

RETCODE_OK if the profile exists. RETCODE_BAD_PARAMETER otherwise.

RTPS_DllAPI const InstanceHandle_t & get_instance_handle () const

Returns the Publisher’s handle.

Returns:

InstanceHandle of this Publisher.

RTPS_DllAPI bool get_datawriters (std::vector< DataWriter * > &writers) const

Fills the given vector with all the datawriters of this publisher.

Parameters:

writers – Vector where the DataWriters are returned

Returns:

true

RTPS_DllAPI bool has_datawriters () const

This operation checks if the publisher has DataWriters

Returns:

true if the publisher has one or several DataWriters, false otherwise

Protected Functions

Publisher(PublisherImpl *p, const StatusMask &mask = StatusMask::all())

Create a publisher, assigning its pointer to the associated implementation. Don’t use directly, create Publisher using create_publisher from DomainParticipant.

Publisher(DomainParticipant *dp, const PublisherQos &qos = PUBLISHER_QOS_DEFAULT, PublisherListener *listener = nullptr, const StatusMask &mask = StatusMask::all())

Protected Attributes

PublisherImpl *impl_

Friends

friend class PublisherImpl
friend class DomainParticipantImpl
friend class ::dds::pub::Publisher