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 , connection_id_(0)
00055 , publisher_xmlrpc_uri_(xmlrpc_uri)
00056 , transport_hints_(transport_hints)
00057 , latched_(false)
00058 { }
00059 
00060 PublisherLink::~PublisherLink()
00061 { }
00062 
00063 bool PublisherLink::setHeader(const Header& header)
00064 {
00065   header.getValue("callerid", caller_id_);
00066 
00067   std::string md5sum, type, latched_str;
00068   if (!header.getValue("md5sum", md5sum))
00069   {
00070     ROS_ERROR("Publisher header did not have required element: md5sum");
00071     return false;
00072   }
00073 
00074   md5sum_ = md5sum;
00075 
00076   if (!header.getValue("type", type))
00077   {
00078     ROS_ERROR("Publisher header did not have required element: type");
00079     return false;
00080   }
00081 
00082   latched_ = false;
00083   if (header.getValue("latching", latched_str))
00084   {
00085     if (latched_str == "1")
00086     {
00087       latched_ = true;
00088     }
00089   }
00090 
00091   connection_id_ = ConnectionManager::instance()->getNewConnectionID();
00092   header_ = header;
00093 
00094   if (SubscriptionPtr parent = parent_.lock())
00095   {
00096     parent->headerReceived(shared_from_this(), header);
00097   }
00098 
00099   return true;
00100 }
00101 
00102 const std::string& PublisherLink::getPublisherXMLRPCURI()
00103 {
00104   return publisher_xmlrpc_uri_;
00105 }
00106 
00107 const std::string& PublisherLink::getMD5Sum()
00108 {
00109   ROS_ASSERT(!md5sum_.empty());
00110   return md5sum_;
00111 }
00112 
00113 } 
00114 
 
roscpp
Author(s): Morgan Quigley, Josh Faust, Brian Gerkey, Troy Straszheim
autogenerated on Tue Mar 7 2017 03:44:47