Skip to content
Snippets Groups Projects
Select Git revision
  • d60fe2c59368a15e55d1e0583fdcd9ecd1518956
  • noetic/main default
2 results

nng_sender.cpp

Blame
  • nng_sender.cpp 956 B
    //
    // Created by Johannes Mey on 26.05.20.
    //
    
    #include "ros/ros.h"
    #include "std_msgs/String.h"
    
    #include <nng/nng.h>
    #include <nng/protocol/pubsub0/pub.h>
    
    std::string url = "tcp://localhost:6576";
    
    nng_socket sock;
    int rv;
    
    void nngCallback(const std_msgs::String::ConstPtr &msg) {
      ROS_INFO("sending via NNG: [%s]", msg->data.c_str());
      if ((rv = nng_send(sock, (void *) msg->data.c_str(), msg->data.length(), 0)) != 0) {
        ROS_ERROR_STREAM("nng_send returned: " << nng_strerror(rv));
      }
    }
    
    int main(int argc, char **argv) {
      ros::init(argc, argv, "nng_sender");
    
      ros::NodeHandle n("nnc_test");
    
      if ((rv = nng_pub0_open(&sock)) != 0) {
        ROS_ERROR_STREAM("nng_pub0_open returned: " << nng_strerror(rv));
      }
      if ((rv = nng_listen(sock, url.c_str(), nullptr, 0)) < 0) {
        ROS_ERROR_STREAM("nng_listen returned: " << nng_strerror(rv));
      }
    
      ros::Subscriber sub = n.subscribe("send_nng", 1000, nngCallback);
    
      ros::spin();
    
      return 0;
    }