text: // Copyright 2016 Open Source Robotics Foundation, Inc.
  //
  // Licensed under the Apache License, Version 2.0 (the "License");
  // you may not use this file except in compliance with the License.
  // You may obtain a copy of the License at
  //
  //     http://www.apache.org/licenses/LICENSE-2.0
  //
  // Unless required by applicable law or agreed to in writing, software
  // distributed under the License is distributed on an "AS IS" BASIS,
  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  // See the License for the specific language governing permissions and
  // limitations under the License.
  
  
  #include "publisher.h"
  
  using namespace std::chrono_literals;
  
  /* This example creates a subclass of Node and uses std::bind() to register a
   * member function as a callback from the timer. */
  
  MinimalPublisher::MinimalPublisher()
  : Node("minimal_publisher2"), count_(0)
  {
    publisher_ = this->create_publisher<std_msgs::msg::String>("topic2", 10);
    timer_ = this->create_wall_timer(500ms, std::bind(&MinimalPublisher::timer_callback, this));
  }
  
  void MinimalPublisher::timer_callback(void)
  {
    auto message = std_msgs::msg::String();
    message.data = "Messaging messaging " + std::to_string(count_++);
    RCLCPP_INFO(this->get_logger(), "Publisher 2: Publishing message: '%s'", message.data.c_str());
    publisher_->publish(message);
  }
  
  
  int main(int argc, char * argv[])
  {
    rclcpp::init(argc, argv);
    rclcpp::spin(std::make_shared<MinimalPublisher>());
    rclcpp::shutdown();
    return 0;
  }
  