60 lines
1.8 KiB
C++
60 lines
1.8 KiB
C++
#pragma once
|
|
#include <LtsUtils/LtsUtilsCore/data_modification_enum.h>
|
|
#include <dds/sub/LoanedSamples.hpp>
|
|
|
|
namespace NGLLogger
|
|
{
|
|
class INGLLogger;
|
|
}
|
|
|
|
namespace DTC
|
|
{
|
|
class SubscriberListener;
|
|
|
|
template <typename DRO_OBJECT, typename SC> 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<TopicType> readAlive() const = 0;
|
|
virtual dds::sub::LoanedSamples<TopicType> takeAlive() const = 0;
|
|
virtual dds::sub::LoanedSamples<TopicType> takeDisposed() const = 0;
|
|
virtual bool hasSamples() const = 0;
|
|
virtual DataReaderObject* dataReader() const = 0;
|
|
virtual bool waitForHistoricalData(int timeoutMSec) = 0;
|
|
};
|
|
|
|
template <typename DRO_OBJECT>
|
|
class GenericDtc
|
|
: public GenericDtcSC<DRO_OBJECT, std::function<void(const typename DRO_OBJECT::TopicType&, DataModification)>>
|
|
{
|
|
};
|
|
|
|
template <typename DRO_OBJECT>
|
|
class GenericDtcSampleInfo
|
|
: public GenericDtcSC<DRO_OBJECT,
|
|
std::function<void(const typename DRO_OBJECT::TopicType&, const dds::sub::SampleInfo&)>>
|
|
{
|
|
};
|
|
|
|
template <typename DRO_OBJECT>
|
|
class Ddtc
|
|
: public GenericDtcSC<
|
|
DRO_OBJECT, std::function<void(const typename DRO_OBJECT::TopicType&, const std::string&, DataModification)>>
|
|
{
|
|
};
|
|
|
|
template <typename DRO_OBJECT>
|
|
class DdtcSampleInfo
|
|
: public GenericDtcSC<DRO_OBJECT, std::function<void(const typename DRO_OBJECT::TopicType&, const std::string&,
|
|
const dds::sub::SampleInfo&)>>
|
|
{
|
|
};
|
|
} // namespace DTC
|