67 lines
1.7 KiB
C++
Executable File
67 lines
1.7 KiB
C++
Executable File
|
|
|
|
|
|
#pragma once
|
|
#include <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 &)> >
|
|
{};
|
|
}
|