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)
|
CallbackType cb)
|
||||||
{
|
{
|
||||||
int64_t sequence_number;
|
int64_t sequence_number;
|
||||||
// TODO(wjwwood): Check the return code.
|
if (RMW_RET_OK != rmw_send_request(get_client_handle(), request.get(), &sequence_number)) {
|
||||||
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>();
|
SharedPromise call_promise = std::make_shared<Promise>();
|
||||||
SharedFuture f(call_promise->get_future());
|
SharedFuture f(call_promise->get_future());
|
||||||
|
|
|
@ -162,8 +162,9 @@ protected:
|
||||||
subscription->handle_message(message);
|
subscription->handle_message(message);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
std::cout << "[rclcpp::error] take failed for subscription on topic: " <<
|
fprintf(stderr,
|
||||||
subscription->get_topic_name() << std::endl;
|
"[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);
|
service->handle_request(request_header, request);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
std::cout << "[rclcpp::error] take failed for service on service: " <<
|
fprintf(stderr,
|
||||||
service->get_service_name() << std::endl;
|
"[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> request_header = client->create_request_header();
|
||||||
std::shared_ptr<void> response = client->create_response();
|
std::shared_ptr<void> response = client->create_response();
|
||||||
bool taken = false;
|
bool taken = false;
|
||||||
rmw_take_response(
|
rmw_ret_t status = rmw_take_response(
|
||||||
client->client_handle_,
|
client->client_handle_,
|
||||||
request_header.get(),
|
request_header.get(),
|
||||||
response.get(),
|
response.get(),
|
||||||
&taken);
|
&taken);
|
||||||
|
if (status == RMW_RET_OK) {
|
||||||
if (taken) {
|
if (taken) {
|
||||||
client->handle_response(request_header, response);
|
client->handle_response(request_header, response);
|
||||||
|
}
|
||||||
} else {
|
} 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
|
void
|
||||||
publish(std::shared_ptr<MessageT> & msg)
|
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:
|
private:
|
||||||
|
|
|
@ -154,7 +154,13 @@ public:
|
||||||
std::shared_ptr<rmw_request_id_t> & req_id,
|
std::shared_ptr<rmw_request_id_t> & req_id,
|
||||||
std::shared_ptr<typename ServiceT::Response> & response)
|
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:
|
private:
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue