Skip to content

Commit

Permalink
Refs #21357. Remove WriterQos from register_writer.
Browse files Browse the repository at this point in the history
Signed-off-by: Miguel Company <miguelcompany@eprosima.com>
  • Loading branch information
MiguelCompany committed Jul 24, 2024
1 parent c119820 commit b73d265
Show file tree
Hide file tree
Showing 17 changed files with 64 additions and 70 deletions.
8 changes: 3 additions & 5 deletions examples/cpp/rtps/WriterApp.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -108,13 +108,11 @@ WriterApp::WriterApp(
PublicationBuiltinTopicData pub_builtin_data;
pub_builtin_data.type_name = "HelloWorld";
pub_builtin_data.topic_name = topic_name;

eprosima::fastdds::dds::WriterQos writer_qos;
writer_qos.m_durability.kind = eprosima::fastdds::dds::TRANSIENT_LOCAL_DURABILITY_QOS;
writer_qos.m_reliability.kind = eprosima::fastdds::dds::RELIABLE_RELIABILITY_QOS;
pub_builtin_data.durability.kind = eprosima::fastdds::dds::TRANSIENT_LOCAL_DURABILITY_QOS;
pub_builtin_data.reliability.kind = eprosima::fastdds::dds::RELIABLE_RELIABILITY_QOS;

// Register entity
if (!rtps_participant_->register_writer(rtps_writer_, pub_builtin_data, writer_qos))
if (!rtps_participant_->register_writer(rtps_writer_, pub_builtin_data))
{
throw std::runtime_error("Entity registration failed");
}
Expand Down
4 changes: 1 addition & 3 deletions include/fastdds/rtps/participant/RTPSParticipant.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -142,13 +142,11 @@ class FASTDDS_EXPORTED_API RTPSParticipant
* Register a Writer in the BuiltinProtocols.
* @param rtps_writer Pointer to the RTPSWriter.
* @param pub_builtin_data Contains the discovery information of the writer.
* @param wqos WriterQos.
* @return True if correctly registered.
*/
bool register_writer(
RTPSWriter* rtps_writer,
const PublicationBuiltinTopicData& pub_builtin_data,
const fastdds::dds::WriterQos& wqos);
const PublicationBuiltinTopicData& pub_builtin_data);

