/** * @RDE_HEADER@ * DTC TypeDefinitions * $Id$ * $HeadURL$ * $Author$ */ #pragma once #include #include #include #ifdef BUILD_RTI // Use actual RTI Connext DDS types #include #include // DataModification enum is provided by LtsUtilsCore/data_modification_enum.h (included above) #else // Stub für BUILD_RTI=OFF - keine RTI Connext DDS Verfügbarkeit // Diese Header ermöglicht Kompilierung ohne RTI DDS Dependencies // DataModification enum is still provided by LtsUtilsCore/data_modification_enum.h // Forward declarations für DDS-Typen (Stubs) namespace dds { namespace sub { template struct LoanedSamples { // Minimaler Stub - keine Implementierung für BUILD_RTI=OFF }; struct SampleInfo { // Minimaler Stub - keine Implementierung für BUILD_RTI=OFF }; } } #endif namespace NGLLogger { class INGLLogger; } namespace DTC { class SubscriberListener; // DataModification Enum is provided by LtsUtilsCore/data_modification_enum.h // Do NOT redefine here - use the one from LtsUtilsCore // uses DRO (static) 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; }; // Typed topic callback (DataReader) template class GenericDtc : public GenericDtcSC > {}; // Typed topic callback (DataReader) with SampleInfo template class GenericDtcSampleInfo : public GenericDtcSC > {}; // Dynamic topic callback (DynamicDataReader) template class Ddtc : public GenericDtcSC > {}; // Dynamic topic callback (DynamicDataReader) with SampleInfo template class DdtcSampleInfo : public GenericDtcSC > {}; }