mteb/BrightProRoboticsRetrieval huggingface dataset:
##  Public Types  
  
---  
using  |  [ OnSetParametersCallbackHandle
](classrclcpp_1_1Node.html#aac7e1fe50bc2683380cd9a635ac51edb) = [
rclcpp::node_interfaces::OnSetParametersCallbackHandle
](structrclcpp_1_1node__interfaces_1_1OnSetParametersCallbackHandle.html)  
using  |  [ OnParametersSetCallbackType
](classrclcpp_1_1Node.html#ab403fecdb5ec2eb9f88e3eb7ae6f6d0c) = [
rclcpp::node_interfaces::NodeParametersInterface::OnParametersSetCallbackType
](classrclcpp_1_1node__interfaces_1_1NodeParametersInterface.html#a7143766bc4249673edb6244820fc5a94)  
  
##  Public Member Functions  
  
---  
|  [ Node ](classrclcpp_1_1Node.html#abaa409bd2dc2cc2437fd9e47378cc5af) (const
[ std::string ](http://en.cppreference.com/w/cpp/string/basic_string.html)
&node_name, const [ NodeOptions ](classrclcpp_1_1NodeOptions.html) &options= [
NodeOptions ](classrclcpp_1_1NodeOptions.html) ())  
|  Create a new node with the specified name. [ More...
](classrclcpp_1_1Node.html#abaa409bd2dc2cc2437fd9e47378cc5af)  
  
|  [ Node ](classrclcpp_1_1Node.html#a83f5f45604217b3dc583dac7ab3b66a8) (const
[ std::string ](http://en.cppreference.com/w/cpp/string/basic_string.html)
&node_name, const [ std::string
](http://en.cppreference.com/w/cpp/string/basic_string.html) &namespace_,
const [ NodeOptions ](classrclcpp_1_1NodeOptions.html) &options= [ NodeOptions
](classrclcpp_1_1NodeOptions.html) ())  
|  Create a new node with the specified name. [ More...
](classrclcpp_1_1Node.html#a83f5f45604217b3dc583dac7ab3b66a8)  
  
virtual  |  [ ~Node
](classrclcpp_1_1Node.html#a63584993927b11869d15a34af7e64937) ()  
const char *  |  [ get_name
](classrclcpp_1_1Node.html#a1e162104495b21f50c1e9aa11460fb93) () const  
|  Get the name of the node. [ More...
](classrclcpp_1_1Node.html#a1e162104495b21f50c1e9aa11460fb93)  
  
const char *  |  [ get_namespace
](classrclcpp_1_1Node.html#a7be04e55e2934e05df992b188d9dce6d) () const
[ get_namespace() ](classrclcpp_1_1Node.html#a7be04e55e2934e05df992b188d9dce6d "Get the namespace of the node.")
     [ get_sub_namespace() ](classrclcpp_1_1Node.html#aa9ac5055f3f7a3537642482bd505d4bd "Return the sub-namespace, if this is a sub-node, otherwise an empty string.")
std::string ](http://en.cppreference.com/w/cpp/string/basic_string.html) > > |
[ get_service_names_and_types_by_node
](classrclcpp_1_1Node.html#aa3df8a7d8b174f8049dfd2766f4b2eb9) (const [
std::string ](http://en.cppreference.com/w/cpp/string/basic_string.html)
&node_name, const [ std::string
](http://en.cppreference.com/w/cpp/string/basic_string.html) &namespace_)
const  
|  Return the number of publishers that are advertised on a given topic. [
More... ](classrclcpp_1_1Node.html#aa3df8a7d8b174f8049dfd2766f4b2eb9)  
  
size_t  |  [ count_publishers
](classrclcpp_1_1Node.html#a8792429fa0ee5c5d7f9eca537cf4cff0) (const [
std::string ](http://en.cppreference.com/w/cpp/string/basic_string.html)
&topic_name) const  
size_t  |  [ count_subscribers
](classrclcpp_1_1Node.html#a7aa2ed22450d2f3300ea5b879acd73b8) (const [
std::string ](http://en.cppreference.com/w/cpp/string/basic_string.html)
&topic_name) const  
|  Return the number of subscribers who have created a subscription for a
given topic. [ More...
](classrclcpp_1_1Node.html#a7aa2ed22450d2f3300ea5b879acd73b8)  
  
[ std::vector ](http://en.cppreference.com/w/cpp/container/vector.html) < [
rclcpp::TopicEndpointInfo ](classrclcpp_1_1TopicEndpointInfo.html) > |  [
get_publishers_info_by_topic
](classrclcpp_1_1Node.html#a08220daf1d66596012e858d19efd1212) (const [
std::string ](http://en.cppreference.com/w/cpp/string/basic_string.html)
&topic_name, bool no_mangle=false) const  
|  Return the topic endpoint information about publishers on a given topic. [
More... ](classrclcpp_1_1Node.html#a08220daf1d66596012e858d19efd1212)  
  
[ std::vector ](http://en.cppreference.com/w/cpp/container/vector.html) < [
rclcpp::TopicEndpointInfo ](classrclcpp_1_1TopicEndpointInfo.html) > |  [
get_subscriptions_info_by_topic
](classrclcpp_1_1Node.html#afba993c401901433b3c8647ef716c7e4) (const [
std::string ](http://en.cppreference.com/w/cpp/string/basic_string.html)
&topic_name, bool no_mangle=false) const  
|  Return the topic endpoint information about subscriptions on a given topic.
[ More... ](classrclcpp_1_1Node.html#afba993c401901433b3c8647ef716c7e4)
const [ rmw_qos_profile_t
](http://docs.ros2.org/foxy/api/rmw/structrmw__qos__profile__t.html)
&qos_profile=rmw_qos_profile_services_default,
rclcpp::CallbackGroup::SharedPtr group=nullptr)  
|  Create and return a [ Client ](classrclcpp_1_1Client.html) . [ More...
](classrclcpp_1_1Node.html#aed42f345ae1de3a1979d5a8076127199)  
  
template<typename ServiceT , typename CallbackT >  
[ rclcpp::Service ](classrclcpp_1_1Service.html) < ServiceT >::SharedPtr  |  [
create_service ](classrclcpp_1_1Node.html#a20d1f389ba5e4a57559203d5d9e77ec9)
(const [ std::string
](http://en.cppreference.com/w/cpp/string/basic_string.html) &service_name,
CallbackT &&callback, const [ rmw_qos_profile_t
](http://docs.ros2.org/foxy/api/rmw/structrmw__qos__profile__t.html)
&qos_profile=rmw_qos_profile_services_default,
rclcpp::CallbackGroup::SharedPtr group=nullptr)  
|  Create and return a [ Service ](classrclcpp_1_1Service.html) . [ More...
](classrclcpp_1_1Node.html#a20d1f389ba5e4a57559203d5d9e77ec9)  
  
const [ rclcpp::ParameterValue ](classrclcpp_1_1ParameterValue.html) & |  [
declare_parameter
](classrclcpp_1_1Node.html#a095ea977b26e7464d9371efea5f36c42) (const [
std::string ](http://en.cppreference.com/w/cpp/string/basic_string.html)
&name, const [ rclcpp::ParameterValue ](classrclcpp_1_1ParameterValue.html)
&default_value= [ rclcpp::ParameterValue ](classrclcpp_1_1ParameterValue.html)
(), const rcl_interfaces::msg::ParameterDescriptor
&parameter_descriptor=rcl_interfaces::msg::ParameterDescriptor(), bool
ignore_override=false)  
|  Declare and initialize a parameter, return the effective value. [ More...
](classrclcpp_1_1Node.html#a095ea977b26e7464d9371efea5f36c42)  
  
template<typename ParameterT >  
auto  |  [ declare_parameter
](classrclcpp_1_1Node.html#a5b1ca8c48e28bd1f3e5fda2ab3116efd) (const [
std::string ](http://en.cppreference.com/w/cpp/string/basic_string.html)
&name, const ParameterT &default_value, const
rcl_interfaces::msg::ParameterDescriptor
&parameter_descriptor=rcl_interfaces::msg::ParameterDescriptor(), bool
ignore_override=false)  
|  Declare and initialize a parameter with a type. [ More...
rclcpp::Event::SharedPtr  |  [ get_graph_event
](classrclcpp_1_1Node.html#a9e5851844ecb1794503b8fc0f9f5c898) ()  
|  Return a graph event, which will be set anytime a graph change occurs. [
More... ](classrclcpp_1_1Node.html#a9e5851844ecb1794503b8fc0f9f5c898)  
  
void  |  [ wait_for_graph_change
](classrclcpp_1_1Node.html#ab72e2c59951c08c515fd597bfc9e8cfd)
(rclcpp::Event::SharedPtr event, [ std::chrono::nanoseconds
](http://en.cppreference.com/w/cpp/chrono/duration.html) timeout)  
|  Wait for a graph event to occur by waiting on an [ Event
](classrclcpp_1_1Event.html) to become set. [ More...
](classrclcpp_1_1Node.html#ab72e2c59951c08c515fd597bfc9e8cfd)  
  
rclcpp::Clock::SharedPtr  |  [ get_clock
](classrclcpp_1_1Node.html#aec0332887ae90caed727e5025cb62195) ()  
|  Get a clock as a non-const shared pointer which is managed by the node. [
More... ](classrclcpp_1_1Node.html#aec0332887ae90caed727e5025cb62195)  
  
rclcpp::Clock::ConstSharedPtr  |  [ get_clock
](classrclcpp_1_1Node.html#a2c725f0bb2e36943ca5c0255ad0bc0cf) () const  
|  Get a clock as a const shared pointer which is managed by the node. [
More... ](classrclcpp_1_1Node.html#a2c725f0bb2e36943ca5c0255ad0bc0cf)  
  
[ Time ](classrclcpp_1_1Time.html) |  [ now
](classrclcpp_1_1Node.html#a1db9cec1af19a994b3f1dad2059d2707) () const  
|  Returns current time from the time source specified by clock_type. [
More... ](classrclcpp_1_1Node.html#a1db9cec1af19a994b3f1dad2059d2707)  
  
rclcpp::node_interfaces::NodeBaseInterface::SharedPtr  |  [
get_node_base_interface
](classrclcpp_1_1Node.html#a37e5b136ef0a29853e01d5cecb8e4690) ()  
|  Return the [ Node ](classrclcpp_1_1Node.html "Node is the single point of
entry for creating publishers and subscribers.") 's internal NodeBaseInterface
implementation. [ More...
](classrclcpp_1_1Node.html#a37e5b136ef0a29853e01d5cecb8e4690)  
  
rclcpp::node_interfaces::NodeClockInterface::SharedPtr  |  [
get_node_clock_interface
](classrclcpp_1_1Node.html#a5495b9faae261feed33d8d8828840709) ()  
|  Return the [ Node ](classrclcpp_1_1Node.html "Node is the single point of
[ get_namespace() ](classrclcpp_1_1Node.html#a7be04e55e2934e05df992b188d9dce6d "Get the namespace of the node.")
     [ get_effective_namespace() ](classrclcpp_1_1Node.html#afe4790bba38942b795d24b6ccb3e9c5a "Return the effective namespace that is used when creating entities.")
* [ Quality guide: ensuring code quality ](../../../The-ROS2-Project/Contributing/Quality-Guide.html)
      * [ ROS Build Farms ](../../../The-ROS2-Project/Contributing/Build-Farms.html)
      * [ Windows Tips and Tricks ](../../../The-ROS2-Project/Contributing/Windows-Tips-and-Tricks.html)
      * [ Contributing to ROS 2 Documentation ](../../../The-ROS2-Project/Contributing/Contributing-To-ROS-2-Documentation.html)
    * [ Features Status ](../../../The-ROS2-Project/Features.html)
    * [ Feature Ideas ](../../../The-ROS2-Project/Feature-Ideas.html)
    * [ Roadmap ](../../../The-ROS2-Project/Roadmap.html)
    * [ ROSCon Talks ](../../../The-ROS2-Project/ROSCon-Content.html)
    * [ Project Governance ](../../../The-ROS2-Project/Governance.html)
      * [ ROS 2 Technical Steering Committee Charter ](../../../The-ROS2-Project/Governance/ROS2-TSC-Charter.html)
      * [ ROS 2 TSC applicant intake process ](../../../The-ROS2-Project/Governance/ROS2-TSC-Intake-process.html)
      * [ About Working Groups ](../../../The-ROS2-Project/Governance/Working-Groups.html)
      * [ How to Start a Community Working Group ](../../../The-ROS2-Project/Governance/How-To-Start-A-Community-Working-Group.html)
    * [ Marketing ](../../../The-ROS2-Project/Marketing.html)
    * [ Metrics ](../../../The-ROS2-Project/Metrics.html)
  * [ API Documentation ](../../../API-Docs.html)
  * [ Related Projects ](../../../Related-Projects.html)
    * [ Intel ROS 2 Projects ](../../../Related-Projects/Intel-ROS2-Projects.html)
    * [ NVIDIA ROS 2 Projects ](../../../Related-Projects/Nvidia-ROS2-Projects.html)
  * [ Glossary ](../../../Glossary.html)
  * [ Citations ](../../../Citations.html)

__ [ ROS 2 Documentation: Rolling ](../../../index.html)

  * [ ](../../../index.html)
  * [ Tutorials ](../../../Tutorials.html)
  * [ Intermediate ](../../Intermediate.html)
  * Writing an action server and client (C++) 
  * [ Edit on GitHub ](https://github.com/ros2/ros2_documentation/blob/rolling/source/Tutorials/Intermediate/Writing-an-Action-Server-Client/Cpp.rst)

* * *

**You're reading the documentation for a development version. For the latest
released version, please have a look at[ Iron
](../../../../iron/Tutorials/Intermediate/Writing-an-Action-Server-
Client/Cpp.html) . **

#  Writing an action server and client (C++)  ï

**Goal:** Implement an action server and client in C++.
Related content  ï

  * There are several ways you could write a service and client in C++; check out the ` minimal_service  ` and ` minimal_client  ` packages in the [ ros2/examples ](https://github.com/ros2/examples/tree/rolling/rclcpp/services) repo. 

[ Previous ](Writing-A-Simple-Py-Publisher-And-Subscriber.html "Writing a
simple publisher and subscriber \(Python\)") [ Next  ](Writing-A-Simple-Py-
Service-And-Client.html "Writing a simple service and client \(Python\)")

* * *

© Copyright 2024, Open Robotics.

Built with [ Sphinx ](https://www.sphinx-doc.org/) using a [ theme
](https://github.com/readthedocs/sphinx_rtd_theme) provided by [ Read the Docs
](https://readthedocs.org) .

Other Versions  v: rolling

Releases

     [ Iron (latest) ](../../../iron/Tutorials/Beginner-Client-Libraries/Writing-A-Simple-Cpp-Service-And-Client.html)
     [ Humble ](../../../humble/Tutorials/Beginner-Client-Libraries/Writing-A-Simple-Cpp-Service-And-Client.html)
     [ Galactic (EOL) ](../../../galactic/Tutorials/Beginner-Client-Libraries/Writing-A-Simple-Cpp-Service-And-Client.html)
     [ Foxy (EOL) ](../../../foxy/Tutorials/Beginner-Client-Libraries/Writing-A-Simple-Cpp-Service-And-Client.html)
     [ Eloquent (EOL) ](../../../eloquent/index.html)
     [ Dashing (EOL) ](../../../dashing/index.html)
     [ Crystal (EOL) ](../../../crystal/index.html)

In Development

     [ Rolling ](Writing-A-Simple-Cpp-Service-And-Client.html)
Related content  ï

  * There are several ways you could write an action server and client in C++; check out the ` minimal_action_server  ` and ` minimal_action_client  ` packages in the [ ros2/examples ](https://github.com/ros2/examples/tree/rolling/rclcpp) repo. 

  * For more detailed information about ROS actions, please refer to the [ design article ](http://design.ros2.org/articles/actions.html) . 

[ Previous ](../Creating-an-Action.html "Creating an action") [ Next
](Py.html "Writing an action server and client \(Python\)")

* * *

© Copyright 2024, Open Robotics.

Built with [ Sphinx ](https://www.sphinx-doc.org/) using a [ theme
](https://github.com/readthedocs/sphinx_rtd_theme) provided by [ Read the Docs
](https://readthedocs.org) .

Other Versions  v: rolling

Releases

     [ Iron (latest) ](../../../../iron/Tutorials/Intermediate/Writing-an-Action-Server-Client/Cpp.html)
     [ Humble ](../../../../humble/Tutorials/Intermediate/Writing-an-Action-Server-Client/Cpp.html)
     [ Galactic (EOL) ](../../../../galactic/Tutorials/Intermediate/Writing-an-Action-Server-Client/Cpp.html)
     [ Foxy (EOL) ](../../../../foxy/Tutorials/Intermediate/Writing-an-Action-Server-Client/Cpp.html)
     [ Eloquent (EOL) ](../../../../eloquent/index.html)
     [ Dashing (EOL) ](../../../../dashing/index.html)
     [ Crystal (EOL) ](../../../../crystal/index.html)

In Development

     [ Rolling ](Cpp.html)
* [ Using Callback Groups ](../../How-To-Guides/Using-callback-groups.html)
    * [ IDEs and Debugging [community-contributed] ](../../How-To-Guides/ROS-2-IDEs.html)
    * [ Setup ROS 2 with VSCode and Docker [community-contributed] ](../../How-To-Guides/Setup-ROS-2-with-VSCode-and-Docker-Container.html)
    * [ Using Custom Rosdistro Version ](../../How-To-Guides/Using-Custom-Rosdistro.html)
    * [ Building RQt from source ](../../How-To-Guides/RQt-Source-Install.html)
      * [ Building RQt from source on macOS ](../../How-To-Guides/RQt-Source-Install-MacOS.html)
      * [ Building RQt from source on Windows 10 ](../../How-To-Guides/RQt-Source-Install-Windows10.html)
  * [ Concepts ](../../Concepts.html)
    * [ Basic Concepts ](../../Concepts/Basic.html)
      * [ Nodes ](../../Concepts/Basic/About-Nodes.html)
      * [ Discovery ](../../Concepts/Basic/About-Discovery.html)
      * [ Interfaces ](../../Concepts/Basic/About-Interfaces.html)
      * [ Topics ](../../Concepts/Basic/About-Topics.html)
      * [ Services ](../../Concepts/Basic/About-Services.html)
      * [ Actions ](../../Concepts/Basic/About-Actions.html)
      * [ Parameters ](../../Concepts/Basic/About-Parameters.html)
      * [ Introspection with command line tools ](../../Concepts/Basic/About-Command-Line-Tools.html)
      * [ Launch ](../../Concepts/Basic/About-Launch.html)
      * [ Client libraries ](../../Concepts/Basic/About-Client-Libraries.html)
    * [ Intermediate Concepts ](../../Concepts/Intermediate.html)
      * [ The ROS_DOMAIN_ID ](../../Concepts/Intermediate/About-Domain-ID.html)
      * [ Different ROS 2 middleware vendors ](../../Concepts/Intermediate/About-Different-Middleware-Vendors.html)
      * [ Logging and logger configuration ](../../Concepts/Intermediate/About-Logging.html)
      * [ Quality of Service settings ](../../Concepts/Intermediate/About-Quality-of-Service-Settings.html)
      * [ Executors ](../../Concepts/Intermediate/About-Executors.html)
      * [ Topic statistics ](../../Concepts/Intermediate/About-Topic-Statistics.html)
      * [ Overview and usage of RQt ](../../Concepts/Intermediate/About-RQt.html)
      * [ Composition ](../../Concepts/Intermediate/About-Composition.html)
      * [ Cross-compilation ](../../Concepts/Intermediate/About-Cross-Compilation.html)
      * [ ROS 2 Security ](../../Concepts/Intermediate/About-Security.html)
      * [ Tf2 ](../../Concepts/Intermediate/About-Tf2.html)
    * [ Advanced Concepts ](../../Concepts/Advanced.html)
      * [ The build system ](../../Concepts/Advanced/About-Build-System.html)
      * [ Internal ROS 2 interfaces ](../../Concepts/Advanced/About-Internal-Interfaces.html)
      * [ ROS 2 middleware implementations ](../../Concepts/Advanced/About-Middleware-Implementations.html)
  * [ Contact ](../../Contact.html)
  * [ The ROS 2 Project ](../../The-ROS2-Project.html)
    * [ Contributing ](../../The-ROS2-Project/Contributing.html)
      * [ ROS 2 developer guide ](../../The-ROS2-Project/Contributing/Developer-Guide.html)
      * [ Code style and language versions ](../../The-ROS2-Project/Contributing/Code-Style-Language-Versions.html)
](classrclcpp_1_1Node.html#a5b1ca8c48e28bd1f3e5fda2ab3116efd)  
  
template<typename ParameterT >  
[ std::vector ](http://en.cppreference.com/w/cpp/container/vector.html) <
ParameterT > |  [ declare_parameters
](classrclcpp_1_1Node.html#a5ebda51ed6fa4ce8f2cddc9f77e9674e) (const [
std::string ](http://en.cppreference.com/w/cpp/string/basic_string.html)
&namespace_, const [ std::map
](http://en.cppreference.com/w/cpp/container/map.html) < [ std::string
](http://en.cppreference.com/w/cpp/string/basic_string.html) , ParameterT >
&parameters, bool ignore_overrides=false)  
|  Declare and initialize several parameters with the same namespace and type.
[ More... ](classrclcpp_1_1Node.html#a5ebda51ed6fa4ce8f2cddc9f77e9674e)  
  
template<typename ParameterT >  
[ std::vector ](http://en.cppreference.com/w/cpp/container/vector.html) <
ParameterT > |  [ declare_parameters
](classrclcpp_1_1Node.html#a9b3300ad15cdf9e22ee7bfc844b9a30c) (const [
std::string ](http://en.cppreference.com/w/cpp/string/basic_string.html)
&namespace_, const [ std::map
](http://en.cppreference.com/w/cpp/container/map.html) < [ std::string
](http://en.cppreference.com/w/cpp/string/basic_string.html) , [ std::pair
](http://en.cppreference.com/w/cpp/utility/pair.html) < ParameterT,
rcl_interfaces::msg::ParameterDescriptor > > &parameters, bool
ignore_overrides=false)  
|  Declare and initialize several parameters with the same namespace and type.
[ More... ](classrclcpp_1_1Node.html#a9b3300ad15cdf9e22ee7bfc844b9a30c)  
  
void  |  [ undeclare_parameter
](classrclcpp_1_1Node.html#a2c525bd10070bd025bd570e98afd0d7d) (const [
std::string ](http://en.cppreference.com/w/cpp/string/basic_string.html)
&name)  
|  Undeclare a previously declared parameter. [ More...
](classrclcpp_1_1Node.html#a2c525bd10070bd025bd570e98afd0d7d)  
  
bool  |  [ has_parameter
](classrclcpp_1_1Node.html#aabb818bb5c848c5a980ddbe745517b7c) (const [
std::string ](http://en.cppreference.com/w/cpp/string/basic_string.html)
&name) const  
|  Return true if a given parameter is declared. [ More...
More... ](classrclcpp_1_1Node.html#a15d4f7fa0ef760941b6a78f42cccb7e0)  
  
[ OnParametersSetCallbackType
](classrclcpp_1_1Node.html#ab403fecdb5ec2eb9f88e3eb7ae6f6d0c) |  [
set_on_parameters_set_callback
](classrclcpp_1_1Node.html#a9f742edc00998b24d0a52f537bc95ad8) ( [
rclcpp::Node::OnParametersSetCallbackType
](classrclcpp_1_1Node.html#ab403fecdb5ec2eb9f88e3eb7ae6f6d0c) callback)  
|  Register a callback to be called anytime a parameter is about to be
changed. [ More...
](classrclcpp_1_1Node.html#a9f742edc00998b24d0a52f537bc95ad8)  
  
[ std::vector ](http://en.cppreference.com/w/cpp/container/vector.html) < [
std::string ](http://en.cppreference.com/w/cpp/string/basic_string.html) > |
[ get_node_names ](classrclcpp_1_1Node.html#a9e4302d8e28f17078cbc3b6db93c97ba)
() const  
|  Get the fully-qualified names of all available nodes. [ More...
](classrclcpp_1_1Node.html#a9e4302d8e28f17078cbc3b6db93c97ba)  
  
[ std::map ](http://en.cppreference.com/w/cpp/container/map.html) < [
std::string ](http://en.cppreference.com/w/cpp/string/basic_string.html) , [
std::vector ](http://en.cppreference.com/w/cpp/container/vector.html) < [
std::string ](http://en.cppreference.com/w/cpp/string/basic_string.html) > > |
[ get_topic_names_and_types
](classrclcpp_1_1Node.html#ab64ee81d61071100f222b819eab3e311) () const  
|  Return a map of existing topic names to list of topic types. [ More...
](classrclcpp_1_1Node.html#ab64ee81d61071100f222b819eab3e311)  
  
[ std::map ](http://en.cppreference.com/w/cpp/container/map.html) < [
std::string ](http://en.cppreference.com/w/cpp/string/basic_string.html) , [
std::vector ](http://en.cppreference.com/w/cpp/container/vector.html) < [
std::string ](http://en.cppreference.com/w/cpp/string/basic_string.html) > > |
[ get_service_names_and_types
](classrclcpp_1_1Node.html#a0d400bbd606a936a556b747f519eab38) () const  
|  Return a map of existing service names to list of service types. [ More...
](classrclcpp_1_1Node.html#a0d400bbd606a936a556b747f519eab38)  
  
[ std::map ](http://en.cppreference.com/w/cpp/container/map.html) < [
std::string ](http://en.cppreference.com/w/cpp/string/basic_string.html) , [
std::vector ](http://en.cppreference.com/w/cpp/container/vector.html) < [
](visibility__control_8hpp.html#a736fe60d4de4417a213ed34ba1926048) bool  |  [
is_ready
](classrclcpp__action_1_1ServerBase.html#a9942d7427e25cf5128e4ee26b19b5d7c) (
[ rcl_wait_set_t
](http://docs.ros2.org/foxy/api/rcl/structrcl__wait__set__t.html) *) override  
[ RCLCPP_ACTION_PUBLIC
](visibility__control_8hpp.html#a736fe60d4de4417a213ed34ba1926048) void  |  [
execute
](classrclcpp__action_1_1ServerBase.html#aa7d963efcf8243566de9fd07755556e6) ()
override  
![-](closed.png) Public Member Functions inherited from [ rclcpp::Waitable
](http://docs.ros2.org/foxy/api/rclcpp/classrclcpp_1_1Waitable.html)  
virtual  |  [ ~Waitable
](http://docs.ros2.org/foxy/api/rclcpp/classrclcpp_1_1Waitable.html#a775475ffdec36b88279a0d671739cce2)
()=default  
virtual size_t  |  [ get_number_of_ready_events
](http://docs.ros2.org/foxy/api/rclcpp/classrclcpp_1_1Waitable.html#a441c473cb21623371b8ae0bc4d4ff7ce)
()  
bool  |  [ exchange_in_use_by_wait_set_state
](http://docs.ros2.org/foxy/api/rclcpp/classrclcpp_1_1Waitable.html#aa73eeb074bfbbd858d5c559d6b185ff8)
(bool in_use_state)  
  
##  Protected Member Functions  
  
---  
[ RCLCPP_ACTION_PUBLIC
](visibility__control_8hpp.html#a736fe60d4de4417a213ed34ba1926048) |  [
ServerBase
](classrclcpp__action_1_1ServerBase.html#aee6f41e4969d74b82718a866e8d0fd96)
(rclcpp::node_interfaces::NodeBaseInterface::SharedPtr node_base,
rclcpp::node_interfaces::NodeClockInterface::SharedPtr node_clock,
rclcpp::node_interfaces::NodeLoggingInterface::SharedPtr node_logging, const [
std::string ](http://en.cppreference.com/w/cpp/string/basic_string.html)
&name, const rosidl_action_type_support_t *type_support, const [
rcl_action_server_options_t
](http://docs.ros2.org/foxy/api/rcl_action/structrcl__action__server__options__t.html)
&options)  
virtual [ RCLCPP_ACTION_PUBLIC
](visibility__control_8hpp.html#a736fe60d4de4417a213ed34ba1926048) [ std::pair
](http://en.cppreference.com/w/cpp/utility/pair.html) < [ GoalResponse