Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035 #include "ros/publisher_link.h"
00036 #include "ros/subscription.h"
00037 #include "ros/header.h"
00038 #include "ros/connection.h"
00039 #include "ros/transport/transport.h"
00040 #include "ros/this_node.h"
00041 #include "ros/connection_manager.h"
00042 #include "ros/file_log.h"
00043
00044 #include <boost/bind.hpp>
00045
00046 #include <sstream>
00047
00048 namespace ros
00049 {
00050
00051 PublisherLink::PublisherLink(const SubscriptionPtr& parent, const std::string& xmlrpc_uri,
00052 const TransportHints& transport_hints)
00053 : parent_(parent)
00054 , publisher_xmlrpc_uri_(xmlrpc_uri)
00055 , transport_hints_(transport_hints)
00056 , latched_(false)
00057 { }
00058
00059 PublisherLink::~PublisherLink()
00060 { }
00061
00062 bool PublisherLink::setHeader(const Header& header)
00063 {
00064 header.getValue("callerid", caller_id_);
00065
00066 std::string md5sum, type, latched_str;
00067 if (!header.getValue("md5sum", md5sum))
00068 {
00069 ROS_ERROR("Publisher header did not have required element: md5sum");
00070 return false;
00071 }
00072
00073 md5sum_ = md5sum;
00074
00075 if (!header.getValue("type", type))
00076 {
00077 ROS_ERROR("Publisher header did not have required element: type");
00078 return false;
00079 }
00080
00081 latched_ = false;
00082 if (header.getValue("latching", latched_str))
00083 {
00084 if (latched_str == "1")
00085 {
00086 latched_ = true;
00087 }
00088 }
00089
00090 connection_id_ = ConnectionManager::instance()->getNewConnectionID();
00091 header_ = header;
00092
00093 if (SubscriptionPtr parent = parent_.lock())
00094 {
00095 parent->headerReceived(shared_from_this(), header);
00096 }
00097
00098 return true;
00099 }
00100
00101 const std::string& PublisherLink::getPublisherXMLRPCURI()
00102 {
00103 return publisher_xmlrpc_uri_;
00104 }
00105
00106 const std::string& PublisherLink::getMD5Sum()
00107 {
00108 ROS_ASSERT(!md5sum_.empty());
00109 return md5sum_;
00110 }
00111
00112 }
00113
roscpp
Author(s): Morgan Quigley mquigley@cs.stanford.edu, Josh Faust jfaust@willowgarage.com, Brian Gerkey gerkey@willowgarage.com, Troy Straszheim straszheim@willowgarage.com
autogenerated on Sat Dec 28 2013 17:35:52