use new error handling API from rcutils (#577)

Signed-off-by: William Woodall <william@osrfoundation.org>
This commit is contained in:
William Woodall 2018-11-01 21:08:54 -05:00 committed by GitHub
parent ec834d321b
commit 33a755c535
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
18 changed files with 81 additions and 87 deletions

View file

@ -102,7 +102,7 @@ public:
if (ret != RCL_RET_OK) {
RCUTILS_LOG_ERROR_NAMED(
"rclcpp",
"failed to destroy serialized message: %s", rcl_get_error_string_safe());
"failed to destroy serialized message: %s", rcl_get_error_string().str);
}
});

View file

@ -121,7 +121,7 @@ public:
RCLCPP_ERROR(
rclcpp::get_logger(rcl_node_get_logger_name(handle.get())).get_child("rclcpp"),
"Error in destruction of rcl service handle: %s",
rcl_get_error_string_safe());
rcl_get_error_string().str);
rcl_reset_error();
}
} else {
@ -164,7 +164,7 @@ public:
any_callback_(any_callback)
{
// check if service handle was initialized
if (!rcl_service_is_valid(service_handle.get(), nullptr)) {
if (!rcl_service_is_valid(service_handle.get())) {
// *INDENT-OFF* (prevent uncrustify from making unnecessary indents here)
throw std::runtime_error(
std::string("rcl_service_t in constructor argument must be initialized beforehand."));
@ -182,7 +182,7 @@ public:
any_callback_(any_callback)
{
// check if service handle was initialized
if (!rcl_service_is_valid(service_handle, nullptr)) {
if (!rcl_service_is_valid(service_handle)) {
// *INDENT-OFF* (prevent uncrustify from making unnecessary indents here)
throw std::runtime_error(
std::string("rcl_service_t in constructor argument must be initialized beforehand."));

View file

@ -186,7 +186,7 @@ public:
if (rcl_wait_set_add_subscription(wait_set, subscription.get()) != RCL_RET_OK) {
RCUTILS_LOG_ERROR_NAMED(
"rclcpp",
"Couldn't add subscription to wait set: %s", rcl_get_error_string_safe());
"Couldn't add subscription to wait set: %s", rcl_get_error_string().str);
return false;
}
}
@ -195,7 +195,7 @@ public:
if (rcl_wait_set_add_client(wait_set, client.get()) != RCL_RET_OK) {
RCUTILS_LOG_ERROR_NAMED(
"rclcpp",
"Couldn't add client to wait set: %s", rcl_get_error_string_safe());
"Couldn't add client to wait set: %s", rcl_get_error_string().str);
return false;
}
}
@ -204,7 +204,7 @@ public:
if (rcl_wait_set_add_service(wait_set, service.get()) != RCL_RET_OK) {
RCUTILS_LOG_ERROR_NAMED(
"rclcpp",
"Couldn't add service to wait set: %s", rcl_get_error_string_safe());
"Couldn't add service to wait set: %s", rcl_get_error_string().str);
return false;
}
}
@ -213,7 +213,7 @@ public:
if (rcl_wait_set_add_timer(wait_set, timer.get()) != RCL_RET_OK) {
RCUTILS_LOG_ERROR_NAMED(
"rclcpp",
"Couldn't add timer to wait set: %s", rcl_get_error_string_safe());
"Couldn't add timer to wait set: %s", rcl_get_error_string().str);
return false;
}
}
@ -223,7 +223,7 @@ public:
RCUTILS_LOG_ERROR_NAMED(
"rclcpp",
"Couldn't add guard_condition to wait set: %s",
rcl_get_error_string_safe());
rcl_get_error_string().str);
return false;
}
}

View file

