15 #ifndef RCLCPP__GRAPH_LISTENER_HPP_ 16 #define RCLCPP__GRAPH_LISTENER_HPP_ 33 namespace graph_listener
41 :
std::runtime_error(
"GraphListener already shutdown") {}
49 :
std::runtime_error(
"node already added") {}
57 :
std::runtime_error(
"node not found") {}
61 class GraphListener :
public std::enable_shared_from_this<GraphListener>
68 virtual ~GraphListener();
79 start_if_not_started();
157 std::thread listener_thread_;
159 std::atomic_bool is_shutdown_;
160 mutable std::mutex shutdown_mutex_;
162 mutable std::mutex node_graph_interfaces_barrier_mutex_;
163 mutable std::mutex node_graph_interfaces_mutex_;
164 std::vector<rclcpp::node_interfaces::NodeGraphInterface *> node_graph_interfaces_;
174 #endif // RCLCPP__GRAPH_LISTENER_HPP_
#define RCLCPP_DISABLE_COPY(...)
Definition: macros.hpp:26
GraphListenerShutdownError()
Definition: graph_listener.hpp:40
Definition: allocator_common.hpp:24
Definition: parameter.hpp:235
rcl_wait_set_t rcl_get_zero_initialized_wait_set(void)
rcl_guard_condition_t rcl_get_zero_initialized_guard_condition(void)
Notifies many nodes of graph changes by listening in a thread.
Definition: graph_listener.hpp:61
NodeAlreadyAddedError()
Definition: graph_listener.hpp:48
Thrown when a node has already been added to the GraphListener.
Definition: graph_listener.hpp:45
#define RCLCPP_PUBLIC
Definition: visibility_control.hpp:50
Thrown when a function is called on a GraphListener that is already shutdown.
Definition: graph_listener.hpp:37
NodeNotFoundError()
Definition: graph_listener.hpp:56
void shutdown()
Notify the signal handler and rmw that rclcpp is shutting down.
Thrown when the given node is not in the GraphListener.
Definition: graph_listener.hpp:53
Pure virtual interface class for the NodeGraph part of the Node API.
Definition: node_graph_interface.hpp:35