Program Listing for File babel_fish_subscription.hpp
↰ Return to documentation for file (include/ros_babel_fish/detail/babel_fish_subscription.hpp
)
// Copyright (c) 2021 Stefan Fabian. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
#ifndef ROS_BABEL_FISH_BABEL_FISH_SUBSCRIPTION_HPP
#define ROS_BABEL_FISH_BABEL_FISH_SUBSCRIPTION_HPP
#include <ros_babel_fish/messages/compound_message.hpp>
#include <rclcpp/node.hpp>
#include <rclcpp/subscription.hpp>
#include <rclcpp/subscription_base.hpp>
#include <rclcpp/timer.hpp>
namespace ros_babel_fish
{
class BabelFish;
class BabelFishSubscription : public rclcpp::SubscriptionBase
{
private:
using SubscriptionTopicStatisticsSharedPtr =
std::shared_ptr<rclcpp::topic_statistics::SubscriptionTopicStatistics>;
public:
RCLCPP_SMART_PTR_DEFINITIONS( BabelFishSubscription )
BabelFishSubscription(
rclcpp::node_interfaces::NodeBaseInterface *node,
MessageTypeSupport::ConstSharedPtr type_support, const std::string &topic_name,
const rclcpp::QoS &qos,
rclcpp::AnySubscriptionCallback<CompoundMessage, std::allocator<void>> callback,
const rclcpp::SubscriptionOptionsWithAllocator<std::allocator<void>> &options,
SubscriptionTopicStatisticsSharedPtr subscription_topic_statistics = nullptr );
~BabelFishSubscription() override;
std::shared_ptr<void> create_message() override;
std::shared_ptr<rclcpp::SerializedMessage> create_serialized_message() override;
void handle_message( std::shared_ptr<void> &message,
const rclcpp::MessageInfo &message_info ) override;
void handle_serialized_message( const std::shared_ptr<rclcpp::SerializedMessage> &serialized_message,
const rclcpp::MessageInfo &message_info ) override;
void handle_loaned_message( void *loaned_message, const rclcpp::MessageInfo &message_info ) override;
void return_message( std::shared_ptr<void> &message ) override;
void return_serialized_message( std::shared_ptr<rclcpp::SerializedMessage> &message ) override;
bool take( CompoundMessage &message_out, rclcpp::MessageInfo &message_info_out );
MessageTypeSupport::ConstSharedPtr get_message_type_support() const;
std::string get_message_type() const;
rclcpp::dynamic_typesupport::DynamicMessageType::SharedPtr get_shared_dynamic_message_type() override;
rclcpp::dynamic_typesupport::DynamicMessage::SharedPtr get_shared_dynamic_message() override;
rclcpp::dynamic_typesupport::DynamicSerializationSupport::SharedPtr
get_shared_dynamic_serialization_support() override;
rclcpp::dynamic_typesupport::DynamicMessage::SharedPtr create_dynamic_message() override;
void
return_dynamic_message( rclcpp::dynamic_typesupport::DynamicMessage::SharedPtr &message ) override;
void handle_dynamic_message( const rclcpp::dynamic_typesupport::DynamicMessage::SharedPtr &message,
const rclcpp::MessageInfo &message_info ) override;
private:
RCLCPP_DISABLE_COPY( BabelFishSubscription )
MessageTypeSupport::ConstSharedPtr type_support_;
rclcpp::AnySubscriptionCallback<CompoundMessage, std::allocator<void>> callback_;
SubscriptionTopicStatisticsSharedPtr subscription_topic_statistics_{ nullptr };
};
} // namespace ros_babel_fish
#endif // ROS_BABEL_FISH_BABEL_FISH_SUBSCRIPTION_HPP