@ -48,7 +48,7 @@ ClientBase::ClientBase(
if (rcl_client_fini(client, handle.get()) != RCL_RET_OK) {
RCLCPP_ERROR(
rclcpp::get_logger(rcl_node_get_logger_name(handle.get())).get_child("rclcpp"),
"Error in destruction of rcl client handle: %s", rcl_get_error_string_safe());
"Error in destruction of rcl client handle: %s", rcl_get_error_string().str);
rcl_reset_error();
}
} else {

View file

@ -75,7 +75,7 @@ throw_from_rcl_error(
RCLErrorBase::RCLErrorBase(rcl_ret_t ret, const rcl_error_state_t * error_state)
: ret(ret), message(error_state->message), file(error_state->file), line(error_state->line_number),
formatted_message(rcl_get_error_string_safe())
formatted_message(rcl_get_error_string().str)
{}
RCLError::RCLError(

View file

@ -45,7 +45,7 @@ Executor::Executor(const ExecutorArgs & args)
{
throw std::runtime_error(
std::string("Failed to create interrupt guard condition in Executor constructor: ") +
rcl_get_error_string_safe());
rcl_get_error_string().str);
}
// The number of guard conditions is always at least 2: 1 for the ctrl-c guard cond,
@ -63,12 +63,12 @@ Executor::Executor(const ExecutorArgs & args)
{
RCUTILS_LOG_ERROR_NAMED(
"rclcpp",
"failed to create wait set: %s", rcl_get_error_string_safe());
"failed to create wait set: %s", rcl_get_error_string().str);
rcl_reset_error();
if (rcl_guard_condition_fini(&interrupt_guard_condition_) != RCL_RET_OK) {
RCUTILS_LOG_ERROR_NAMED(
"rclcpp",
"failed to destroy guard condition: %s", rcl_get_error_string_safe());
"failed to destroy guard condition: %s", rcl_get_error_string().str);
rcl_reset_error();
}
throw std::runtime_error("Failed to create wait set in Executor constructor");
@ -91,14 +91,14 @@ Executor::~Executor()
if (rcl_wait_set_fini(&wait_set_) != RCL_RET_OK) {
RCUTILS_LOG_ERROR_NAMED(
"rclcpp",
"failed to destroy wait set: %s", rcl_get_error_string_safe());
"failed to destroy wait set: %s", rcl_get_error_string().str);
rcl_reset_error();
}
// Finalize the interrupt guard condition.
if (rcl_guard_condition_fini(&interrupt_guard_condition_) != RCL_RET_OK) {
RCUTILS_LOG_ERROR_NAMED(
"rclcpp",
"failed to destroy guard condition: %s", rcl_get_error_string_safe());
"failed to destroy guard condition: %s", rcl_get_error_string().str);
rcl_reset_error();
}
// Remove and release the sigint guard condition
@ -127,7 +127,7 @@ Executor::add_node(rclcpp::node_interfaces::NodeBaseInterface::SharedPtr node_pt
if (notify) {
// Interrupt waiting to handle new node
if (rcl_trigger_guard_condition(&interrupt_guard_condition_) != RCL_RET_OK) {
throw std::runtime_error(rcl_get_error_string_safe());
throw std::runtime_error(rcl_get_error_string().str);
}
}
// Add the node's notify condition to the guard condition handles
@ -161,7 +161,7 @@ Executor::remove_node(rclcpp::node_interfaces::NodeBaseInterface::SharedPtr node
// If the node was matched and removed, interrupt waiting
if (node_removed) {
if (rcl_trigger_guard_condition(&interrupt_guard_condition_) != RCL_RET_OK) {
throw std::runtime_error(rcl_get_error_string_safe());
throw std::runtime_error(rcl_get_error_string().str);
}
}
}
@ -247,7 +247,7 @@ Executor::cancel()
{
spinning.store(false);
if (rcl_trigger_guard_condition(&interrupt_guard_condition_) != RCL_RET_OK) {
throw std::runtime_error(rcl_get_error_string_safe());
throw std::runtime_error(rcl_get_error_string().str);
}
}
@ -286,7 +286,7 @@ Executor::execute_any_executable(AnyExecutable & any_exec)
// Wake the wait, because it may need to be recalculated or work that
// was previously blocked is now available.
if (rcl_trigger_guard_condition(&interrupt_guard_condition_) != RCL_RET_OK) {
throw std::runtime_error(rcl_get_error_string_safe());
throw std::runtime_error(rcl_get_error_string().str);
}
}
@ -309,7 +309,7 @@ Executor::execute_subscription(
RCUTILS_LOG_ERROR_NAMED(
"rclcpp",
"take_serialized failed for subscription on topic '%s': %s",
subscription->get_topic_name(), rcl_get_error_string_safe());
subscription->get_topic_name(), rcl_get_error_string().str);
rcl_reset_error();
}
subscription->return_serialized_message(serialized_msg);
@ -324,7 +324,7 @@ Executor::execute_subscription(
RCUTILS_LOG_ERROR_NAMED(
"rclcpp",
"could not deserialize serialized message on topic '%s': %s",
subscription->get_topic_name(), rcl_get_error_string_safe());
subscription->get_topic_name(), rcl_get_error_string().str);
rcl_reset_error();
}
subscription->return_message(message);
@ -349,7 +349,7 @@ Executor::execute_intra_process_subscription(
RCUTILS_LOG_ERROR_NAMED(
"rclcpp",
"take failed for intra process subscription on topic '%s': %s",
subscription->get_topic_name(), rcl_get_error_string_safe());
subscription->get_topic_name(), rcl_get_error_string().str);
rcl_reset_error();
}
}
@ -377,7 +377,7 @@ Executor::execute_service(
RCUTILS_LOG_ERROR_NAMED(
"rclcpp",
"take request failed for server of service '%s': %s",
service->get_service_name(), rcl_get_error_string_safe());
service->get_service_name(), rcl_get_error_string().str);
rcl_reset_error();
}
}
@ -398,7 +398,7 @@ Executor::execute_client(
RCUTILS_LOG_ERROR_NAMED(
"rclcpp",
"take response failed for client of service '%s': %s",
client->get_service_name(), rcl_get_error_string_safe());
client->get_service_name(), rcl_get_error_string().str);
rcl_reset_error();
}
}
@ -433,7 +433,7 @@ Executor::wait_for_work(std::chrono::nanoseconds timeout)
memory_strategy_->number_of_ready_clients(), memory_strategy_->number_of_ready_services());
if (RCL_RET_OK != ret) {
throw std::runtime_error(
std::string("Couldn't resize the wait set : ") + rcl_get_error_string_safe());
std::string("Couldn't resize the wait set : ") + rcl_get_error_string().str);
}
if (!memory_strategy_->add_handles_to_wait_set(&wait_set_)) {

View file

@ -51,14 +51,7 @@ rclcpp::expand_topic_or_service_name(
}
rcl_ret_t ret = rcl_get_default_topic_name_substitutions(&substitutions_map);
if (ret != RCL_RET_OK) {
rcutils_error_state_t error_state;
if (rcutils_error_state_copy(rcl_get_error_state(), &error_state) != RCUTILS_RET_OK) {
throw std::bad_alloc();
}
auto error_state_scope_exit = rclcpp::make_scope_exit(
[&error_state]() {
rcutils_error_state_fini(&error_state);
});
const rcutils_error_state_t * error_state = rcl_get_error_state();
// finalize the string map before throwing
rcutils_ret = rcutils_string_map_fini(&substitutions_map);
if (rcutils_ret != RCUTILS_RET_OK) {
@ -66,10 +59,10 @@ rclcpp::expand_topic_or_service_name(
"rclcpp",
"failed to fini string_map (%d) during error handling: %s",
rcutils_ret,
rcutils_get_error_string_safe());
rcutils_get_error_string().str);
rcutils_reset_error();
}
throw_from_rcl_error(ret, "", &error_state);
throw_from_rcl_error(ret, "", error_state);
}
ret = rcl_expand_topic_name(

View file

@ -54,7 +54,7 @@ NodeBase::NodeBase(
if (rcl_guard_condition_fini(&notify_guard_condition_) != RCL_RET_OK) {
RCUTILS_LOG_ERROR_NAMED(
"rclcpp",
"failed to destroy guard condition: %s", rcl_get_error_string_safe());
"failed to destroy guard condition: %s", rcl_get_error_string().str);
}
};
@ -122,7 +122,7 @@ NodeBase::NodeBase(
// Print message because exception will be thrown later in this code block
RCUTILS_LOG_ERROR_NAMED(
"rclcpp",
"Failed to fini arguments during error handling: %s", rcl_get_error_string_safe());
"Failed to fini arguments during error handling: %s", rcl_get_error_string().str);
rcl_reset_error();
}
@ -180,7 +180,7 @@ NodeBase::NodeBase(
if (rcl_node_fini(node) != RCL_RET_OK) {
RCUTILS_LOG_ERROR_NAMED(
"rclcpp",
"Error in destruction of rcl node handle: %s", rcl_get_error_string_safe());
"Error in destruction of rcl node handle: %s", rcl_get_error_string().str);
}
delete node;
});
@ -197,7 +197,7 @@ NodeBase::NodeBase(
// print message because throwing would prevent the destructor from being called
RCUTILS_LOG_ERROR_NAMED(
"rclcpp",
"Failed to fini arguments: %s", rcl_get_error_string_safe());
"Failed to fini arguments: %s", rcl_get_error_string().str);
rcl_reset_error();
}
}
@ -211,7 +211,7 @@ NodeBase::~NodeBase()
if (rcl_guard_condition_fini(&notify_guard_condition_) != RCL_RET_OK) {
RCUTILS_LOG_ERROR_NAMED(
"rclcpp",
"failed to destroy guard condition: %s", rcl_get_error_string_safe());
"failed to destroy guard condition: %s", rcl_get_error_string().str);
}
}
}

