text: /* Software License Agreement (BSD License)
   *
   *  Copyright (c) 2019, iRobot ROS
   *  All rights reserved.
   *
   *  This file is part of ros2-performance, which is released under BSD-3-Clause.
   *  You may use, distribute and modify this code under the BSD-3-Clause license.
   */
  
  #ifndef PERFORMANCE_TEST__PERFORMANCE_NODE_HPP_
  #define PERFORMANCE_TEST__PERFORMANCE_NODE_HPP_
  
  #include <string>
  
  #include "rclcpp/rclcpp.hpp"
  
  #include "performance_test/performance_node_base.hpp"
  
  namespace performance_test
  {
  
  template<typename NodeT = rclcpp::Node>
  class PerformanceNode : public NodeT, public PerformanceNodeBase
  {
  public:
    PerformanceNode(
      const std::string & name,
      const std::string & ros2_namespace = "",
      const rclcpp::NodeOptions & node_options = rclcpp::NodeOptions())
    : NodeT(name, ros2_namespace, node_options), PerformanceNodeBase(get_node_interfaces())
    {}
  
    virtual ~PerformanceNode() = default;
  
  private:
    virtual NodeInterfaces get_node_interfaces()
    {
      return NodeInterfaces {
        this->get_node_base_interface(),
        this->get_node_clock_interface(),
        this->get_node_graph_interface(),
        this->get_node_logging_interface(),
        this->get_node_parameters_interface(),
        this->get_node_services_interface(),
        this->get_node_timers_interface(),
        this->get_node_topics_interface()
      };
    }
  };
  
  }  // namespace performance_test
  
  #endif  // PERFORMANCE_TEST__PERFORMANCE_NODE_HPP_
  