Program Listing for File DataWriter.hpp
↰ Return to documentation for file (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/PublicationBuiltinTopicData.hpp>
#include <fastdds/dds/builtin/topic/SubscriptionBuiltinTopicData.hpp>
#include <fastdds/dds/core/Entity.hpp>
#include <fastdds/dds/core/ReturnCode.hpp>
#include <fastdds/dds/core/status/BaseStatus.hpp>
#include <fastdds/dds/core/status/DeadlineMissedStatus.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/fastdds_dll.hpp>
#include <fastdds/rtps/common/LocatorList.hpp>
#include <fastdds/rtps/common/Time_t.hpp>
namespace eprosima {
namespace fastdds {
namespace rtps {
class WriteParams;
struct GUID_t;
} // namespace rtps
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();
FASTDDS_EXPORTED_API ReturnCode_t enable() override;
FASTDDS_EXPORTED_API ReturnCode_t write(
const void* const data);
FASTDDS_EXPORTED_API ReturnCode_t write(
const void* const data,
fastdds::rtps::WriteParams& params);
FASTDDS_EXPORTED_API ReturnCode_t write(
const void* const data,
const InstanceHandle_t& handle);
FASTDDS_EXPORTED_API ReturnCode_t write_w_timestamp(
const void* const data,
const InstanceHandle_t& handle,
const fastdds::dds::Time_t& timestamp);
FASTDDS_EXPORTED_API InstanceHandle_t register_instance(
const void* const instance);
FASTDDS_EXPORTED_API InstanceHandle_t register_instance_w_timestamp(
const void* const instance,
const fastdds::dds::Time_t& timestamp);
FASTDDS_EXPORTED_API ReturnCode_t unregister_instance(
const void* const instance,
const InstanceHandle_t& handle);
FASTDDS_EXPORTED_API ReturnCode_t unregister_instance_w_timestamp(
const void* const instance,
const InstanceHandle_t& handle,
const fastdds::dds::Time_t& timestamp);
FASTDDS_EXPORTED_API ReturnCode_t get_key_value(
void* key_holder,
const InstanceHandle_t& handle);
FASTDDS_EXPORTED_API InstanceHandle_t lookup_instance(
const void* const instance) const;
FASTDDS_EXPORTED_API const fastdds::rtps::GUID_t& guid() const;
FASTDDS_EXPORTED_API InstanceHandle_t get_instance_handle() const;
FASTDDS_EXPORTED_API TypeSupport get_type() const;
FASTDDS_EXPORTED_API ReturnCode_t wait_for_acknowledgments(
const fastdds::dds::Duration_t& max_wait);
FASTDDS_EXPORTED_API ReturnCode_t get_offered_deadline_missed_status(
OfferedDeadlineMissedStatus& status);
FASTDDS_EXPORTED_API ReturnCode_t get_offered_incompatible_qos_status(
OfferedIncompatibleQosStatus& status);
FASTDDS_EXPORTED_API ReturnCode_t get_publication_matched_status(
PublicationMatchedStatus& status) const;
FASTDDS_EXPORTED_API ReturnCode_t set_qos(
const DataWriterQos& qos);
FASTDDS_EXPORTED_API const DataWriterQos& get_qos() const;
FASTDDS_EXPORTED_API ReturnCode_t get_qos(
DataWriterQos& qos) const;
FASTDDS_EXPORTED_API Topic* get_topic() const;
FASTDDS_EXPORTED_API const DataWriterListener* get_listener() const;
FASTDDS_EXPORTED_API ReturnCode_t set_listener(
DataWriterListener* listener);
FASTDDS_EXPORTED_API ReturnCode_t set_listener(
DataWriterListener* listener,
const StatusMask& mask);
FASTDDS_EXPORTED_API ReturnCode_t dispose(
const void* const data,
const InstanceHandle_t& handle);
FASTDDS_EXPORTED_API ReturnCode_t dispose_w_timestamp(
const void* const instance,
const InstanceHandle_t& handle,
const fastdds::dds::Time_t& timestamp);
FASTDDS_EXPORTED_API ReturnCode_t get_liveliness_lost_status(
LivelinessLostStatus& status);
FASTDDS_EXPORTED_API const Publisher* get_publisher() const;
FASTDDS_EXPORTED_API ReturnCode_t assert_liveliness();
FASTDDS_EXPORTED_API ReturnCode_t get_matched_subscription_data(
SubscriptionBuiltinTopicData& subscription_data,
const InstanceHandle_t& subscription_handle) const;
FASTDDS_EXPORTED_API ReturnCode_t get_matched_subscriptions(
std::vector<InstanceHandle_t>& subscription_handles) const;
FASTDDS_EXPORTED_API ReturnCode_t clear_history(
size_t* removed);
FASTDDS_EXPORTED_API ReturnCode_t loan_sample(
void*& sample,
LoanInitializationKind initialization = LoanInitializationKind::NO_LOAN_INITIALIZATION);
FASTDDS_EXPORTED_API ReturnCode_t discard_loan(
void*& sample);
FASTDDS_EXPORTED_API ReturnCode_t get_sending_locators(
rtps::LocatorList& locators) const;
FASTDDS_EXPORTED_API ReturnCode_t wait_for_acknowledgments(
const void* const instance,
const InstanceHandle_t& handle,
const fastdds::dds::Duration_t& max_wait);
FASTDDS_EXPORTED_API ReturnCode_t get_publication_builtin_topic_data(
PublicationBuiltinTopicData& publication_data) const;
protected:
DataWriterImpl* impl_;
};
} // namespace dds
} // namespace fastdds
} // namespace eprosima
#endif // FASTDDS_DDS_PUBLISHER__DATAWRITER_HPP