View file

@ -59,13 +59,13 @@ NodeGraph::get_topic_names_and_types(bool no_demangle) const
&topic_names_and_types);
if (ret != RCL_RET_OK) {
auto error_msg = std::string("failed to get topic names and types: ") +
rcl_get_error_string_safe();
rcl_get_error_string().str;
rcl_reset_error();
if (rcl_names_and_types_fini(&topic_names_and_types) != RCL_RET_OK) {
error_msg += std::string(", failed also to cleanup topic names and types, leaking memory: ") +
rcl_get_error_string_safe();
rcl_get_error_string().str;
}
throw std::runtime_error(error_msg + rcl_get_error_string_safe());
throw std::runtime_error(error_msg + rcl_get_error_string().str);
}
std::map<std::string, std::vector<std::string>> topics_and_types;
@ -80,7 +80,7 @@ NodeGraph::get_topic_names_and_types(bool no_demangle) const
if (ret != RCL_RET_OK) {
// *INDENT-OFF*
throw std::runtime_error(
std::string("could not destroy topic names and types: ") + rcl_get_error_string_safe());
std::string("could not destroy topic names and types: ") + rcl_get_error_string().str);
// *INDENT-ON*
}
@ -99,14 +99,14 @@ NodeGraph::get_service_names_and_types() const
&service_names_and_types);
if (ret != RCL_RET_OK) {
auto error_msg = std::string("failed to get service names and types: ") +
rcl_get_error_string_safe();
rcl_get_error_string().str;
rcl_reset_error();
if (rcl_names_and_types_fini(&service_names_and_types) != RCL_RET_OK) {
error_msg +=
std::string(", failed also to cleanup service names and types, leaking memory: ") +
rcl_get_error_string_safe();
rcl_get_error_string().str;
}
throw std::runtime_error(error_msg + rcl_get_error_string_safe());
throw std::runtime_error(error_msg + rcl_get_error_string().str);
}
std::map<std::string, std::vector<std::string>> services_and_types;
@ -121,7 +121,7 @@ NodeGraph::get_service_names_and_types() const
if (ret != RCL_RET_OK) {
// *INDENT-OFF*
throw std::runtime_error(
std::string("could not destroy service names and types: ") + rcl_get_error_string_safe());
std::string("could not destroy service names and types: ") + rcl_get_error_string().str);
// *INDENT-ON*
}
@ -155,16 +155,16 @@ NodeGraph::get_node_names_and_namespaces() const
&node_names_c,
&node_namespaces_c);
if (ret != RCL_RET_OK) {
auto error_msg = std::string("failed to get node names: ") + rcl_get_error_string_safe();
auto error_msg = std::string("failed to get node names: ") + rcl_get_error_string().str;
rcl_reset_error();
if (rcutils_string_array_fini(&node_names_c) != RCUTILS_RET_OK) {
error_msg += std::string(", failed also to cleanup node names, leaking memory: ") +
rcl_get_error_string_safe();
rcl_get_error_string().str;
rcl_reset_error();
}
if (rcutils_string_array_fini(&node_namespaces_c) != RCUTILS_RET_OK) {
error_msg += std::string(", failed also to cleanup node namespaces, leaking memory: ") +
rcl_get_error_string_safe();
rcl_get_error_string().str;
rcl_reset_error();
}
// TODO(karsten1987): Append rcutils_error_message once it's in master
@ -217,7 +217,7 @@ NodeGraph::count_publishers(const std::string & topic_name) const
if (ret != RMW_RET_OK) {
// *INDENT-OFF*
throw std::runtime_error(
std::string("could not count publishers: ") + rmw_get_error_string_safe());
std::string("could not count publishers: ") + rmw_get_error_string().str);
// *INDENT-ON*
}
return count;
@ -239,7 +239,7 @@ NodeGraph::count_subscribers(const std::string & topic_name) const
if (ret != RMW_RET_OK) {
// *INDENT-OFF*
throw std::runtime_error(
std::string("could not count subscribers: ") + rmw_get_error_string_safe());
std::string("could not count subscribers: ") + rmw_get_error_string().str);
// *INDENT-ON*
}
return count;

