Skip to content

Commit b66cff1

Browse files
Janosch MachowinskiJanosch Machowinski
authored andcommitted
fix(rcl_cpp_action) : fixed regression
Signed-off-by: Janosch Machowinski <[email protected]>
1 parent 5bd7bef commit b66cff1

File tree

2 files changed

+20
-50
lines changed

2 files changed

+20
-50
lines changed

rclcpp_action/src/client.cpp

Lines changed: 12 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -159,12 +159,6 @@ class ClientBaseImpl
159159
// take_data for execution
160160
std::deque<std::shared_ptr<ClientBaseData>> data_queue_;
161161

162-
// Lock for unreported events
163-
std::recursive_mutex unreported_events_mutex_;
164-
165-
// number of events, that were not yet reported by is_ready
166-
size_t num_unreported_events_ = 0;
167-
168162
// Lock for action_client_
169163
std::recursive_mutex action_client_mutex_;
170164

@@ -358,9 +352,7 @@ ClientBase::is_ready(rcl_wait_set_t * wait_set)
358352
}
359353
}
360354

361-
size_t cnt = 0;
362355
if (is_feedback_ready) {
363-
cnt++;
364356
std::shared_ptr<void> feedback_message;
365357
{
366358
std::lock_guard<std::recursive_mutex> lock(pimpl_->action_client_mutex_);
@@ -374,10 +366,11 @@ ClientBase::is_ready(rcl_wait_set_t * wait_set)
374366
std::make_shared<ClientBaseData>(
375367
ClientBaseData::FeedbackReadyData(
376368
ret, feedback_message)));
369+
370+
return true;
377371
}
378372

379373
if (is_status_ready) {
380-
cnt++;
381374
std::shared_ptr<void> status_message;
382375
{
383376
std::lock_guard<std::recursive_mutex> lock(pimpl_->action_client_mutex_);
@@ -391,10 +384,11 @@ ClientBase::is_ready(rcl_wait_set_t * wait_set)
391384
std::make_shared<ClientBaseData>(
392385
ClientBaseData::StatusReadyData(
393386
ret, status_message)));
387+
388+
return true;
394389
}
395390

396391
if (is_goal_response_ready) {
397-
cnt++;
398392
rmw_request_id_t response_header;
399393
std::shared_ptr<void> goal_response;
400394
{
@@ -404,15 +398,17 @@ ClientBase::is_ready(rcl_wait_set_t * wait_set)
404398
ret = rcl_action_take_goal_response(
405399
pimpl_->client_handle.get(), &response_header, goal_response.get());
406400
}
401+
407402
std::lock_guard<std::recursive_mutex> lock(pimpl_->data_queue_mutex_);
408403
pimpl_->data_queue_.push_back(
409404
std::make_shared<ClientBaseData>(
410405
ClientBaseData::GoalResponseData(
411406
ret, response_header, goal_response)));
407+
408+
return true;
412409
}
413410

414411
if (is_result_response_ready) {
415-
cnt++;
416412
rmw_request_id_t response_header;
417413
std::shared_ptr<void> result_response;
418414
{
@@ -421,15 +417,17 @@ ClientBase::is_ready(rcl_wait_set_t * wait_set)
421417
ret = rcl_action_take_result_response(
422418
pimpl_->client_handle.get(), &response_header, result_response.get());
423419
}
420+
424421
std::lock_guard<std::recursive_mutex> lock(pimpl_->data_queue_mutex_);
425422
pimpl_->data_queue_.push_back(
426423
std::make_shared<ClientBaseData>(
427424
ClientBaseData::ResultResponseData(
428425
ret, response_header, result_response)));
426+
427+
return true;
429428
}
430429

431430
if (is_cancel_response_ready) {
432-
cnt++;
433431
rmw_request_id_t response_header;
434432
std::shared_ptr<void> cancel_response;
435433
{
@@ -444,21 +442,10 @@ ClientBase::is_ready(rcl_wait_set_t * wait_set)
444442
std::make_shared<ClientBaseData>(
445443
ClientBaseData::CancelResponseData(
446444
ret, response_header, cancel_response)));
445+
return true;
447446
}
448447

449-
bool return_data_ready = false;
450-
451-
{
452-
std::lock_guard<std::recursive_mutex> lock(pimpl_->unreported_events_mutex_);
453-
pimpl_->num_unreported_events_ += cnt;
454-
455-
if (pimpl_->num_unreported_events_ > 0) {
456-
pimpl_->num_unreported_events_--;
457-
return_data_ready = true;
458-
}
459-
}
460-
461-
return return_data_ready;
448+
return false;
462449
}
463450

464451
void

rclcpp_action/src/server.cpp

Lines changed: 8 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -105,12 +105,6 @@ class ServerBaseImpl
105105
// take_data for execution
106106
std::deque<std::shared_ptr<ServerBaseData>> data_queue_;
107107

108-
// Lock for unreported events
109-
std::recursive_mutex unreported_events_mutex_;
110-
111-
// number of events, that were not yet reported by is_ready
112-
size_t num_unreported_events_ = 0;
113-
114108
rclcpp::Logger logger_;
115109
};
116110

@@ -236,11 +230,7 @@ ServerBase::is_ready(rcl_wait_set_t * wait_set)
236230
rclcpp::exceptions::throw_from_rcl_error(ret);
237231
}
238232

239-
240-
size_t cnt = 0;
241-
242233
if (goal_request_ready) {
243-
cnt++;
244234
rcl_action_goal_info_t goal_info = rcl_action_get_zero_initialized_goal_info();
245235
rmw_request_id_t request_header;
246236
std::shared_ptr<void> message;
@@ -259,10 +249,11 @@ ServerBase::is_ready(rcl_wait_set_t * wait_set)
259249
std::make_shared<ServerBaseData>(
260250
ServerBaseData::GoalRequestData(
261251
ret, goal_info, request_header, message)));
252+
253+
return true;
262254
}
263255

264256
if (cancel_request_ready) {
265-
cnt++;
266257
rmw_request_id_t request_header;
267258

268259
// Initialize cancel request
@@ -282,10 +273,11 @@ ServerBase::is_ready(rcl_wait_set_t * wait_set)
282273
ServerBaseData::CancelRequestData(
283274
ret, request,
284275
request_header)));
276+
277+
return true;
285278
}
286279

287280
if (result_request_ready) {
288-
cnt++;
289281
// Get the result request message
290282
rmw_request_id_t request_header;
291283
std::shared_ptr<void> result_request;
@@ -301,28 +293,19 @@ ServerBase::is_ready(rcl_wait_set_t * wait_set)
301293
std::make_shared<ServerBaseData>(
302294
ServerBaseData::ResultRequestData(
303295
ret, result_request, request_header)));
296+
297+
return true;
304298
}
305299

306300
if (goal_expired) {
307-
cnt++;
308301
std::lock_guard<std::recursive_mutex> lock(pimpl_->data_queue_mutex_);
309302
pimpl_->data_queue_.push_back(
310303
std::make_shared<ServerBaseData>(ServerBaseData::GoalExpiredData()));
311-
}
312-
313-
bool return_data_ready = false;
314304

315-
{
316-
std::lock_guard<std::recursive_mutex> lock(pimpl_->unreported_events_mutex_);
317-
pimpl_->num_unreported_events_ += cnt;
318-
319-
if (pimpl_->num_unreported_events_ > 0) {
320-
pimpl_->num_unreported_events_--;
321-
return_data_ready = true;
322-
}
305+
return true;
323306
}
324307

325-
return return_data_ready;
308+
return false;
326309
}
327310

328311
std::shared_ptr<void>

0 commit comments

Comments
 (0)