Program Listing for File DataWriter.hpp
↰ Return to documentation for file (/tmp/ws/src/fastrtps/include/fastdds/dds/publisher/DataWriter.hpp
)
// Copyright 2019 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_DDS_PUBLISHER_DATAWRITER_HPP_
#define _FASTDDS_DDS_PUBLISHER_DATAWRITER_HPP_
#include <fastdds/dds/builtin/topic/SubscriptionBuiltinTopicData.hpp>
#include <fastdds/dds/core/Entity.hpp>
#include <fastdds/dds/core/status/BaseStatus.hpp>
#include <fastdds/dds/core/status/IncompatibleQosStatus.hpp>
#include <fastdds/dds/core/status/PublicationMatchedStatus.hpp>
#include <fastdds/dds/core/status/StatusMask.hpp>
#include <fastdds/dds/publisher/qos/DataWriterQos.hpp>
#include <fastdds/rtps/common/LocatorList.hpp>
#include <fastdds/rtps/common/Time_t.h>
#include <fastrtps/fastrtps_dll.h>
#include <fastrtps/qos/DeadlineMissedStatus.h>
#include <fastrtps/types/TypesBase.h>
using eprosima::fastrtps::types::ReturnCode_t;
namespace eprosima {
namespace fastrtps {
namespace rtps {
class WriteParams;
struct GUID_t;
} // namespace rtps
} // namespace fastrtps
namespace fastdds {
namespace dds {
class PublisherListener;
class PublisherImpl;
class Publisher;
class TypeSupport;
class DataWriterImpl;
class DataWriterListener;
class DataWriterQos;
class Topic;
class DataWriter : public DomainEntity
{
protected:
friend class PublisherImpl;
friend class DataWriterImpl;
DataWriter(
DataWriterImpl* impl,
const StatusMask& mask = StatusMask::all());
DataWriter(
Publisher* pub,
Topic* topic,
const DataWriterQos& qos = DATAWRITER_QOS_DEFAULT,
DataWriterListener* listener = nullptr,
const StatusMask& mask = StatusMask::all());
public:
enum class LoanInitializationKind
{
NO_LOAN_INITIALIZATION,
ZERO_LOAN_INITIALIZATION,
CONSTRUCTED_LOAN_INITIALIZATION
};
virtual ~DataWriter();
RTPS_DllAPI ReturnCode_t enable() override;
RTPS_DllAPI bool write(
void* data);
RTPS_DllAPI bool write(
void* data,
fastrtps::rtps::WriteParams& params);
RTPS_DllAPI ReturnCode_t write(
void* data,
const InstanceHandle_t& handle);
RTPS_DllAPI ReturnCode_t write_w_timestamp(
void* data,
const InstanceHandle_t& handle,
const fastrtps::Time_t& timestamp);
#ifndef DOXYGEN_SHOULD_SKIP_THIS
FASTDDS_DEPRECATED_UNTIL(3, "eprosima::fastdds::dds:DataWriter::write_w_timestamp()",
"In favor of version using eprosima::fastrtps::Time_t.")
RTPS_DllAPI ReturnCode_t write_w_timestamp(
void* data,
const InstanceHandle_t& handle,
const fastrtps::rtps::Time_t& timestamp);
#endif // DOXYGEN_SHOULD_SKIP_THIS
RTPS_DllAPI InstanceHandle_t register_instance(
void* instance);
RTPS_DllAPI InstanceHandle_t register_instance_w_timestamp(
void* instance,
const fastrtps::Time_t& timestamp);
#ifndef DOXYGEN_SHOULD_SKIP_THIS
FASTDDS_DEPRECATED_UNTIL(3, "eprosima::fastdds::dds:DataWriter::register_instance_w_timestamp()",
"In favor of version using eprosima::fastrtps::Time_t.")
RTPS_DllAPI InstanceHandle_t register_instance_w_timestamp(
void* instance,
const fastrtps::rtps::Time_t& timestamp);
#endif // DOXYGEN_SHOULD_SKIP_THIS
RTPS_DllAPI ReturnCode_t unregister_instance(
void* instance,
const InstanceHandle_t& handle);
RTPS_DllAPI ReturnCode_t unregister_instance_w_timestamp(
void* instance,
const InstanceHandle_t& handle,
const fastrtps::Time_t& timestamp);
#ifndef DOXYGEN_SHOULD_SKIP_THIS
FASTDDS_DEPRECATED_UNTIL(3, "eprosima::fastdds::dds:DataWriter::unregister_instance_w_timestamp()",
"In favor of version using eprosima::fastrtps::Time_t.")
RTPS_DllAPI ReturnCode_t unregister_instance_w_timestamp(
void* instance,
const InstanceHandle_t& handle,
const fastrtps::rtps::Time_t& timestamp);
#endif // DOXYGEN_SHOULD_SKIP_THIS
RTPS_DllAPI ReturnCode_t get_key_value(
void* key_holder,
const InstanceHandle_t& handle);
RTPS_DllAPI InstanceHandle_t lookup_instance(
const void* instance) const;
RTPS_DllAPI const fastrtps::rtps::GUID_t& guid() const;
RTPS_DllAPI InstanceHandle_t get_instance_handle() const;
RTPS_DllAPI TypeSupport get_type() const;
RTPS_DllAPI ReturnCode_t wait_for_acknowledgments(
const fastrtps::Duration_t& max_wait);
RTPS_DllAPI ReturnCode_t get_offered_deadline_missed_status(
OfferedDeadlineMissedStatus& status);
RTPS_DllAPI ReturnCode_t get_offered_incompatible_qos_status(
OfferedIncompatibleQosStatus& status);
RTPS_DllAPI ReturnCode_t get_publication_matched_status(
PublicationMatchedStatus& status) const;
RTPS_DllAPI ReturnCode_t set_qos(
const DataWriterQos& qos);
RTPS_DllAPI const DataWriterQos& get_qos() const;
RTPS_DllAPI ReturnCode_t get_qos(
DataWriterQos& qos) const;
RTPS_DllAPI Topic* get_topic() const;
RTPS_DllAPI const DataWriterListener* get_listener() const;
RTPS_DllAPI ReturnCode_t set_listener(
DataWriterListener* listener);
RTPS_DllAPI ReturnCode_t set_listener(
DataWriterListener* listener,
const StatusMask& mask);
RTPS_DllAPI ReturnCode_t dispose(
void* data,
const InstanceHandle_t& handle);
RTPS_DllAPI ReturnCode_t dispose_w_timestamp(
void* instance,
const InstanceHandle_t& handle,
const fastrtps::Time_t& timestamp);
RTPS_DllAPI ReturnCode_t get_liveliness_lost_status(
LivelinessLostStatus& status);
RTPS_DllAPI const Publisher* get_publisher() const;
RTPS_DllAPI ReturnCode_t assert_liveliness();
RTPS_DllAPI ReturnCode_t get_matched_subscription_data(
builtin::SubscriptionBuiltinTopicData& subscription_data,
const InstanceHandle_t& subscription_handle) const;
RTPS_DllAPI ReturnCode_t get_matched_subscriptions(
std::vector<InstanceHandle_t>& subscription_handles) const;
#ifndef DOXYGEN_SHOULD_SKIP_THIS
FASTDDS_DEPRECATED_UNTIL(3, "eprosima::fastdds::dds:DataWriter::get_matched_subscriptions()",
"In favor of version using std::vector<fastrtps::rtps::InstanceHandle_t>.")
RTPS_DllAPI ReturnCode_t get_matched_subscriptions(
std::vector<InstanceHandle_t*>& subscription_handles) const;
#endif // DOXYGEN_SHOULD_SKIP_THIS
RTPS_DllAPI ReturnCode_t clear_history(
size_t* removed);
RTPS_DllAPI ReturnCode_t loan_sample(
void*& sample,
LoanInitializationKind initialization = LoanInitializationKind::NO_LOAN_INITIALIZATION);
RTPS_DllAPI ReturnCode_t discard_loan(
void*& sample);
RTPS_DllAPI ReturnCode_t get_sending_locators(
rtps::LocatorList& locators) const;
RTPS_DllAPI ReturnCode_t wait_for_acknowledgments(
void* instance,
const InstanceHandle_t& handle,
const fastrtps::Duration_t& max_wait);
protected:
DataWriterImpl* impl_;
};
} /* namespace dds */
} /* namespace fastdds */
} /* namespace eprosima */
#endif // _FASTDDS_DDS_PUBLISHER_DATAWRITER_HPP_