XNSim/XNRunner/DataReaderListenerImpl.h
2025-04-28 12:25:20 +08:00

27 lines
789 B
C++
Executable File

#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_;
};