View file

@ -123,7 +123,7 @@ NodeParameters::NodeParameters(
if (!rcl_parse_yaml_file(yaml_path.c_str(), yaml_params)) {
std::ostringstream ss;
ss << "Failed to parse parameters from file '" << yaml_path << "': " <<
rcl_get_error_string_safe();
rcl_get_error_string().str;
rcl_reset_error();
throw std::runtime_error(ss.str());
}

View file

@ -45,8 +45,8 @@ NodeServices::add_service(
auto notify_guard_condition_lock = node_base_->acquire_notify_guard_condition_lock();
if (rcl_trigger_guard_condition(node_base_->get_notify_guard_condition()) != RCL_RET_OK) {
throw std::runtime_error(
std::string(
"Failed to notify wait set on service creation: ") + rmw_get_error_string()
std::string("Failed to notify wait set on service creation: ") +
rmw_get_error_string().str
);
}
}
@ -72,7 +72,8 @@ NodeServices::add_client(
auto notify_guard_condition_lock = node_base_->acquire_notify_guard_condition_lock();
if (rcl_trigger_guard_condition(node_base_->get_notify_guard_condition()) != RCL_RET_OK) {
throw std::runtime_error(
std::string("Failed to notify wait set on client creation: ") + rmw_get_error_string()
std::string("Failed to notify wait set on client creation: ") +
rmw_get_error_string().str
);
}
}

View file

@ -41,7 +41,7 @@ NodeTimers::add_timer(
}
if (rcl_trigger_guard_condition(node_base_->get_notify_guard_condition()) != RCL_RET_OK) {
throw std::runtime_error(
std::string(
"Failed to notify wait set on timer creation: ") + rmw_get_error_string());
std::string("Failed to notify wait set on timer creation: ") +
rmw_get_error_string().str);
}
}

