string_pub_sub.cpp
Go to the documentation of this file.
1 //
2 // Created by nakakura on 22/08/29.
3 //
5 #include <ros/ros.h>
6 #include <skyway/skyway_plugin.h>
8 
10  ROS_INFO("string_pub_sub plugin loaded");
11 }
12 
14  loop_thread_.join();
15  ROS_INFO("camera plugin unloaded");
16 }
17 
19  std::shared_ptr<rapidjson::Document> parameter,
20  std::shared_ptr<std::function<void(std::string)>> callback) {
21  callback_ = callback;
22 
23  is_running_ = true;
24  loop_thread_ =
26 }
27 
28 void string_pub_sub::StringPubSub::Execute(std::string data) {
29  std::unique_lock<std::mutex> lock(mutex_);
30  parameters_.push_back(data);
31 }
32 
33 void string_pub_sub::StringPubSub::Shutdown() { is_running_ = false; }
34 
36  ros::Rate loop_rate(10);
37  bool is_received = false;
38 
39  while (is_running_) {
40  std::string message;
41  is_received = false;
42 
43  {
44  std::unique_lock<std::mutex> lock(mutex_);
45 
46  if (parameters_.size() != 0) {
47  message = parameters_.front();
48  parameters_.pop_front();
49  is_received = true;
50  }
51  }
52 
53  if (is_received) {
54  std_msgs::String msg;
55  msg.data = message;
56  pub_.publish(msg);
57  } else {
58  // 受信していなければ100ms待機
59  loop_rate.sleep();
60  }
61  }
62 }
63 
65  const std_msgs::String::ConstPtr& msg) {
66  (*callback_)(msg->data);
67 }
string_pub_sub::StringPubSub::~StringPubSub
~StringPubSub()
Definition: string_pub_sub.cpp:13
ros.h
string_pub_sub::StringPubSub::Execute
virtual void Execute(std::string data) override
Definition: string_pub_sub.cpp:28
string_pub_sub::StringPubSub::StringPubSub
StringPubSub()
Definition: string_pub_sub.cpp:9
class_list_macros.h
skyway_plugin.h
ros::Rate::sleep
bool sleep()
string_pub_sub::StringPubSub::Initialize
virtual void Initialize(std::shared_ptr< rapidjson::Document > parameter, std::shared_ptr< std::function< void(std::string)>> callback) override
Definition: string_pub_sub.cpp:18
string_pub_sub::StringPubSub::Shutdown
virtual void Shutdown() override
Definition: string_pub_sub.cpp:33
string_pub_sub::StringPubSub::subscribe
void subscribe(const std_msgs::String::ConstPtr &msg)
Definition: string_pub_sub.cpp:64
ros::Rate
string_pub_sub::StringPubSub::service_thread
void service_thread()
Definition: string_pub_sub.cpp:35
ROS_INFO
#define ROS_INFO(...)
string_pub_sub.h


skyway
Author(s): Toshiya Nakakura
autogenerated on Thu Oct 26 2023 02:42:21