Skip to content

Commit

Permalink
Fix repeated matched event notification (#3396)
Browse files Browse the repository at this point in the history
* Fix repeated matched event notification

Signed-off-by: Barry Xu <[email protected]>

* Fix coding style

Signed-off-by: Barry Xu <[email protected]>

---------

Signed-off-by: Barry Xu <[email protected]>
  • Loading branch information
Barry-Xu-2018 authored Mar 30, 2023
1 parent 3fa1a2b commit 8a5a916
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 20 deletions.
25 changes: 15 additions & 10 deletions src/cpp/fastdds/publisher/DataWriterImpl.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1192,6 +1192,21 @@ void DataWriterImpl::InnerDataWriterListener::onWriterMatched(
const PublicationMatchedStatus& info)
{
data_writer_->update_publication_matched_status(info);

StatusMask notify_status = StatusMask::publication_matched();
DataWriterListener* listener = data_writer_->get_listener_for(notify_status);
if (listener != nullptr)
{
PublicationMatchedStatus callback_status;
if (ReturnCode_t::RETCODE_OK == data_writer_->get_publication_matched_status(callback_status))
{
listener->on_publication_matched(data_writer_->user_datawriter_, callback_status);
}
}
else
{
data_writer_->user_datawriter_->get_statuscondition().get_impl()->set_status(notify_status, true);
}
}

void DataWriterImpl::InnerDataWriterListener::on_offered_incompatible_qos(
Expand Down Expand Up @@ -1337,16 +1352,6 @@ void DataWriterImpl::update_publication_matched_status(
publication_matched_status_.total_count_change += count_change;
}
publication_matched_status_.last_subscription_handle = status.last_subscription_handle;

StatusMask notify_status = StatusMask::publication_matched();
DataWriterListener* listener = get_listener_for(notify_status);
if (listener != nullptr)
{
listener->on_publication_matched(user_datawriter_, publication_matched_status_);
publication_matched_status_.current_count_change = 0;
publication_matched_status_.total_count_change = 0;
}
user_datawriter_->get_statuscondition().get_impl()->set_status(notify_status, true);
}

ReturnCode_t DataWriterImpl::get_publication_matched_status(
Expand Down
25 changes: 15 additions & 10 deletions src/cpp/fastdds/subscriber/DataReaderImpl.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -913,6 +913,21 @@ void DataReaderImpl::InnerDataReaderListener::onReaderMatched(
const SubscriptionMatchedStatus& info)
{
data_reader_->update_subscription_matched_status(info);

StatusMask notify_status = StatusMask::subscription_matched();
DataReaderListener* listener = data_reader_->get_listener_for(notify_status);
if (listener != nullptr)
{
SubscriptionMatchedStatus callback_status;
if (ReturnCode_t::RETCODE_OK == data_reader_->get_subscription_matched_status(callback_status))
{
listener->on_subscription_matched(data_reader_->user_datareader_, callback_status);
}
}
else
{
data_reader_->user_datareader_->get_statuscondition().get_impl()->set_status(notify_status, true);
}
}

void DataReaderImpl::InnerDataReaderListener::on_liveliness_changed(
Expand Down Expand Up @@ -1100,16 +1115,6 @@ void DataReaderImpl::update_subscription_matched_status(
history_.writer_not_alive(iHandle2GUID(status.last_publication_handle));
try_notify_read_conditions();
}

StatusMask notify_status = StatusMask::subscription_matched();
DataReaderListener* listener = get_listener_for(notify_status);
if (listener != nullptr)
{
listener->on_subscription_matched(user_datareader_, subscription_matched_status_);
subscription_matched_status_.current_count_change = 0;
subscription_matched_status_.total_count_change = 0;
}
user_datareader_->get_statuscondition().get_impl()->set_status(notify_status, true);
}

ReturnCode_t DataReaderImpl::get_subscription_matched_status(
Expand Down

0 comments on commit 8a5a916

Please sign in to comment.