17#ifndef STAUBLI_ROBOT_DRIVER__REAL_TIME_SOCKET_SUBSCRIBER_HPP_
18#define STAUBLI_ROBOT_DRIVER__REAL_TIME_SOCKET_SUBSCRIBER_HPP_
30#include <rclcpp/duration.hpp>
31#include <rclcpp/logging.hpp>
32#include <rclcpp/time.hpp>
35#include <realtime_tools/realtime_thread_safe_box.hpp>
62template <
typename MessageType>
118 realtime_tools::RealtimeThreadSafeBox<MessageType> message_buffer_;
Bilateral real-time socket interface for pub/sub communication.
Definition real_time_socket_interface.hpp:39
Real-time socket subscriber class template.
Definition real_time_socket_subscriber.hpp:63
bool init_communication()
virtual bool is_ready() const
Check if the subscriber is ready (socket connected and receiving)
std::shared_ptr< Socket > socket_
Definition real_time_socket_subscriber.hpp:111
rclcpp::Logger logger_
Definition real_time_socket_subscriber.hpp:115
void update_message(std::vector< uint8_t > &data, size_t bytes_transferred)
virtual ~RealTimeSocketSubscriber()
size_t last_read_sequence_number_
Sequence number of the last read RobotStateMessage.
Definition real_time_socket_subscriber.hpp:113
RealTimeSocketSubscriber(std::shared_ptr< Socket > socket)
void handle_error(const std::string &error_msg)
bool read_message(MessageType &msg, MessageStatus &status)
Read the latest message and check for lost packages and staleness.
Definition messages.hpp:23
MessageType
Message types for communication.
Definition types.hpp:25
Status struct to hold message status information.
Definition real_time_socket_subscriber.hpp:45
size_t lost_packages
Number of lost packages (0 if none)
Definition real_time_socket_subscriber.hpp:51
bool new_message
True if a new message was received.
Definition real_time_socket_subscriber.hpp:47
rclcpp::Duration time_since_received
Time since the message was received (see msg.reception_timestamp)
Definition real_time_socket_subscriber.hpp:49