21 #ifndef VORTEX_FACE_DATALISTENER_HPP_ 22 #define VORTEX_FACE_DATALISTENER_HPP_ 30 template <
typename TYPE>
31 class DataListener :
public virtual dds::sub::NoOpDataReaderListener<TYPE>
37 const std::string &cn,
38 typename ::FACE::Read_Callback<TYPE>::send_event cb) :
49 virtual void on_data_available (dds::sub::DataReader<TYPE>& reader)
53 typename dds::sub::LoanedSamples<TYPE> samples = reader.take();
54 typename dds::sub::LoanedSamples<TYPE>::const_iterator sample;
55 for (sample = samples.begin(); sample != samples.end(); ++sample) {
56 TYPE data = sample->data();
57 const dds::sub::SampleInfo& info = sample->info();
59 this->callback(transactionId++,
66 FACE_REPORT_ERROR(status,
"This was returned by the callback for '%s'<%s> (we can not handle that).", this->connectionName.c_str(), this->typeName.c_str());
70 }
catch (
const dds::core::Exception& e) {
80 std::string connectionName;
83 typename ::FACE::Read_Callback<TYPE>::send_event callback;
Vortex::FACE::smart_ptr_traits< DataListener< TYPE > >::shared_ptr shared_ptr
#define FACE_REPORT_ERROR(code,...)
DataListener(const std::string &tn, const std::string &cn, typename ::FACE::Read_Callback< TYPE >::send_event cb)
int64_t TRANSACTION_ID_TYPE
VORTEX_FACE_API ::FACE::RETURN_CODE_TYPE exceptionToReturnCode(const dds::core::Exception &e)
dds::core::array< bool, 32 > WAITSET_TYPE