topic_proxy.cpp
Go to the documentation of this file.
2 
3 #include <ros/serialization.h>
5 #include <ros/service_manager.h>
6 #include <ros/poll_manager.h>
9 #include <ros/node_handle.h>
10 #include <ros/service.h>
11 
12 using namespace ros;
13 
14 namespace topic_proxy
15 {
16  const std::string g_get_message_service = "/get_message";
17  const std::string g_publish_message_service = "/publish_message";
18  const uint32_t g_default_port = 11322;
19 
20  TopicProxy::TopicProxy()
21  {
22  }
23 
24  TopicProxy::TopicProxy(const std::string& host, uint32_t port)
25  : host_(host)
26  , port_(port)
27  {
28  if (port_ == 0) port_ = g_default_port;
29  }
30 
32  {
33  return get_message_.init<GetMessage>(g_get_message_service, host_, port_)
34  && publish_message_.init<PublishMessage>(g_publish_message_service, host_, port_);
35  }
36 
38  {
41  }
42 
44  {
45  }
46 
47  MessageInstanceConstPtr TopicProxy::send(GetMessage::Request& request)
48  {
49  if (!get_message_.isValid() && !get_message_.init<GetMessage>(g_get_message_service, host_, port_)) {
50  return MessageInstanceConstPtr();
51  }
52 
53  GetMessage::Response response;
54  if (!get_message_.call(request, response)) {
55  return MessageInstanceConstPtr();
56  }
57 
58  MessageInstanceConstPtr message;
59  try {
60  message.reset(new MessageInstance(response.message));
61  } catch(Exception& e) {
62  ROS_ERROR("Catched exception while handling a request for topic %s: %s", request.topic.c_str(), e.what());
63  }
64 
65  return message;
66  }
67 
68  bool TopicProxy::send(PublishMessage::Request& request)
69  {
71  return false;
72  }
73 
74  PublishMessage::Response response;
75  if (!publish_message_.call(request, response)) {
76  return false;
77  }
78 
79  return true;
80  }
81 
82 } // namespace topic_proxy
ServiceClient get_message_
Definition: topic_proxy.h:65
bool call(MReq &req, MRes &res)
const uint32_t g_default_port
Definition: topic_proxy.cpp:18
const std::string g_get_message_service
Definition: topic_proxy.cpp:16
const std::string g_publish_message_service
Definition: topic_proxy.cpp:17
bool isValid() const
MessageInstanceConstPtr send(GetMessage::Request &)
Definition: topic_proxy.cpp:47
ServiceClient publish_message_
Definition: topic_proxy.h:68
#define ROS_ERROR(...)


topic_proxy
Author(s): Johannes Meyer
autogenerated on Sat Jul 27 2019 03:35:25