Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[21357] Remove TopicAttributes from public APIs and make it private in xmlparser #5085

Merged
merged 37 commits into from
Jul 30, 2024
Merged
Changes from 1 commit
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
fd98df9
Refs #21357: Make TopicAttributes private and move to namespace
Mario-DL Jul 18, 2024
15bc0b8
Refs #21357: Relay TopicAttributes references to xmlparser namespace
Mario-DL Jul 18, 2024
7a9479e
Refs #21357: Remove TopicAttributes references in DDS layer headers
Mario-DL Jul 18, 2024
33f2d5c
Refs #21357: Remove TopicAttributes from RTPSDomain and weak forward …
Mario-DL Jul 18, 2024
c69b36e
Refs #21357: Include PublicationBuiltinTopicData in RTPS and refactor…
Mario-DL Jul 18, 2024
024fa61
Refs #21357: Include SubscriptionBuiltinTopicData in RTPS and refacto…
Mario-DL Jul 18, 2024
39b571f
Refs #21357: Move BuiltinTopicKeyValue conversion helpers to utils (…
Mario-DL Jul 18, 2024
3f30adb
Refs #21357: Add utility method to LocatorList
Mario-DL Jul 18, 2024
468e988
Refs #21357: Remove TopicAttributes from DataWriterHistory
Mario-DL Jul 18, 2024
01de9df
Refs #21357: Add new get_publication_builtin_topic_data() to DataWriter
Mario-DL Jul 18, 2024
5a5fbfe
Refs #21357: Add new get_subscription_builtin_topic_data() to DataReader
Mario-DL Jul 18, 2024
77b504a
Refs #21357: Refactor Data*Impl
Mario-DL Jul 18, 2024
941a12e
Refs #21357: Add some mock methods and remove RTPS unittest
Mario-DL Jul 18, 2024
d5a526e
Refs #21357: Improve discovery server example test resilience
Mario-DL Jul 18, 2024
29225c1
Refs #21357: Linter
Mario-DL Jul 18, 2024
42c1bcc
Refs #21357: Update RTPS example
Mario-DL Jul 23, 2024
d4901d7
Refs #21357. Remove ReaderQos from register_reader.
MiguelCompany Jul 24, 2024
61ae807
Refs #21357. Remove WriterQos from register_writer.
MiguelCompany Jul 24, 2024
5312311
Refs #21357. Refactor get_subscription_builtin_topic_data.
MiguelCompany Jul 26, 2024
5a40246
Refs #21357. Refactor get_publication_builtin_topic_data.
MiguelCompany Jul 26, 2024
d10d4cf
Refs #21357. Fix calculation of persistence_guid.
MiguelCompany Jul 26, 2024
3498efd
Refs #21357. Builtin key conversion method not inline.
MiguelCompany Jul 26, 2024
975f77c
Refs #21357. Fix doxygen on DataWriterHistory.
MiguelCompany Jul 26, 2024
52bc3eb
Refs #21357. Refactor MonitorService.
MiguelCompany Jul 26, 2024
9dad7e0
Refs #21357. Uncrustify.
MiguelCompany Jul 26, 2024
8f7713c
Refs #21357. Fix default initialization of builtin data structures.
MiguelCompany Jul 26, 2024
ccb0c0b
Refs #21357. Fix blackbox tests.
MiguelCompany Jul 26, 2024
947cca4
Refs #21357. Uncrustify.
MiguelCompany Jul 26, 2024
8d1997b
Refs #21357. Improve `from_builtin_to_proxy`.
MiguelCompany Jul 28, 2024
fbdd68b
Refs #21357. Add `fill_type_information` to DomainParticipantImpl.
MiguelCompany Jul 29, 2024
9131e24
Refs #21357. Refactor `register_writer` again.
MiguelCompany Jul 29, 2024
7b349e4
Refs #21357. Refactor `register_reader` again.
MiguelCompany Jul 29, 2024
ab475b4
Refs #21357. Fix blackbox build.
MiguelCompany Jul 29, 2024
4c3d06e
Refs #21357. Fix content filter topic name.
MiguelCompany Jul 29, 2024
dfbfd8a
Refs #21357. Uncrustify.
MiguelCompany Jul 29, 2024
d99f997
Refs #21357. Update `versions.md`.
MiguelCompany Jul 30, 2024
3a8a5a8
Refs #21357. Apply suggestions on `versions.md`.
MiguelCompany Jul 30, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Refs #21357. Remove WriterQos from register_writer.
Signed-off-by: Miguel Company <miguelcompany@eprosima.com>
MiguelCompany committed Jul 29, 2024

