Skip to content

Commit

Permalink
Fix resetting of LivelinessLostStatus::total_changes (#2782)
Browse files Browse the repository at this point in the history
* Refs #14982. Fix `DataWriter::get_liveliness_lost_status()`

* Apply suggestions from code review

Co-authored-by: Eduardo Ponz Segrelles <eduardoponz@eprosima.com>

Co-authored-by: Eduardo Ponz Segrelles <eduardoponz@eprosima.com>
(cherry picked from commit b5f87dd)

# Conflicts:
#	src/cpp/fastdds/publisher/DataWriterImpl.cpp
Signed-off-by: JLBuenoLopez-eProsima <joseluisbueno@eprosima.com>
  • Loading branch information
2 people authored and JLBuenoLopez committed Jul 21, 2022
1 parent df619cd commit f0b972f
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 3 deletions.
27 changes: 25 additions & 2 deletions src/cpp/fastdds/publisher/DataWriterImpl.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -720,11 +720,20 @@ void DataWriterImpl::InnerDataWriterListener::on_liveliness_lost(
fastrtps::rtps::RTPSWriter* /*writer*/,
const fastrtps::LivelinessLostStatus& status)
{
<<<<<<< HEAD
DataWriterListener* listener = data_writer_->get_listener_for(StatusMask::liveliness_lost());
=======
data_writer_->update_liveliness_lost_status(status);
StatusMask notify_status = StatusMask::liveliness_lost();
DataWriterListener* listener = data_writer_->get_listener_for(notify_status);
>>>>>>> b5f87dd5c (Fix resetting of `LivelinessLostStatus::total_changes` (#2782))
if (listener != nullptr)
{
listener->on_liveliness_lost(
data_writer_->user_datawriter_, status);
LivelinessLostStatus callback_status;
if (ReturnCode_t::RETCODE_OK == data_writer_->get_liveliness_lost_status(callback_status))
{
listener->on_liveliness_lost(data_writer_->user_datawriter_, callback_status);
}
}
}

Expand Down Expand Up @@ -869,10 +878,16 @@ ReturnCode_t DataWriterImpl::get_liveliness_lost_status(

std::unique_lock<RecursiveTimedMutex> lock(writer_->getMutex());

<<<<<<< HEAD
status.total_count = writer_->liveliness_lost_status_.total_count;
status.total_count_change = writer_->liveliness_lost_status_.total_count_change;

writer_->liveliness_lost_status_.total_count_change = 0u;
=======
status = liveliness_lost_status_;
liveliness_lost_status_.total_count_change = 0u;
}
>>>>>>> b5f87dd5c (Fix resetting of `LivelinessLostStatus::total_changes` (#2782))

return ReturnCode_t::RETCODE_OK;
}
Expand Down Expand Up @@ -952,6 +967,14 @@ OfferedIncompatibleQosStatus& DataWriterImpl::update_offered_incompatible_qos(
return offered_incompatible_qos_status_;
}

LivelinessLostStatus& DataWriterImpl::update_liveliness_lost_status(
const fastrtps::LivelinessLostStatus& liveliness_lost_status)
{
liveliness_lost_status_.total_count = liveliness_lost_status.total_count;
liveliness_lost_status_.total_count_change += liveliness_lost_status.total_count_change;
return liveliness_lost_status_;
}

void DataWriterImpl::set_qos(
DataWriterQos& to,
const DataWriterQos& from,
Expand Down
14 changes: 13 additions & 1 deletion src/cpp/fastdds/publisher/DataWriterImpl.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -294,7 +294,10 @@ class DataWriterImpl
fastrtps::rtps::InstanceHandle_t timer_owner_;

//! The offered deadline missed status
fastrtps::OfferedDeadlineMissedStatus deadline_missed_status_;
OfferedDeadlineMissedStatus deadline_missed_status_;

//! The liveliness lost status
LivelinessLostStatus liveliness_lost_status_;

//! The offered incompatible qos status
OfferedIncompatibleQosStatus offered_incompatible_qos_status_;
Expand Down Expand Up @@ -398,6 +401,15 @@ class DataWriterImpl
OfferedIncompatibleQosStatus& update_offered_incompatible_qos(
PolicyMask incompatible_policies);

/*!
* @brief Updates liveliness lost status.
*
* @param[in] liveliness_lost_status Liveliness lost status coming from RTPS layer.
* @return Current liveliness lost status.
*/
LivelinessLostStatus& update_liveliness_lost_status(
const fastrtps::LivelinessLostStatus& liveliness_lost_status);

/**
* Returns the most appropriate listener to handle the callback for the given status,
* or nullptr if there is no appropriate listener.
Expand Down

0 comments on commit f0b972f

Please sign in to comment.