Skip to content

Commit 1a7cf77

Browse files
Janosch MachowinskiJanosch Machowinski
Janosch Machowinski
authored and
Janosch Machowinski
committed
fix(rcl_cpp_action) : fixed regression
Signed-off-by: Janosch Machowinski <[email protected]>
1 parent 7657ac5 commit 1a7cf77

File tree

2 files changed

+22
-50
lines changed

2 files changed

+22
-50
lines changed

rclcpp_action/src/client.cpp

+14-25
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

@@ -336,6 +330,8 @@ ClientBase::add_to_wait_set(rcl_wait_set_t * wait_set)
336330
bool
337331
ClientBase::is_ready(rcl_wait_set_t * wait_set)
338332
{
333+
334+
339335
bool is_feedback_ready{false};
340336
bool is_status_ready{false};
341337
bool is_goal_response_ready{false};
@@ -358,9 +354,7 @@ ClientBase::is_ready(rcl_wait_set_t * wait_set)
358354
}
359355
}
360356

361-
size_t cnt = 0;
362357
if (is_feedback_ready) {
363-
cnt++;
364358
std::shared_ptr<void> feedback_message;
365359
{
366360
std::lock_guard<std::recursive_mutex> lock(pimpl_->action_client_mutex_);
@@ -374,10 +368,11 @@ ClientBase::is_ready(rcl_wait_set_t * wait_set)
374368
std::make_shared<ClientBaseData>(
375369
ClientBaseData::FeedbackReadyData(
376370
ret, feedback_message)));
371+
372+
return true;
377373
}
378374

379375
if (is_status_ready) {
380-
cnt++;
381376
std::shared_ptr<void> status_message;
382377
{
383378
std::lock_guard<std::recursive_mutex> lock(pimpl_->action_client_mutex_);
@@ -391,10 +386,11 @@ ClientBase::is_ready(rcl_wait_set_t * wait_set)
391386
std::make_shared<ClientBaseData>(
392387
ClientBaseData::StatusReadyData(
393388
ret, status_message)));
389+
390+
return true;
394391
}
395392

396393
if (is_goal_response_ready) {
397-
cnt++;
398394
rmw_request_id_t response_header;
399395
std::shared_ptr<void> goal_response;
400396
{
@@ -404,15 +400,17 @@ ClientBase::is_ready(rcl_wait_set_t * wait_set)
404400
ret = rcl_action_take_goal_response(
405401
pimpl_->client_handle.get(), &response_header, goal_response.get());
406402
}
403+
407404
std::lock_guard<std::recursive_mutex> lock(pimpl_->data_queue_mutex_);
408405
pimpl_->data_queue_.push_back(
409406
std::make_shared<ClientBaseData>(
410407
ClientBaseData::GoalResponseData(
411408
ret, response_header, goal_response)));
409+
410+
return true;
412411
}
413412

414413
if (is_result_response_ready) {
415-
cnt++;
416414
rmw_request_id_t response_header;
417415
std::shared_ptr<void> result_response;
418416
{
@@ -421,15 +419,17 @@ ClientBase::is_ready(rcl_wait_set_t * wait_set)
421419
ret = rcl_action_take_result_response(
422420
pimpl_->client_handle.get(), &response_header, result_response.get());
423421
}
422+
424423
std::lock_guard<std::recursive_mutex> lock(pimpl_->data_queue_mutex_);
425424
pimpl_->data_queue_.push_back(
426425
std::make_shared<ClientBaseData>(
427426
ClientBaseData::ResultResponseData(
428427
ret, response_header, result_response)));
428+
429+
return true;
429430
}
430431

431432
if (is_cancel_response_ready) {
432-
cnt++;
433433
rmw_request_id_t response_header;
434434
std::shared_ptr<void> cancel_response;
435435
{
@@ -444,21 +444,10 @@ ClientBase::is_ready(rcl_wait_set_t * wait_set)
444444
std::make_shared<ClientBaseData>(
445445
ClientBaseData::CancelResponseData(
446446
ret, response_header, cancel_response)));
447+
return true;
447448
}
448449

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;
450+
return false;
462451
}
463452

464453
void

rclcpp_action/src/server.cpp

+8-25
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)