29 #ifndef SWRI_ROSCPP_TOPIC_SERVICE_SERVER_H_    30 #define SWRI_ROSCPP_TOPIC_SERVICE_SERVER_H_    45 template<
class MReq, 
class MRes, 
class T>
    51   bool(T::*callback_)(
const MReq &, MRes &);
    56               const std::string &service,
    57               bool(T::*srv_func)(
const MReq &, MRes &),
    67     response_pub_ = nh.
advertise<MRes>(rservice + 
"/response", 10);
    75     ROS_DEBUG(
"Got request from %s with sequence %i", message.srv_header.sender.c_str(), message.srv_header.sequence);
    79     bool result = (obj_->*callback_)(message, response);
    80     response.srv_header.result = result;
    81     response.srv_header.sequence = message.srv_header.sequence;
    82     response.srv_header.sender = message.srv_header.sender;
    83     response_pub_.
publish(response);
    96   template<
class MReq, 
class MRes, 
class T>
    98                 const std::string &service,
    99                 bool(T::*srv_func)(
const MReq &, MRes &),
   109 template<
class MReq, 
class MRes, 
class T>
   112                           const std::string &service,
   113                           bool(T::*srv_func)(
const MReq &, MRes &),
   122 #endif  // SWRI_ROSCPP_TOPIC_SERVICE_SERVER_H_ 
void publish(const boost::shared_ptr< M > &message) const 
ros::Publisher response_pub_
Subscriber subscribe(const std::string &topic, uint32_t queue_size, void(T::*fp)(M), T *obj, const TransportHints &transport_hints=TransportHints())
ROSCONSOLE_DECL void initialize()
std::string resolveName(const std::string &name, bool remap=true) const 
void initialize(ros::NodeHandle &nh, const std::string &service, bool(T::*srv_func)(const MReq &, MRes &), T *obj)
ros::Subscriber request_sub_
Publisher advertise(const std::string &topic, uint32_t queue_size, bool latch=false)
void request_callback(const MReq &message)
boost::shared_ptr< ImplRoot > impl_
void initialize(ros::NodeHandle &nh, const std::string &service, bool(T::*srv_func)(const MReq &, MRes &), T *obj)