Unverified

This commit is not signed, but one or more authors requires that any commit attributed to them is signed.
commit 61ae807de4ab401376a86096c7820bec45160bbb
8 changes: 3 additions & 5 deletions examples/cpp/rtps/WriterApp.cpp
Original file line number Diff line number Diff line change
@@ -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");
}
4 changes: 1 addition & 3 deletions include/fastdds/rtps/participant/RTPSParticipant.hpp
Original file line number Diff line number Diff line change
@@ -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.
48 changes: 31 additions & 17 deletions src/cpp/fastdds/publisher/DataWriterImpl.cpp
Original file line number Diff line number Diff line change
@@ -457,23 +457,8 @@ ReturnCode_t DataWriterImpl::enable()
}

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

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

return RETCODE_OK;
}
@@ -1700,6 +1685,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
@@ -1765,6 +1751,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)
{
@@ -1785,6 +1782,23 @@ PublicationBuiltinTopicData DataWriterImpl::get_publication_builtin_topic_data()
writer_->get_participant_impl()->network_factory().network_configuration();
}

if (!is_data_sharing_compatible_)
{
pub_builtin_data.data_sharing.off();
}

const std::string* endpoint_partitions = PropertyPolicyHelper::find_property(qos_.properties(), "partitions");
if (endpoint_partitions)
{
std::istringstream partition_string(*endpoint_partitions);
std::string partition_name;
pub_builtin_data.partition.clear();

while (std::getline(partition_string, partition_name, ';'))
{
pub_builtin_data.partition.push_back(partition_name.c_str());
}
}
return pub_builtin_data;
}

7 changes: 3 additions & 4 deletions src/cpp/rtps/builtin/BuiltinProtocols.cpp
Original file line number Diff line number Diff line change
@@ -197,14 +197,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)
{
@@ -219,7 +218,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
{
8 changes: 3 additions & 5 deletions src/cpp/rtps/builtin/BuiltinProtocols.h
Original file line number Diff line number Diff line change
@@ -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.
9 changes: 5 additions & 4 deletions src/cpp/rtps/builtin/discovery/endpoint/EDP.cpp
Original file line number Diff line number Diff line change
@@ -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)
@@ -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();

@@ -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
8 changes: 3 additions & 5 deletions src/cpp/rtps/builtin/discovery/endpoint/EDP.h
Original file line number Diff line number Diff line change
@@ -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.
19 changes: 9 additions & 10 deletions src/cpp/rtps/builtin/liveliness/WLP.cpp
Original file line number Diff line number Diff line change
@@ -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)
{
@@ -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)
{
@@ -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");
4 changes: 2 additions & 2 deletions src/cpp/rtps/builtin/liveliness/WLP.hpp
Original file line number Diff line number Diff line change
@@ -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.
5 changes: 2 additions & 3 deletions src/cpp/rtps/participant/RTPSParticipant.cpp
Original file line number Diff line number Diff line change
@@ -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(
9 changes: 4 additions & 5 deletions src/cpp/rtps/participant/RTPSParticipantImpl.cpp
Original file line number Diff line number Diff line change
@@ -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(
@@ -2878,9 +2877,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()
));
4 changes: 1 addition & 3 deletions src/cpp/rtps/participant/RTPSParticipantImpl.h
Original file line number Diff line number Diff line change
@@ -897,13 +897,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.
3 changes: 1 addition & 2 deletions test/blackbox/common/RTPSBlackboxTestsBasic.cpp
Original file line number Diff line number Diff line change
@@ -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 */
2 changes: 1 addition & 1 deletion test/blackbox/common/RTPSWithRegistrationWriter.hpp
Original file line number Diff line number Diff line change
@@ -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;
}
Original file line number Diff line number Diff line change
@@ -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,
2 changes: 1 addition & 1 deletion test/unittest/rtps/reader/StatefulReaderTests.cpp
Original file line number Diff line number Diff line change
@@ -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();
Loading