ROS 2 rclcpp + rcl - lyrical  lyrical
ROS 2 C++ Client Library with ROS Client Library
error_handling.h
1 // Copyright 2015 Open Source Robotics Foundation, Inc.
2 //
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
6 //
7 // http://www.apache.org/licenses/LICENSE-2.0
8 //
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
14 
15 #ifndef RCL__ERROR_HANDLING_H_
16 #define RCL__ERROR_HANDLING_H_
17 
18 #include "rcutils/error_handling.h"
19 
21 
22 typedef rcutils_error_state_t rcl_error_state_t;
23 typedef rcutils_error_string_t rcl_error_string_t;
24 
25 #define rcl_initialize_error_handling_thread_local_storage \
26  rcutils_initialize_error_handling_thread_local_storage
27 
28 #define rcl_set_error_state rcutils_set_error_state
29 
30 #define RCL_CHECK_ARGUMENT_FOR_NULL(argument, error_return_type) \
31  RCUTILS_CHECK_ARGUMENT_FOR_NULL(argument, error_return_type)
32 
33 #define RCL_CHECK_FOR_NULL_WITH_MSG(value, msg, error_statement) \
34  RCUTILS_CHECK_FOR_NULL_WITH_MSG(value, msg, error_statement)
35 
36 #define RCL_SET_ERROR_MSG(msg) RCUTILS_SET_ERROR_MSG(msg)
37 
38 #define RCL_SET_ERROR_MSG_WITH_FORMAT_STRING(fmt_str, ...) \
39  RCUTILS_SET_ERROR_MSG_WITH_FORMAT_STRING(fmt_str, __VA_ARGS__)
40 
41 #define rcl_error_is_set rcutils_error_is_set
42 
43 // RCL_EXPECT_ERROR_IS_SET checks something has set the rcl error state.
44 // Use when you want to propagate an error set by another function.
45 // Typical usage:
46 // rcl_ret_t ret = rcl_some_function_that_can_fail()
47 // if (ret != RCL_RET_OK) {
48 // RCL_EXPECT_ERROR_IS_SET(ret);
49 // return ret;
50 // }
51 #define RCL_EXPECT_ERROR_IS_SET(ret) \
52  do { \
53  if (!rcl_error_is_set()) { \
54  RCL_SET_ERROR_MSG_WITH_FORMAT_STRING("Expected error message, but none set: %d", ret); \
55  } \
56  } while (0)
57 
58 #define rcl_get_error_state rcutils_get_error_state
59 
60 #define rcl_get_error_string rcutils_get_error_string
61 
62 #define rcl_reset_error rcutils_reset_error
63 
64 #endif // RCL__ERROR_HANDLING_H_