* 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:
parent
11edf82c7d
commit
cb226baa5b
1 changed files with 12 additions and 7 deletions
|
@ -22,6 +22,7 @@
|
||||||
#include <memory>
|
#include <memory>
|
||||||
#include <random>
|
#include <random>
|
||||||
#include <string>
|
#include <string>
|
||||||
|
#include <utility>
|
||||||
|
|
||||||
#include "rclcpp_action/client.hpp"
|
#include "rclcpp_action/client.hpp"
|
||||||
#include "rclcpp_action/exceptions.hpp"
|
#include "rclcpp_action/exceptions.hpp"
|
||||||
|
@ -314,14 +315,18 @@ ClientBase::handle_result_response(
|
||||||
const rmw_request_id_t & response_header,
|
const rmw_request_id_t & response_header,
|
||||||
std::shared_ptr<void> response)
|
std::shared_ptr<void> response)
|
||||||
{
|
{
|
||||||
|
ResponseCallback response_callback;
|
||||||
|
{
|
||||||
std::lock_guard<std::mutex> guard(pimpl_->result_requests_mutex);
|
std::lock_guard<std::mutex> guard(pimpl_->result_requests_mutex);
|
||||||
const int64_t & sequence_number = response_header.sequence_number;
|
const int64_t & sequence_number = response_header.sequence_number;
|
||||||
if (pimpl_->pending_result_responses.count(sequence_number) == 0) {
|
if (pimpl_->pending_result_responses.count(sequence_number) == 0) {
|
||||||
RCLCPP_ERROR(pimpl_->logger, "unknown result response, ignoring...");
|
RCLCPP_ERROR(pimpl_->logger, "unknown result response, ignoring...");
|
||||||
return;
|
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);
|
pimpl_->pending_result_responses.erase(sequence_number);
|
||||||
|
}
|
||||||
|
response_callback(response);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue