diff --git a/image_transport/include/image_transport/raw_subscriber.hpp b/image_transport/include/image_transport/raw_subscriber.hpp index ea298739..799b5118 100644 --- a/image_transport/include/image_transport/raw_subscriber.hpp +++ b/image_transport/include/image_transport/raw_subscriber.hpp @@ -53,21 +53,32 @@ class RawSubscriber : public SimpleSubscriberPlugin public: virtual ~RawSubscriber() {} - virtual std::string getTransportName() const + std::string getTransportName() const override { return "raw"; } protected: - virtual void internalCallback(const std::shared_ptr& message, const Callback& user_cb) + void internalCallback( + const std::shared_ptr& message, const Callback& user_cb) override { user_cb(message); } - virtual std::string getTopicToSubscribe(const std::string& base_topic) const + std::string getTopicToSubscribe(const std::string& base_topic) const override { return base_topic; } + + void subscribeImpl( + rclcpp::Node * node, + const std::string & base_topic, + const Callback & callback, + rmw_qos_profile_t custom_qos, + rclcpp::SubscriptionOptions options) override + { + this->subscribeImplWithOptions(node, base_topic, callback, custom_qos, options); + } }; } // namespace image_transport diff --git a/image_transport/include/image_transport/simple_subscriber_plugin.hpp b/image_transport/include/image_transport/simple_subscriber_plugin.hpp index 39ba76b5..e252f2f4 100644 --- a/image_transport/include/image_transport/simple_subscriber_plugin.hpp +++ b/image_transport/include/image_transport/simple_subscriber_plugin.hpp @@ -112,21 +112,29 @@ class SimpleSubscriberPlugin : public SubscriberPlugin return base_topic + "/" + getTransportName(); } - virtual void subscribeImpl( + void subscribeImpl( rclcpp::Node * node, const std::string & base_topic, const Callback & callback, rmw_qos_profile_t custom_qos) override { - this->subscribeImpl(node, base_topic, callback, custom_qos, rclcpp::SubscriptionOptions()); + impl_ = std::make_unique(); + // Push each group of transport-specific parameters into a separate sub-namespace + //ros::NodeHandle param_nh(transport_hints.getParameterNH(), getTransportName()); + // + auto qos = rclcpp::QoS(rclcpp::QoSInitialization::from_rmw(custom_qos), custom_qos); + impl_->sub_ = node->create_subscription(getTopicToSubscribe(base_topic), qos, + [this, callback](const typename std::shared_ptr msg){ + internalCallback(msg, callback); + }); } - void subscribeImpl( + void subscribeImplWithOptions( rclcpp::Node * node, const std::string & base_topic, const Callback & callback, rmw_qos_profile_t custom_qos, - rclcpp::SubscriptionOptions options) override + rclcpp::SubscriptionOptions options) { impl_ = std::make_unique(); // Push each group of transport-specific parameters into a separate sub-namespace @@ -136,7 +144,8 @@ class SimpleSubscriberPlugin : public SubscriberPlugin impl_->sub_ = node->create_subscription(getTopicToSubscribe(base_topic), qos, [this, callback](const typename std::shared_ptr msg){ internalCallback(msg, callback); - }, options); + }, + options); } private: @@ -146,9 +155,6 @@ class SimpleSubscriberPlugin : public SubscriberPlugin }; std::unique_ptr impl_; - - - }; } // namespace image_transport diff --git a/image_transport/include/image_transport/subscriber_plugin.hpp b/image_transport/include/image_transport/subscriber_plugin.hpp index 65c29911..8e41fea7 100644 --- a/image_transport/include/image_transport/subscriber_plugin.hpp +++ b/image_transport/include/image_transport/subscriber_plugin.hpp @@ -164,7 +164,7 @@ class IMAGE_TRANSPORT_PUBLIC SubscriberPlugin node->get_logger(), "SubscriberPlugin::subscribeImpl with five arguments has not been overridden"); this->subscribeImpl(node, base_topic, callback, custom_qos); - } + } }; } // namespace image_transport diff --git a/image_transport/tutorial/include/image_transport_tutorial/resized_subscriber.hpp b/image_transport/tutorial/include/image_transport_tutorial/resized_subscriber.hpp index 0a5cbe3b..3e7ded74 100644 --- a/image_transport/tutorial/include/image_transport_tutorial/resized_subscriber.hpp +++ b/image_transport/tutorial/include/image_transport_tutorial/resized_subscriber.hpp @@ -11,6 +11,15 @@ class ResizedSubscriber : public image_transport::SimpleSubscriberPluginsubscribeImplWithOptions(node, base_topic, callback, custom_qos, options); + } protected: virtual void internalCallback(const typename image_transport_tutorial::ResizedImage::ConstPtr& message, const Callback& user_cb);