Revert "Revert "extract the result response before the callback is is… (backport #2152) (#2153)

* Revert "Revert "extract the result response before the callback is issued. (#2133)" (#2148)" (#2152)

This reverts commit 19a666f1c9393e86f0f0cc5a8213cbd18b01fc03.

Signed-off-by: Tomoya Fujita <Tomoya.Fujita@sony.com>
(cherry picked from commit b2b7bdeac16f6a3bd62d1f03fd18af32d1ba29f6)

* address cpplint error.

Signed-off-by: Tomoya Fujita <Tomoya.Fujita@sony.com>

---------

Signed-off-by: Tomoya Fujita <Tomoya.Fujita@sony.com>
Co-authored-by: Tomoya Fujita <Tomoya.Fujita@sony.com>
This commit is contained in:
mergify[bot] 2023-04-03 21:46:35 -07:00 committed by GitHub
parent 11edf82c7d
commit cb226baa5b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -22,6 +22,7 @@
#include <memory>
#include <random>
#include <string>
#include <utility>
#include "rclcpp_action/client.hpp"
#include "rclcpp_action/exceptions.hpp"
@ -314,14 +315,18 @@ ClientBase::handle_result_response(
const rmw_request_id_t & response_header,
std::shared_ptr<void> response)
{
ResponseCallback response_callback;
{
std::lock_guard<std::mutex> guard(pimpl_->result_requests_mutex);
const int64_t & sequence_number = response_header.sequence_number;
if (pimpl_->pending_result_responses.count(sequence_number) == 0) {
RCLCPP_ERROR(pimpl_->logger, "unknown result response, ignoring...");
return;
}
pimpl_->pending_result_responses[sequence_number](response);
response_callback = std::move(pimpl_->pending_result_responses[sequence_number]);
pimpl_->pending_result_responses.erase(sequence_number);
}
response_callback(response);
}
void