From cb226baa5bc37c11aca1b728fe5550b0f20206b1 Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Mon, 3 Apr 2023 21:46:35 -0700 Subject: [PATCH] =?UTF-8?q?Revert=20"Revert=20"extract=20the=20result=20re?= =?UTF-8?q?sponse=20before=20the=20callback=20is=20is=E2=80=A6=20(backport?= =?UTF-8?q?=20#2152)=20(#2153)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Revert "Revert "extract the result response before the callback is issued. (#2133)" (#2148)" (#2152) This reverts commit 19a666f1c9393e86f0f0cc5a8213cbd18b01fc03. Signed-off-by: Tomoya Fujita (cherry picked from commit b2b7bdeac16f6a3bd62d1f03fd18af32d1ba29f6) * address cpplint error. Signed-off-by: Tomoya Fujita --------- Signed-off-by: Tomoya Fujita Co-authored-by: Tomoya Fujita --- rclcpp_action/src/client.cpp | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/rclcpp_action/src/client.cpp b/rclcpp_action/src/client.cpp index e0e47bc..bc21dfa 100644 --- a/rclcpp_action/src/client.cpp +++ b/rclcpp_action/src/client.cpp @@ -22,6 +22,7 @@ #include #include #include +#include #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 response) { - std::lock_guard 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; + ResponseCallback response_callback; + { + std::lock_guard 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; + } + response_callback = std::move(pimpl_->pending_result_responses[sequence_number]); + pimpl_->pending_result_responses.erase(sequence_number); } - pimpl_->pending_result_responses[sequence_number](response); - pimpl_->pending_result_responses.erase(sequence_number); + response_callback(response); } void