#pragma once #include #include #include #include template class DataReaderListenerImpl : public eprosima::fastdds::dds::DataReaderListener { public: DataReaderListenerImpl(std::function 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 callback_; };