Skip to content

Commit

Permalink
Refs #20771. Fix
Browse files Browse the repository at this point in the history
Signed-off-by: Ricardo González Moreno <[email protected]>
  • Loading branch information
richiware committed Apr 8, 2024
1 parent 5eeee69 commit f643326
Show file tree
Hide file tree
Showing 2 changed files with 59 additions and 43 deletions.
65 changes: 37 additions & 28 deletions src/cpp/rtps/builtin/data/ReaderProxyData.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -185,6 +185,9 @@ uint32_t ReaderProxyData::get_serialized_size(
{
uint32_t ret_val = include_encapsulation ? 4 : 0;

// PID_ENDPOINT_GUID
ret_val += 4 + PARAMETER_GUID_LENGTH;

// PID_NETWORK_CONFIGURATION_SET
ret_val += 4 + PARAMETER_NETWORKCONFIGSET_LENGTH;

Expand All @@ -209,9 +212,6 @@ uint32_t ReaderProxyData::get_serialized_size(
// PID_KEY_HASH
ret_val += 4 + 16;

// PID_ENDPOINT_GUID
ret_val += 4 + PARAMETER_GUID_LENGTH;

// PID_PROTOCOL_VERSION
ret_val += 4 + 4;

Expand Down Expand Up @@ -288,6 +288,14 @@ uint32_t ReaderProxyData::get_serialized_size(
ret_val += fastdds::dds::QosPoliciesSerializer<DisablePositiveACKsQosPolicy>::cdr_serialized_size(
m_qos.m_disablePositiveACKs);
}

if ((m_qos.data_sharing.send_always() || m_qos.data_sharing.hasChanged) &&
m_qos.data_sharing.kind() != fastdds::dds::OFF)
{
ret_val += fastdds::dds::QosPoliciesSerializer<DataSharingQosPolicy>::cdr_serialized_size(
m_qos.data_sharing);
}

if (m_type_id && m_type_id->m_type_identifier._d() != 0)
{
ret_val += fastdds::dds::QosPoliciesSerializer<TypeIdV1>::cdr_serialized_size(*m_type_id);
Expand All @@ -296,22 +304,6 @@ uint32_t ReaderProxyData::get_serialized_size(
{
ret_val += fastdds::dds::QosPoliciesSerializer<TypeObjectV1>::cdr_serialized_size(*m_type);
}
if (m_type_information && m_type_information->assigned())
{
ret_val +=
fastdds::dds::QosPoliciesSerializer<xtypes::TypeInformation>::cdr_serialized_size(*m_type_information);
}
if (m_qos.type_consistency.send_always() || m_qos.type_consistency.hasChanged)
{
ret_val += fastdds::dds::QosPoliciesSerializer<TypeConsistencyEnforcementQosPolicy>::cdr_serialized_size(
m_qos.type_consistency);
}
if ((m_qos.data_sharing.send_always() || m_qos.data_sharing.hasChanged) &&
m_qos.data_sharing.kind() != fastdds::dds::OFF)
{
ret_val += fastdds::dds::QosPoliciesSerializer<DataSharingQosPolicy>::cdr_serialized_size(
m_qos.data_sharing);
}

if (m_properties.size() > 0)
{
Expand All @@ -333,6 +325,23 @@ uint32_t ReaderProxyData::get_serialized_size(
}
#endif // if HAVE_SECURITY

if (m_qos.representation.send_always() || m_qos.representation.hasChanged)
{
ret_val += fastdds::dds::QosPoliciesSerializer<DataRepresentationQosPolicy>::cdr_serialized_size(
m_qos.representation);
}

if (m_qos.type_consistency.send_always() || m_qos.type_consistency.hasChanged)
{
ret_val += fastdds::dds::QosPoliciesSerializer<TypeConsistencyEnforcementQosPolicy>::cdr_serialized_size(
m_qos.type_consistency);
}
if (m_type_information && m_type_information->assigned())
{
ret_val +=
fastdds::dds::QosPoliciesSerializer<xtypes::TypeInformation>::cdr_serialized_size(*m_type_information);
}

// PID_SENTINEL
return ret_val + 4;
}
Expand Down Expand Up @@ -550,6 +559,15 @@ bool ReaderProxyData::writeToCDRMessage(
}
}

if ((m_qos.data_sharing.send_always() || m_qos.data_sharing.hasChanged) &&
m_qos.data_sharing.kind() != fastdds::dds::OFF)
{
if (!fastdds::dds::QosPoliciesSerializer<DataSharingQosPolicy>::add_to_cdr_message(m_qos.data_sharing, msg))
{
return false;
}
}

if (m_type_id && m_type_id->m_type_identifier._d() != 0)
{
if (!fastdds::dds::QosPoliciesSerializer<TypeIdV1>::add_to_cdr_message(*m_type_id, msg))
Expand Down Expand Up @@ -622,15 +640,6 @@ bool ReaderProxyData::writeToCDRMessage(
}
}

if ((m_qos.data_sharing.send_always() || m_qos.data_sharing.hasChanged) &&
m_qos.data_sharing.kind() != fastdds::dds::OFF)
{
if (!fastdds::dds::QosPoliciesSerializer<DataSharingQosPolicy>::add_to_cdr_message(m_qos.data_sharing, msg))
{
return false;
}
}

return fastdds::dds::ParameterSerializer<Parameter_t>::add_parameter_sentinel(msg);
}

Expand Down
37 changes: 22 additions & 15 deletions src/cpp/rtps/builtin/data/WriterProxyData.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -177,6 +177,9 @@ uint32_t WriterProxyData::get_serialized_size(
{
uint32_t ret_val = include_encapsulation ? 4 : 0;

// PID_ENDPOINT_GUID
ret_val += 4 + PARAMETER_GUID_LENGTH;

// PID_NETWORK_CONFIGURATION_SET
ret_val += 4 + PARAMETER_NETWORKCONFIGSET_LENGTH;

Expand All @@ -198,9 +201,6 @@ uint32_t WriterProxyData::get_serialized_size(
// PID_KEY_HASH
ret_val += 4 + 16;

// PID_ENDPOINT_GUID
ret_val += 4 + PARAMETER_GUID_LENGTH;

// PID_TYPE_MAX_SIZE_SERIALIZED
ret_val += 4 + 4;

Expand Down Expand Up @@ -304,11 +304,6 @@ uint32_t WriterProxyData::get_serialized_size(
{
ret_val += fastdds::dds::QosPoliciesSerializer<TypeObjectV1>::cdr_serialized_size(*m_type);
}
if (m_type_information && m_type_information->assigned())
{
ret_val +=
fastdds::dds::QosPoliciesSerializer<xtypes::TypeInformation>::cdr_serialized_size(*m_type_information);
}

if (m_properties.size() > 0)
{
Expand All @@ -323,6 +318,18 @@ uint32_t WriterProxyData::get_serialized_size(
}
#endif // if HAVE_SECURITY

if (m_qos.representation.send_always() || m_qos.representation.hasChanged)
{
ret_val += fastdds::dds::QosPoliciesSerializer<DataRepresentationQosPolicy>::cdr_serialized_size(
m_qos.representation);
}

if (m_type_information && m_type_information->assigned())
{
ret_val +=
fastdds::dds::QosPoliciesSerializer<xtypes::TypeInformation>::cdr_serialized_size(*m_type_information);
}

// PID_SENTINEL
return ret_val + 4;
}
Expand Down Expand Up @@ -539,19 +546,19 @@ bool WriterProxyData::writeToCDRMessage(
return false;
}
}
if ((m_qos.data_sharing.send_always() || m_qos.data_sharing.hasChanged) &&
m_qos.data_sharing.kind() != fastdds::dds::OFF)
if ((m_qos.m_disablePositiveACKs.send_always() || m_qos.m_topicData.hasChanged) &&
m_qos.m_disablePositiveACKs.enabled)
{
if (!fastdds::dds::QosPoliciesSerializer<DataSharingQosPolicy>::add_to_cdr_message(m_qos.data_sharing, msg))
if (!fastdds::dds::QosPoliciesSerializer<DisablePositiveACKsQosPolicy>::add_to_cdr_message(m_qos.
m_disablePositiveACKs, msg))
{
return false;
}
}
if ((m_qos.m_disablePositiveACKs.send_always() || m_qos.m_topicData.hasChanged) &&
m_qos.m_disablePositiveACKs.enabled)
if ((m_qos.data_sharing.send_always() || m_qos.data_sharing.hasChanged) &&
m_qos.data_sharing.kind() != fastdds::dds::OFF)
{
if (!fastdds::dds::QosPoliciesSerializer<DisablePositiveACKsQosPolicy>::add_to_cdr_message(m_qos.
m_disablePositiveACKs, msg))
if (!fastdds::dds::QosPoliciesSerializer<DataSharingQosPolicy>::add_to_cdr_message(m_qos.data_sharing, msg))
{
return false;
}
Expand Down

0 comments on commit f643326

Please sign in to comment.