incorporating changes from #53
This commit is contained in:
parent
9df50f5355
commit
edc1886173
4 changed files with 34 additions and 12 deletions
|
@ -146,8 +146,12 @@ public:
|
|||
CallbackType cb)
|
||||
{
|
||||
int64_t sequence_number;
|
||||
// TODO(wjwwood): Check the return code.
|
||||
rmw_send_request(get_client_handle(), request.get(), &sequence_number);
|
||||
if (RMW_RET_OK != rmw_send_request(get_client_handle(), request.get(), &sequence_number)) {
|
||||
// *INDENT-OFF* (prevent uncrustify from making unecessary indents here)
|
||||
throw std::runtime_error(
|
||||
std::string("failed to send request: ") + rmw_get_error_string_safe());
|
||||
// *INDENT-ON*
|
||||
}
|
||||
|
||||
SharedPromise call_promise = std::make_shared<Promise>();
|
||||
SharedFuture f(call_promise->get_future());
|
||||
|
|
|
@ -162,8 +162,9 @@ protected:
|
|||
subscription->handle_message(message);
|
||||
}
|
||||
} else {
|
||||
std::cout << "[rclcpp::error] take failed for subscription on topic: " <<
|
||||
subscription->get_topic_name() << std::endl;
|
||||
fprintf(stderr,
|
||||
"[rclcpp::error] take failed for subscription on topic '%s': %s\n",
|
||||
subscription->get_topic_name().c_str(), rmw_get_error_string_safe());
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -191,8 +192,9 @@ protected:
|
|||
service->handle_request(request_header, request);
|
||||
}
|
||||
} else {
|
||||
std::cout << "[rclcpp::error] take failed for service on service: " <<
|
||||
service->get_service_name() << std::endl;
|
||||
fprintf(stderr,
|
||||
"[rclcpp::error] take request failed for server of service '%s': %s\n",
|
||||
service->get_service_name().c_str(), rmw_get_error_string_safe());
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -203,15 +205,19 @@ protected:
|
|||
std::shared_ptr<void> request_header = client->create_request_header();
|
||||
std::shared_ptr<void> response = client->create_response();
|
||||
bool taken = false;
|
||||
rmw_take_response(
|
||||
rmw_ret_t status = rmw_take_response(
|
||||
client->client_handle_,
|
||||
request_header.get(),
|
||||
response.get(),
|
||||
&taken);
|
||||
if (taken) {
|
||||
client->handle_response(request_header, response);
|
||||
if (status == RMW_RET_OK) {
|
||||
if (taken) {
|
||||
client->handle_response(request_header, response);
|
||||
}
|
||||
} else {
|
||||
std::cout << "[rclcpp::error] take failed for service on client" << std::endl;
|
||||
fprintf(stderr,
|
||||
"[rclcpp::error] take response failed for client of service '%s': %s\n",
|
||||
client->get_service_name().c_str(), rmw_get_error_string_safe());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -63,7 +63,13 @@ public:
|
|||
void
|
||||
publish(std::shared_ptr<MessageT> & msg)
|
||||
{
|
||||
rmw_publish(publisher_handle_, msg.get());
|
||||
rmw_ret_t status = rmw_publish(publisher_handle_, msg.get());
|
||||
if (status != RMW_RET_OK) {
|
||||
// *INDENT-OFF* (prevent uncrustify from making unecessary indents here)
|
||||
throw std::runtime_error(
|
||||
std::string("failed to publish message: ") + rmw_get_error_string_safe());
|
||||
// *INDENT-ON*
|
||||
}
|
||||
}
|
||||
|
||||
private:
|
||||
|
|
|
@ -154,7 +154,13 @@ public:
|
|||
std::shared_ptr<rmw_request_id_t> & req_id,
|
||||
std::shared_ptr<typename ServiceT::Response> & response)
|
||||
{
|
||||
rmw_send_response(get_service_handle(), req_id.get(), response.get());
|
||||
rmw_ret_t status = rmw_send_response(get_service_handle(), req_id.get(), response.get());
|
||||
if (status != RMW_RET_OK) {
|
||||
// *INDENT-OFF* (prevent uncrustify from making unecessary indents here)
|
||||
throw std::runtime_error(
|
||||
std::string("failed to send response: ") + rmw_get_error_string_safe());
|
||||
// *INDENT-ON*
|
||||
}
|
||||
}
|
||||
|
||||
private:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue