ROS 2 rclcpp + rcl - humble
humble
ROS 2 C++ Client Library with ROS Client Library
|
Notifies many nodes of graph changes by listening in a thread. More...
#include <rclcpp/graph_listener.hpp>
Public Member Functions | |
RCLCPP_PUBLIC | GraphListener (const rclcpp::Context::SharedPtr &parent_context) |
virtual RCLCPP_PUBLIC void | start_if_not_started () |
Start the graph listener's listen thread if it hasn't been started. More... | |
virtual RCLCPP_PUBLIC void | add_node (rclcpp::node_interfaces::NodeGraphInterface *node_graph) |
Add a node to the graph listener's list of nodes. More... | |
virtual RCLCPP_PUBLIC bool | has_node (rclcpp::node_interfaces::NodeGraphInterface *node_graph) |
Return true if the given node is in the graph listener's list of nodes. More... | |
virtual RCLCPP_PUBLIC void | remove_node (rclcpp::node_interfaces::NodeGraphInterface *node_graph) |
Remove a node from the graph listener's list of nodes. More... | |
virtual RCLCPP_PUBLIC void | shutdown () |
Stop the listening thread. More... | |
virtual RCLCPP_PUBLIC void | shutdown (const std::nothrow_t &) noexcept |
Nothrow version of shutdown(), logs to RCLCPP_ERROR instead. | |
virtual RCLCPP_PUBLIC bool | is_shutdown () |
Return true if shutdown() has been called, else false. | |
Protected Member Functions | |
virtual RCLCPP_PUBLIC void | run () |
Main function for the listening thread. | |
virtual RCLCPP_PUBLIC void | run_loop () |
RCLCPP_PUBLIC void | init_wait_set () |
RCLCPP_PUBLIC void | cleanup_wait_set () |
Notifies many nodes of graph changes by listening in a thread.
Definition at line 63 of file graph_listener.hpp.
|
virtual |
Add a node to the graph listener's list of nodes.
GraphListenerShutdownError | if the GraphListener is shutdown |
NodeAlreadyAddedError | if the given node is already in the list |
std::invalid_argument | if node is nullptr |
std::system_error | anything std::mutex::lock() throws |
Definition at line 254 of file graph_listener.cpp.
|
virtual |
Return true if the given node is in the graph listener's list of nodes.
Also return false if given nullptr.
std::system_error | anything std::mutex::lock() throws |
Definition at line 237 of file graph_listener.cpp.
|
virtual |
Remove a node from the graph listener's list of nodes.
NodeNotFoundError | if the given node is not in the list |
std::invalid_argument | if node is nullptr |
std::system_error | anything std::mutex::lock() throws |
Definition at line 299 of file graph_listener.cpp.
|
virtual |
Stop the listening thread.
The thread cannot be restarted, and the class is defunct after calling. This function is called by the ~GraphListener() and does nothing if shutdown() was already called. This function exists separately from the ~GraphListener() so that it can be called before and exceptions can be caught.
If start_if_not_started() was never called, this function still succeeds, but start_if_not_started() still cannot be called after this function.
rclcpp::execptions::RCLError | from rcl_guard_condition_fini() |
rclcpp::execptions::RCLError | from rcl_wait_set_fini() |
std::system_error | anything std::mutex::lock() throws |
Definition at line 346 of file graph_listener.cpp.
|
virtual |
Start the graph listener's listen thread if it hasn't been started.
This function is thread-safe.
GraphListenerShutdownError | if the GraphListener is shutdown |
std::runtime | if the parent context was destroyed |
anything | rclcpp::exceptions::throw_from_rcl_error can throw. |
Definition at line 72 of file graph_listener.cpp.