00001 #ifndef IMAGE_TRANSPORT_RAW_PUBLISHER_H 00002 #define IMAGE_TRANSPORT_RAW_PUBLISHER_H 00003 00004 #include "image_transport/simple_publisher_plugin.h" 00005 00006 namespace image_transport { 00007 00014 class RawPublisher : public SimplePublisherPlugin<sensor_msgs::Image> 00015 { 00016 public: 00017 virtual ~RawPublisher() {} 00018 00019 virtual std::string getTransportName() const 00020 { 00021 return "raw"; 00022 } 00023 00024 // Override the default implementation because publishing the message pointer allows 00025 // the no-copy intraprocess optimization. 00026 virtual void publish(const sensor_msgs::ImageConstPtr& message) const 00027 { 00028 getPublisher().publish(message); 00029 } 00030 00031 protected: 00032 virtual void publish(const sensor_msgs::Image& message, const PublishFn& publish_fn) const 00033 { 00034 publish_fn(message); 00035 } 00036 00037 virtual std::string getTopicToAdvertise(const std::string& base_topic) const 00038 { 00039 return base_topic; 00040 } 00041 }; 00042 00043 } //namespace image_transport 00044 00045 #endif