#pragma once #include #include namespace NGLLogger { class INGLLogger; } namespace DTC { class SubscriberListener; template class GenericDtcSC { public: using DataReaderObject = DRO_OBJECT; using SubscriberCallback = SC; using TopicType = typename DRO_OBJECT::TopicType; GenericDtcSC() = default; virtual ~GenericDtcSC() = default; virtual bool setSubscriberCallback(const SubscriberCallback& subscriberCallback) = 0; virtual dds::sub::LoanedSamples readAlive() const = 0; virtual dds::sub::LoanedSamples takeAlive() const = 0; virtual dds::sub::LoanedSamples takeDisposed() const = 0; virtual bool hasSamples() const = 0; virtual DataReaderObject* dataReader() const = 0; virtual bool waitForHistoricalData(int timeoutMSec) = 0; }; template class GenericDtc : public GenericDtcSC> { public: using BaseClass = GenericDtcSC>; using BaseClass::BaseClass; using BaseClass::DataReaderObject; using BaseClass::SubscriberCallback; using BaseClass::TopicType; using BaseClass::setSubscriberCallback; using BaseClass::readAlive; using BaseClass::takeAlive; using BaseClass::takeDisposed; using BaseClass::hasSamples; using BaseClass::dataReader; using BaseClass::waitForHistoricalData; }; template class GenericDtcSampleInfo : public GenericDtcSC> { }; template class Ddtc : public GenericDtcSC< DRO_OBJECT, std::function> { }; template class DdtcSampleInfo : public GenericDtcSC> { }; } // namespace DTC