View file

@ -73,8 +73,8 @@ NodeTopics::add_publisher(
auto notify_guard_condition_lock = node_base_->acquire_notify_guard_condition_lock();
if (rcl_trigger_guard_condition(node_base_->get_notify_guard_condition()) != RCL_RET_OK) {
throw std::runtime_error(
std::string(
"Failed to notify wait set on publisher creation: ") + rmw_get_error_string());
std::string("Failed to notify wait set on publisher creation: ") +
rmw_get_error_string().str);
}
}
}
@ -123,8 +123,8 @@ NodeTopics::add_subscription(
auto notify_guard_condition_lock = node_base_->acquire_notify_guard_condition_lock();
if (rcl_trigger_guard_condition(node_base_->get_notify_guard_condition()) != RCL_RET_OK) {
throw std::runtime_error(
std::string(
"Failed to notify wait set on subscription creation: ") + rmw_get_error_string()
std::string("Failed to notify wait set on subscription creation: ") +
rmw_get_error_string().str
);
}
}

View file

@ -66,12 +66,12 @@ PublisherBase::PublisherBase(
// Life time of this object is tied to the publisher handle.
rmw_publisher_t * publisher_rmw_handle = rcl_publisher_get_rmw_handle(&publisher_handle_);
if (!publisher_rmw_handle) {
auto msg = std::string("failed to get rmw handle: ") + rcl_get_error_string_safe();
auto msg = std::string("failed to get rmw handle: ") + rcl_get_error_string().str;
rcl_reset_error();
throw std::runtime_error(msg);
}
if (rmw_get_gid_for_publisher(publisher_rmw_handle, &rmw_gid_) != RMW_RET_OK) {
auto msg = std::string("failed to get publisher gid: ") + rmw_get_error_string_safe();
auto msg = std::string("failed to get publisher gid: ") + rmw_get_error_string().str;
rmw_reset_error();
throw std::runtime_error(msg);
}
@ -83,7 +83,7 @@ PublisherBase::~PublisherBase()
RCUTILS_LOG_ERROR_NAMED(
"rclcpp",
"Error in destruction of intra process rcl publisher handle: %s",
rcl_get_error_string_safe());
rcl_get_error_string().str);
rcl_reset_error();
}
@ -91,7 +91,7 @@ PublisherBase::~PublisherBase()
RCUTILS_LOG_ERROR_NAMED(
"rclcpp",
"Error in destruction of rcl publisher handle: %s",
rcl_get_error_string_safe());
rcl_get_error_string().str);
rcl_reset_error();
}
}
@ -107,7 +107,7 @@ PublisherBase::get_queue_size() const
{
const rcl_publisher_options_t * publisher_options = rcl_publisher_get_options(&publisher_handle_);
if (!publisher_options) {
auto msg = std::string("failed to get publisher options: ") + rcl_get_error_string_safe();
auto msg = std::string("failed to get publisher options: ") + rcl_get_error_string().str;
rcl_reset_error();
throw std::runtime_error(msg);
}
@ -150,14 +150,14 @@ PublisherBase::operator==(const rmw_gid_t * gid) const
bool result = false;
auto ret = rmw_compare_gids_equal(gid, &this->get_gid(), &result);
if (ret != RMW_RET_OK) {
auto msg = std::string("failed to compare gids: ") + rmw_get_error_string_safe();
auto msg = std::string("failed to compare gids: ") + rmw_get_error_string().str;
rmw_reset_error();
throw std::runtime_error(msg);
}
if (!result) {
ret = rmw_compare_gids_equal(gid, &this->get_intra_process_gid(), &result);
if (ret != RMW_RET_OK) {
auto msg = std::string("failed to compare gids: ") + rmw_get_error_string_safe();
auto msg = std::string("failed to compare gids: ") + rmw_get_error_string().str;
rmw_reset_error();
throw std::runtime_error(msg);
}
@ -204,7 +204,7 @@ PublisherBase::setup_intra_process(
rmw_publisher_t * publisher_rmw_handle = rcl_publisher_get_rmw_handle(
&intra_process_publisher_handle_);
if (publisher_rmw_handle == nullptr) {
auto msg = std::string("Failed to get rmw publisher handle") + rcl_get_error_string_safe();
auto msg = std::string("Failed to get rmw publisher handle") + rcl_get_error_string().str;
rcl_reset_error();
throw std::runtime_error(msg);
}
@ -212,7 +212,7 @@ PublisherBase::setup_intra_process(
publisher_rmw_handle, &intra_process_rmw_gid_);
if (rmw_ret != RMW_RET_OK) {
auto msg =
std::string("failed to create intra process publisher gid: ") + rmw_get_error_string_safe();
std::string("failed to create intra process publisher gid: ") + rmw_get_error_string().str;
rmw_reset_error();
throw std::runtime_error(msg);
}

View file

@ -43,7 +43,7 @@ SubscriptionBase::SubscriptionBase(
RCLCPP_ERROR(
rclcpp::get_logger(rcl_node_get_logger_name(node_handle.get())).get_child("rclcpp"),
"Error in destruction of rcl subscription handle: %s",
rcl_get_error_string_safe());
rcl_get_error_string().str);
rcl_reset_error();
}
delete rcl_subs;

View file

@ -32,7 +32,7 @@ TimerBase::TimerBase(rclcpp::Clock::SharedPtr clock, std::chrono::nanoseconds pe
if (rcl_timer_fini(timer) != RCL_RET_OK) {
RCUTILS_LOG_ERROR_NAMED(
"rclcpp",
"Failed to clean up rcl timer handle: %s", rcl_get_error_string_safe());
"Failed to clean up rcl timer handle: %s", rcl_get_error_string().str);
rcl_reset_error();
}
delete timer;
@ -49,7 +49,7 @@ TimerBase::TimerBase(rclcpp::Clock::SharedPtr clock, std::chrono::nanoseconds pe
{
RCUTILS_LOG_ERROR_NAMED(
"rclcpp",
"Couldn't initialize rcl timer handle: %s\n", rcl_get_error_string_safe());
"Couldn't initialize rcl timer handle: %s\n", rcl_get_error_string().str);
rcl_reset_error();
}
}
@ -61,7 +61,7 @@ void
TimerBase::cancel()
{
if (rcl_timer_cancel(timer_handle_.get()) != RCL_RET_OK) {
throw std::runtime_error(std::string("Couldn't cancel timer: ") + rcl_get_error_string_safe());
throw std::runtime_error(std::string("Couldn't cancel timer: ") + rcl_get_error_string().str);
}
}
@ -69,7 +69,7 @@ void
TimerBase::reset()
{
if (rcl_timer_reset(timer_handle_.get()) != RCL_RET_OK) {
throw std::runtime_error(std::string("Couldn't reset timer: ") + rcl_get_error_string_safe());
throw std::runtime_error(std::string("Couldn't reset timer: ") + rcl_get_error_string().str);
}
}
@ -78,7 +78,7 @@ TimerBase::is_ready()
{
bool ready = false;
if (rcl_timer_is_ready(timer_handle_.get(), &ready) != RCL_RET_OK) {
throw std::runtime_error(std::string("Failed to check timer: ") + rcl_get_error_string_safe());
throw std::runtime_error(std::string("Failed to check timer: ") + rcl_get_error_string().str);
}
return ready;
}
@ -92,7 +92,7 @@ TimerBase::time_until_trigger()
{
throw std::runtime_error(
std::string("Timer could not get time until next call: ") +
rcl_get_error_string_safe());
rcl_get_error_string().str);
}
return std::chrono::nanoseconds(time_until_next_call);
}