/**
* Register a Reader in the BuiltinProtocols.
Expand Down
22 changes: 17 additions & 5 deletions src/cpp/fastdds/publisher/DataWriterImpl.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -457,23 +457,23 @@ ReturnCode_t DataWriterImpl::enable()
}

// REGISTER THE WRITER
WriterQos wqos = qos_.get_writerqos(get_publisher()->get_qos(), topic_->get_qos());
auto builtin_topic_data = get_publication_builtin_topic_data();
if (!is_data_sharing_compatible_)
{
wqos.data_sharing.off();
builtin_topic_data.data_sharing.off();
}
if (endpoint_partitions)
{
std::istringstream partition_string(*endpoint_partitions);
std::string partition_name;
wqos.m_partition.clear();
builtin_topic_data.partition.clear();

while (std::getline(partition_string, partition_name, ';'))
{
wqos.m_partition.push_back(partition_name.c_str());
builtin_topic_data.partition.push_back(partition_name.c_str());
}
}
publisher_->rtps_participant()->register_writer(writer_, get_publication_builtin_topic_data(), wqos);
publisher_->rtps_participant()->register_writer(writer_, builtin_topic_data);

return RETCODE_OK;
}
Expand Down Expand Up @@ -1700,6 +1700,7 @@ PublicationBuiltinTopicData DataWriterImpl::get_publication_builtin_topic_data()
{
pub_builtin_data.topic_name = topic_->get_name();
pub_builtin_data.type_name = topic_->get_type_name();
pub_builtin_data.topic_data = topic_->get_qos().topic_data();
}

// DataWriter qos
Expand Down Expand Up @@ -1765,6 +1766,17 @@ PublicationBuiltinTopicData DataWriterImpl::get_publication_builtin_topic_data()
}
pub_builtin_data.representation = qos_.representation();

// eProsima extensions

pub_builtin_data.disable_positive_acks = qos_.reliable_writer_qos().disable_positive_acks;
pub_builtin_data.data_sharing = qos_.data_sharing();

if (pub_builtin_data.data_sharing.kind() != OFF &&
pub_builtin_data.data_sharing.domain_ids().empty())
{
pub_builtin_data.data_sharing.add_domain_id(utils::default_domain_id());
}

pub_builtin_data.guid = guid();
if (publisher_is_valid)
{
Expand Down
7 changes: 3 additions & 4 deletions src/cpp/rtps/builtin/BuiltinProtocols.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -196,14 +196,13 @@ void BuiltinProtocols::filter_server_remote_locators(

bool BuiltinProtocols::add_writer(
RTPSWriter* rtps_writer,
const PublicationBuiltinTopicData& pub_builtin_data,
const fastdds::dds::WriterQos& wqos)
const PublicationBuiltinTopicData& pub_builtin_data)
{
bool ok = true;

if (nullptr != mp_PDP)
{
ok = mp_PDP->get_edp()->new_writer_proxy_data(rtps_writer, pub_builtin_data, wqos);
ok = mp_PDP->get_edp()->new_writer_proxy_data(rtps_writer, pub_builtin_data);

if (!ok)
{
Expand All @@ -218,7 +217,7 @@ bool BuiltinProtocols::add_writer(

if (nullptr != mp_WLP)
{
ok &= mp_WLP->add_local_writer(rtps_writer, wqos);
ok &= mp_WLP->add_local_writer(rtps_writer, pub_builtin_data.liveliness);
}
else
{
Expand Down
8 changes: 3 additions & 5 deletions src/cpp/rtps/builtin/BuiltinProtocols.h
Original file line number Diff line number Diff line change
Expand Up @@ -129,15 +129,13 @@ class BuiltinProtocols

/**
* Add a local writer to the BuiltinProtocols.
* @param writer Pointer to the RTPSWriter
* @param topicAtt Attributes of the associated topic
* @param wqos QoS policies dictated by the publisher
* @param writer Pointer to the RTPSWriter
* @param pub_builtin_data QoS policies dictated by the publisher
* @return True if correct.
*/
bool add_writer(
RTPSWriter* rtps_writer,
const PublicationBuiltinTopicData& pub_builtin_data,
const fastdds::dds::WriterQos& wqos);
const PublicationBuiltinTopicData& pub_builtin_data);
/**
* Add a local reader to the BuiltinProtocols.
* @param rtps_reader Pointer to the RTPSReader.
Expand Down
9 changes: 5 additions & 4 deletions src/cpp/rtps/builtin/discovery/endpoint/EDP.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -240,14 +240,13 @@ bool EDP::new_reader_proxy_data(

bool EDP::new_writer_proxy_data(
RTPSWriter* rtps_writer,
const PublicationBuiltinTopicData& pub_builtin_data,
const fastdds::dds::WriterQos& wqos)
const PublicationBuiltinTopicData& pub_builtin_data)
{
EPROSIMA_LOG_INFO(RTPS_EDP,
"Adding " << rtps_writer->getGuid().entityId << " in topic " <<
pub_builtin_data.topic_name.to_string());

auto init_fun = [this, rtps_writer, &pub_builtin_data, &wqos](
auto init_fun = [this, rtps_writer, &pub_builtin_data](
WriterProxyData* wpd,
bool updating,
const ParticipantProxyData& participant_data)
Expand All @@ -260,6 +259,8 @@ bool EDP::new_writer_proxy_data(
return false;
}

from_builtin_to_proxy(pub_builtin_data, *wpd);

const NetworkFactory& network = mp_RTPSParticipant->network_factory();
const auto& watt = rtps_writer->getAttributes();

Expand Down Expand Up @@ -320,7 +321,7 @@ bool EDP::new_writer_proxy_data(
BaseWriter* base_writer = BaseWriter::downcast(rtps_writer);
assert(base_writer->get_history() != nullptr);
wpd->typeMaxSerialized(base_writer->get_history()->getTypeMaxSerialized());
wpd->m_qos.setQos(wqos, true);
wpd->m_qos.setQos(wpd->m_qos, true);
wpd->userDefinedId(watt.getUserDefinedID());
wpd->persistence_guid(watt.persistence_guid);
#if HAVE_SECURITY
Expand Down
8 changes: 3 additions & 5 deletions src/cpp/rtps/builtin/discovery/endpoint/EDP.h
Original file line number Diff line number Diff line change
Expand Up @@ -179,15 +179,13 @@ class EDP
const fastdds::rtps::ContentFilterProperty* content_filter = nullptr);
/**
* Create a new ReaderPD for a local Writer.
* @param rtps_writer Pointer to the RTPSWriter.
* @param pub_builtin_data Publication data for the writer.
* @param qos QoS policies dictated by the publisher.
* @param rtps_writer Pointer to the RTPSWriter.
* @param pub_builtin_data QoS policies dictated by the publisher.
* @return True if correct.
*/
bool new_writer_proxy_data(
RTPSWriter* rtps_writer,
const PublicationBuiltinTopicData& pub_builtin_data,
const fastdds::dds::WriterQos& qos);
const PublicationBuiltinTopicData& pub_builtin_data);
/**
* A previously created Reader has been updated
* @param rtps_reader Pointer to the RTPSReader.
Expand Down
19 changes: 9 additions & 10 deletions src/cpp/rtps/builtin/liveliness/WLP.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -618,18 +618,17 @@ void WLP::removeRemoteEndpoints(

bool WLP::add_local_writer(
RTPSWriter* writer,
const fastdds::dds::WriterQos& wqos)
const fastdds::dds::LivelinessQosPolicy& qos)
{
std::lock_guard<std::recursive_mutex> guard(*mp_builtinProtocols->mp_PDP->getMutex());

EPROSIMA_LOG_INFO(RTPS_LIVELINESS, writer->getGuid().entityId << " to Liveliness Protocol");

BaseWriter* base_writer = BaseWriter::downcast(writer);

double wAnnouncementPeriodMilliSec(fastdds::rtps::TimeConv::Duration_t2MilliSecondsDouble(wqos.m_liveliness.
announcement_period));
double wAnnouncementPeriodMilliSec(TimeConv::Duration_t2MilliSecondsDouble(qos.announcement_period));

if (wqos.m_liveliness.kind == dds::AUTOMATIC_LIVELINESS_QOS )
if (qos.kind == dds::AUTOMATIC_LIVELINESS_QOS )
{
if (automatic_liveliness_assertion_ == nullptr)
{
Expand All @@ -656,7 +655,7 @@ bool WLP::add_local_writer(
}
automatic_writers_.push_back(base_writer);
}
else if (wqos.m_liveliness.kind == dds::MANUAL_BY_PARTICIPANT_LIVELINESS_QOS)
else if (qos.kind == dds::MANUAL_BY_PARTICIPANT_LIVELINESS_QOS)
{
if (manual_liveliness_assertion_ == nullptr)
{
Expand Down Expand Up @@ -685,21 +684,21 @@ bool WLP::add_local_writer(

if (!pub_liveliness_manager_->add_writer(
writer->getGuid(),
wqos.m_liveliness.kind,
wqos.m_liveliness.lease_duration))
qos.kind,
qos.lease_duration))
{
EPROSIMA_LOG_ERROR(RTPS_LIVELINESS,
"Could not add writer " << writer->getGuid() << " to liveliness manager");
}
}
else if (wqos.m_liveliness.kind == dds::MANUAL_BY_TOPIC_LIVELINESS_QOS)
else if (qos.kind == dds::MANUAL_BY_TOPIC_LIVELINESS_QOS)
{
manual_by_topic_writers_.push_back(base_writer);

if (!pub_liveliness_manager_->add_writer(
writer->getGuid(),
wqos.m_liveliness.kind,
wqos.m_liveliness.lease_duration))
qos.kind,
qos.lease_duration))
{
EPROSIMA_LOG_ERROR(RTPS_LIVELINESS,
"Could not add writer " << writer->getGuid() << " to liveliness manager");
Expand Down
4 changes: 2 additions & 2 deletions src/cpp/rtps/builtin/liveliness/WLP.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -109,12 +109,12 @@ class WLP
/**
* Add a local writer to the liveliness protocol.
* @param writer Pointer to the RTPSWriter.
* @param wqos Quality of service policies for the writer.
* @param qos Quality of service policies for the writer.
* @return True if correct.
*/
bool add_local_writer(
RTPSWriter* writer,
const fastdds::dds::WriterQos& wqos);
const fastdds::dds::LivelinessQosPolicy& qos);
/**
* Remove a local writer from the liveliness protocol.
* @param writer Pointer to the RTPSWriter.
Expand Down
5 changes: 2 additions & 3 deletions src/cpp/rtps/participant/RTPSParticipant.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -77,10 +77,9 @@ uint32_t RTPSParticipant::getRTPSParticipantID() const

bool RTPSParticipant::register_writer(
RTPSWriter* writer,
const PublicationBuiltinTopicData& pub_builtin_data,
const fastdds::dds::WriterQos& wqos)
const PublicationBuiltinTopicData& pub_builtin_data)
{
return mp_impl->register_writer(writer, pub_builtin_data, wqos);
return mp_impl->register_writer(writer, pub_builtin_data);
}

bool RTPSParticipant::register_reader(
Expand Down
9 changes: 4 additions & 5 deletions src/cpp/rtps/participant/RTPSParticipantImpl.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1406,10 +1406,9 @@ void RTPSParticipantImpl::disableReader(

bool RTPSParticipantImpl::register_writer(
RTPSWriter* rtps_writer,
const PublicationBuiltinTopicData& pub_builtin_data,
const fastdds::dds::WriterQos& wqos)
const PublicationBuiltinTopicData& pub_builtin_data)
{
return this->mp_builtinProtocols->add_writer(rtps_writer, pub_builtin_data, wqos);
return this->mp_builtinProtocols->add_writer(rtps_writer, pub_builtin_data);
}

bool RTPSParticipantImpl::register_reader(
Expand Down Expand Up @@ -2865,9 +2864,9 @@ const fastdds::statistics::rtps::IStatusObserver* RTPSParticipantImpl::create_mo
},
[&](RTPSWriter* w,
const PublicationBuiltinTopicData& pub_builtin_data,
const fastdds::dds::WriterQos& wqos) -> bool
const fastdds::dds::WriterQos& /*wqos*/) -> bool
{
return this->register_writer(w, pub_builtin_data, wqos);
return this->register_writer(w, pub_builtin_data);
},
getEventResource()
));
Expand Down
4 changes: 1 addition & 3 deletions src/cpp/rtps/participant/RTPSParticipantImpl.h
Original file line number Diff line number Diff line change
Expand Up @@ -887,13 +887,11 @@ class RTPSParticipantImpl
* Register a Writer in the BuiltinProtocols.
* @param Writer Pointer to the RTPSWriter.
* @param pub_builtin_data Contains the discovery information of the writer.
* @param wqos WriterQos.
* @return True if correctly registered.
*/
bool register_writer(
RTPSWriter* Writer,
const PublicationBuiltinTopicData& pub_builtin_data,
const fastdds::dds::WriterQos& wqos);
const PublicationBuiltinTopicData& pub_builtin_data);

