ROS 2 rclcpp + rcl - rolling
rolling-a919a6e5
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.
Note that if you override this method, but leave shutdown to be called in the destruction of this base class, it will not call the overridden version from your base class. So you need to ensure you call your class's shutdown() in its destructor.
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.