XNSim/XNRunner/DataReaderListenerImpl.h

27 lines
789 B
C
Raw Normal View History

2025-04-28 12:25:20 +08:00
#pragma once
#include <fastdds/dds/subscriber/DataReaderListener.hpp>
#include <fastdds/dds/subscriber/DataReader.hpp>
#include <fastdds/dds/subscriber/qos/DataReaderQos.hpp>
#include <fastdds/dds/subscriber/SampleInfo.hpp>
template <typename T>
class DataReaderListenerImpl : public eprosima::fastdds::dds::DataReaderListener
{
public:
DataReaderListenerImpl(std::function<void(const T &)> callback) : callback_(callback) {}
void on_data_available(eprosima::fastdds::dds::DataReader *reader) override
{
eprosima::fastdds::dds::SampleInfo info;
if (reader->take_next_sample(&data_, &info) == eprosima::fastdds::dds::RETCODE_OK
&& info.valid_data) {
callback_(data_);
//qInfo() << "Data available";
}
}
private:
T data_;
std::function<void(const T &)> callback_;
};