/**
* Register a Reader in the BuiltinProtocols.
Expand Down
3 changes: 1 addition & 2 deletions test/blackbox/common/RTPSBlackboxTestsBasic.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -819,8 +819,7 @@ TEST(RTPS, MultithreadedWriterCreation)
pub_builtin_data.type_name = "string";
pub_builtin_data.topic_name = "test_topic";
/* Register writer in participant */
eprosima::fastdds::dds::WriterQos writer_qos;
ASSERT_EQ(rtps_participant->register_writer(writer, pub_builtin_data, writer_qos), true);
ASSERT_EQ(rtps_participant->register_writer(writer, pub_builtin_data), true);

{
/* Wait for test completion request */
Expand Down
2 changes: 1 addition & 1 deletion test/blackbox/common/RTPSWithRegistrationWriter.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -178,7 +178,7 @@ class RTPSWithRegistrationWriter
return;
}

ASSERT_EQ(participant_->register_writer(writer_, pub_builtin_data_, writer_qos_), true);
ASSERT_EQ(participant_->register_writer(writer_, pub_builtin_data_), true);

initialized_ = true;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -185,10 +185,9 @@ class FASTDDS_EXPORTED_API RTPSParticipant

MOCK_CONST_METHOD0(typelookup_manager, fastdds::dds::builtin::TypeLookupManager* ());