View file

@ -120,7 +120,7 @@ trigger_interrupt_guard_condition(int signal_value)
if (status != RCL_RET_OK) {
RCUTILS_LOG_ERROR_NAMED(
"rclcpp",
"failed to trigger guard condition: %s", rcl_get_error_string_safe());
"failed to trigger guard condition: %s", rcl_get_error_string().str);
}
}
}
@ -167,7 +167,7 @@ rclcpp::init(int argc, char const * const argv[])
g_is_interrupted.store(false);
if (rcl_init(argc, argv, rcl_get_default_allocator()) != RCL_RET_OK) {
std::string msg = "failed to initialize rmw implementation: ";
msg += rcl_get_error_string_safe();
msg += rcl_get_error_string().str;
rcl_reset_error();
throw std::runtime_error(msg);
}
@ -233,7 +233,7 @@ rclcpp::remove_ros_arguments(int argc, char const * const argv[])
if (RCL_RET_OK != rcl_arguments_fini(&parsed_args)) {
base_exc.formatted_message += std::string(
", failed also to cleanup parsed arguments, leaking memory: ") +
rcl_get_error_string_safe();
rcl_get_error_string().str;
rcl_reset_error();
}
throw exceptions::RCLError(base_exc, "");
@ -307,7 +307,7 @@ rclcpp::get_sigint_guard_condition(rcl_wait_set_t * wait_set)
if (rcl_guard_condition_init(&handle, options) != RCL_RET_OK) {
// *INDENT-OFF* (prevent uncrustify from making unnecessary indents here)
throw std::runtime_error(std::string(
"Couldn't initialize guard condition: ") + rcl_get_error_string_safe());
"Couldn't initialize guard condition: ") + rcl_get_error_string().str);
// *INDENT-ON*
}
g_sigint_guard_cond_handles[wait_set] = handle;
@ -325,7 +325,7 @@ rclcpp::release_sigint_guard_condition(rcl_wait_set_t * wait_set)
// *INDENT-OFF* (prevent uncrustify from making unnecessary indents here)
throw std::runtime_error(std::string(
"Failed to destroy sigint guard condition: ") +
rcl_get_error_string_safe());
rcl_get_error_string().str);
// *INDENT-ON*
}
g_sigint_guard_cond_handles.erase(kv);

View file

@ -356,7 +356,7 @@ public:
{
if (rcl_lifecycle_state_machine_is_initialized(&state_machine_) != RCL_RET_OK) {
RCUTILS_LOG_ERROR("Unable to change state for state machine for %s: %s",
node_base_interface_->get_name(), rcl_get_error_string_safe());
node_base_interface_->get_name(), rcl_get_error_string().str);
return RCL_RET_ERROR;
}
@ -368,7 +368,7 @@ public:
&state_machine_, transition_id, publish_update) != RCL_RET_OK)
{
RCUTILS_LOG_ERROR("Unable to start transition %u from current state %s: %s",
transition_id, state_machine_.current_state->label, rcl_get_error_string_safe());
transition_id, state_machine_.current_state->label, rcl_get_error_string().str);
return RCL_RET_ERROR;
}