MOCK_METHOD3(register_writer, bool(
MOCK_METHOD2(register_writer, bool(
RTPSWriter * Writer,
const PublicationBuiltinTopicData& pub_builtin_data,
const fastdds::dds::WriterQos& wqos));
const PublicationBuiltinTopicData& pub_builtin_data));

MOCK_METHOD2(update_writer, bool(
RTPSWriter * Writer,
Expand Down
2 changes: 1 addition & 1 deletion test/unittest/rtps/reader/StatefulReaderTests.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ TEST(StatefulReaderTests, RTPSCorrectGAPProcessing)
pub_builtin_data.type_name = "string";
pub_builtin_data.topic_name = "topic";
part->register_reader(reader, sub_builtin_data);
part->register_writer(writer, pub_builtin_data, {});
part->register_writer(writer, pub_builtin_data);

// After registration, the writer should be matched
auto writer_guid = writer->getGuid();
Expand Down
15 changes: 6 additions & 9 deletions test/unittest/statistics/rtps/RTPSStatisticsTests.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -358,9 +358,14 @@ class RTPSStatisticsTestsImpl
using namespace fastdds;
using namespace fastdds::rtps;

auto& watt = writer_->getAttributes();
PublicationBuiltinTopicData pub_builtin_data;
pub_builtin_data.type_name = data_type;
pub_builtin_data.topic_name = topic_name;
pub_builtin_data.durability.durabilityKind(watt.durabilityKind);
pub_builtin_data.reliability.kind =
RELIABLE ==
watt.reliabilityKind ? dds::RELIABLE_RELIABILITY_QOS : dds::BEST_EFFORT_RELIABILITY_QOS;

auto& ratt = writer_->getAttributes();
SubscriptionBuiltinTopicData sub_builtin_data;
Expand All @@ -371,15 +376,7 @@ class RTPSStatisticsTestsImpl
RELIABLE ==
ratt.reliabilityKind ? dds::RELIABLE_RELIABILITY_QOS : dds::BEST_EFFORT_RELIABILITY_QOS;


dds::WriterQos Wqos;
auto& watt = writer_->getAttributes();
Wqos.m_durability.durabilityKind(watt.durabilityKind);
Wqos.m_reliability.kind =
RELIABLE ==
watt.reliabilityKind ? dds::RELIABLE_RELIABILITY_QOS : dds::BEST_EFFORT_RELIABILITY_QOS;

participant_->register_writer(writer_, pub_builtin_data, Wqos);
participant_->register_writer(writer_, pub_builtin_data);
participant_->register_reader(reader_, sub_builtin_data);
}

Expand Down

0 comments on commit b73d265

Please sign in to comment.