Fixes merge conflicts, but leaves out-of-DDS-scope build errors (tbc)
This commit is contained in:
6 files changed
+109
-17
No files matched your search
@@ -15,6 +15,7 @@
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
#include <NGLLogger/INGLLogger.h>
|
#include <NGLLogger/INGLLogger.h>
|
||||||
#include <DDS/DTC/generic_dtc_impl.h>
|
#include <DDS/DTC/generic_dtc_impl.h>
|
||||||
|
#include <DDS/Core/logger.h>
|
||||||
#include <dds/core/cond/StatusCondition.hpp>
|
#include <dds/core/cond/StatusCondition.hpp>
|
||||||
#include <dds/core/cond/WaitSet.hpp>
|
#include <dds/core/cond/WaitSet.hpp>
|
||||||
#include <unordered_map>
|
#include <unordered_map>
|
||||||
@@ -22,6 +23,7 @@
|
|||||||
#include <QThread>
|
#include <QThread>
|
||||||
|
|
||||||
using namespace NGL;
|
using namespace NGL;
|
||||||
|
using namespace Core;
|
||||||
|
|
||||||
namespace {{ namespace }}
|
namespace {{ namespace }}
|
||||||
{
|
{
|
||||||
@@ -61,7 +63,7 @@ std::shared_ptr<Dtc> Dtc::create(const std::shared_ptr<DDSConnector::DdsConnecto
|
|||||||
DtcImpl::DtcImpl(const std::shared_ptr<DDSConnector::DdsConnector> &ddsConnector)
|
DtcImpl::DtcImpl(const std::shared_ptr<DDSConnector::DdsConnector> &ddsConnector)
|
||||||
: Dtc()
|
: Dtc()
|
||||||
, m_ddsConnector(ddsConnector)
|
, m_ddsConnector(ddsConnector)
|
||||||
, m_logger(&ProjectDataManagement::getLogger("Dtc"))
|
, m_logger(&getLogger("Dtc"))
|
||||||
{}
|
{}
|
||||||
|
|
||||||
DtcImpl::~DtcImpl()
|
DtcImpl::~DtcImpl()
|
||||||
|
|||||||
@@ -30,8 +30,11 @@ template <typename DRO_OBJECT, typename SC> class GenericDtcSC
|
|||||||
|
|
||||||
virtual bool setSubscriberCallback(const SubscriberCallback& subscriberCallback) = 0;
|
virtual bool setSubscriberCallback(const SubscriberCallback& subscriberCallback) = 0;
|
||||||
virtual dds::sub::LoanedSamples<TopicType> readAlive() const = 0;
|
virtual dds::sub::LoanedSamples<TopicType> readAlive() const = 0;
|
||||||
|
virtual bool readAlive(TopicType& data) = 0;
|
||||||
virtual dds::sub::LoanedSamples<TopicType> takeAlive() const = 0;
|
virtual dds::sub::LoanedSamples<TopicType> takeAlive() const = 0;
|
||||||
|
virtual bool takeAlive(TopicType& data) = 0;
|
||||||
virtual dds::sub::LoanedSamples<TopicType> takeDisposed() const = 0;
|
virtual dds::sub::LoanedSamples<TopicType> takeDisposed() const = 0;
|
||||||
|
virtual bool takeDisposed(TopicType& data) = 0;
|
||||||
virtual bool hasSamples() const = 0;
|
virtual bool hasSamples() const = 0;
|
||||||
virtual DataReaderObject* dataReader() const = 0;
|
virtual DataReaderObject* dataReader() const = 0;
|
||||||
virtual bool waitForHistoricalData(int timeoutMSec) = 0;
|
virtual bool waitForHistoricalData(int timeoutMSec) = 0;
|
||||||
@@ -46,7 +49,11 @@ class GenericDtc
|
|||||||
using TopicType = typename BaseClass::TopicType;
|
using TopicType = typename BaseClass::TopicType;
|
||||||
|
|
||||||
// Explicitly expose base class methods for accessibility through smart pointers
|
// Explicitly expose base class methods for accessibility through smart pointers
|
||||||
void setSubscriberCallback(std::function<void(const TopicType&, DataModification)> callback) { BaseClass::setSubscriberCallback(callback); }
|
using BaseClass::readAlive;
|
||||||
|
using BaseClass::takeAlive;
|
||||||
|
using BaseClass::takeDisposed;
|
||||||
|
using BaseClass::SubscriberCallback;
|
||||||
|
bool setSubscriberCallback(const typename BaseClass::SubscriberCallback& callback) override { return BaseClass::setSubscriberCallback(callback); }
|
||||||
bool readAlive(TopicType& data) { return BaseClass::readAlive(data); }
|
bool readAlive(TopicType& data) { return BaseClass::readAlive(data); }
|
||||||
bool takeAlive(TopicType& data) { return BaseClass::takeAlive(data); }
|
bool takeAlive(TopicType& data) { return BaseClass::takeAlive(data); }
|
||||||
bool takeDisposed(TopicType& data) { return BaseClass::takeDisposed(data); }
|
bool takeDisposed(TopicType& data) { return BaseClass::takeDisposed(data); }
|
||||||
@@ -65,7 +72,11 @@ class GenericDtcSampleInfo
|
|||||||
using TopicType = typename BaseClass::TopicType;
|
using TopicType = typename BaseClass::TopicType;
|
||||||
|
|
||||||
// Explicitly expose base class methods for accessibility through smart pointers
|
// Explicitly expose base class methods for accessibility through smart pointers
|
||||||
void setSubscriberCallback(std::function<void(const TopicType&, const dds::sub::SampleInfo&)> callback) { BaseClass::setSubscriberCallback(callback); }
|
using BaseClass::readAlive;
|
||||||
|
using BaseClass::takeAlive;
|
||||||
|
using BaseClass::takeDisposed;
|
||||||
|
using BaseClass::SubscriberCallback;
|
||||||
|
bool setSubscriberCallback(const typename BaseClass::SubscriberCallback& callback) override { return BaseClass::setSubscriberCallback(callback); }
|
||||||
bool readAlive(TopicType& data) { return BaseClass::readAlive(data); }
|
bool readAlive(TopicType& data) { return BaseClass::readAlive(data); }
|
||||||
bool takeAlive(TopicType& data) { return BaseClass::takeAlive(data); }
|
bool takeAlive(TopicType& data) { return BaseClass::takeAlive(data); }
|
||||||
bool takeDisposed(TopicType& data) { return BaseClass::takeDisposed(data); }
|
bool takeDisposed(TopicType& data) { return BaseClass::takeDisposed(data); }
|
||||||
@@ -84,7 +95,11 @@ class Ddtc
|
|||||||
using TopicType = typename BaseClass::TopicType;
|
using TopicType = typename BaseClass::TopicType;
|
||||||
|
|
||||||
// Explicitly expose base class methods for accessibility through smart pointers
|
// Explicitly expose base class methods for accessibility through smart pointers
|
||||||
void setSubscriberCallback(std::function<void(const TopicType&, const std::string&, DataModification)> callback) { BaseClass::setSubscriberCallback(callback); }
|
using BaseClass::readAlive;
|
||||||
|
using BaseClass::takeAlive;
|
||||||
|
using BaseClass::takeDisposed;
|
||||||
|
using BaseClass::SubscriberCallback;
|
||||||
|
bool setSubscriberCallback(const typename BaseClass::SubscriberCallback& callback) override { return BaseClass::setSubscriberCallback(callback); }
|
||||||
bool readAlive(TopicType& data) { return BaseClass::readAlive(data); }
|
bool readAlive(TopicType& data) { return BaseClass::readAlive(data); }
|
||||||
bool takeAlive(TopicType& data) { return BaseClass::takeAlive(data); }
|
bool takeAlive(TopicType& data) { return BaseClass::takeAlive(data); }
|
||||||
bool takeDisposed(TopicType& data) { return BaseClass::takeDisposed(data); }
|
bool takeDisposed(TopicType& data) { return BaseClass::takeDisposed(data); }
|
||||||
@@ -103,7 +118,11 @@ class DdtcSampleInfo
|
|||||||
using TopicType = typename BaseClass::TopicType;
|
using TopicType = typename BaseClass::TopicType;
|
||||||
|
|
||||||
// Explicitly expose base class methods for accessibility through smart pointers
|
// Explicitly expose base class methods for accessibility through smart pointers
|
||||||
void setSubscriberCallback(std::function<void(const TopicType&, const std::string&, const dds::sub::SampleInfo&)> callback) { BaseClass::setSubscriberCallback(callback); }
|
using BaseClass::readAlive;
|
||||||
|
using BaseClass::takeAlive;
|
||||||
|
using BaseClass::takeDisposed;
|
||||||
|
using BaseClass::SubscriberCallback;
|
||||||
|
bool setSubscriberCallback(const typename BaseClass::SubscriberCallback& callback) override { return BaseClass::setSubscriberCallback(callback); }
|
||||||
bool readAlive(TopicType& data) { return BaseClass::readAlive(data); }
|
bool readAlive(TopicType& data) { return BaseClass::readAlive(data); }
|
||||||
bool takeAlive(TopicType& data) { return BaseClass::takeAlive(data); }
|
bool takeAlive(TopicType& data) { return BaseClass::takeAlive(data); }
|
||||||
bool takeDisposed(TopicType& data) { return BaseClass::takeDisposed(data); }
|
bool takeDisposed(TopicType& data) { return BaseClass::takeDisposed(data); }
|
||||||
|
|||||||
@@ -12,7 +12,7 @@
|
|||||||
#include <QtCore/QByteArray>
|
#include <QtCore/QByteArray>
|
||||||
|
|
||||||
#include <NGLLogger/NGLLoggerBootstrap.h>
|
#include <NGLLogger/NGLLoggerBootstrap.h>
|
||||||
#include "TrainingAreaBase/logger.h"
|
#include "DDS/Core/logger.h"
|
||||||
#include <dds/core/cond/GuardCondition.hpp>
|
#include <dds/core/cond/GuardCondition.hpp>
|
||||||
#include <dds/core/cond/StatusCondition.hpp>
|
#include <dds/core/cond/StatusCondition.hpp>
|
||||||
#include <dds/core/cond/WaitSet.hpp>
|
#include <dds/core/cond/WaitSet.hpp>
|
||||||
@@ -320,7 +320,7 @@ template <typename REQUEST, typename REPLY> class Requester final : public Reply
|
|||||||
|
|
||||||
m_contentFilteredTopic->filter(dds::topic::Filter(filterContent.data()));
|
m_contentFilteredTopic->filter(dds::topic::Filter(filterContent.data()));
|
||||||
}
|
}
|
||||||
DEBUG_LOG(::TrainingAreaBase::getLogger("connext")) << "content filter for topic " << ReplyRequestBase<REQUEST, REPLY>::m_requestTopic.name()
|
DEBUG_LOG(Core::getLogger("connext")) << "content filter for topic " << ReplyRequestBase<REQUEST, REPLY>::m_requestTopic.name()
|
||||||
<< " - related_sample_identity should be: " << writerGuid;
|
<< " - related_sample_identity should be: " << writerGuid;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -353,7 +353,7 @@ template <typename REQUEST, typename REPLY> class Requester final : public Reply
|
|||||||
m_dataWriter->write(request.data(), request.info());
|
m_dataWriter->write(request.data(), request.info());
|
||||||
|
|
||||||
const rti::core::SampleIdentity currentSampleIdentity = request.info().identity();
|
const rti::core::SampleIdentity currentSampleIdentity = request.info().identity();
|
||||||
DEBUG_LOG(::TrainingAreaBase::getLogger("connext")) << "send_request for topic " << ReplyRequestBase<REQUEST, REPLY>::m_requestTopic.name()
|
DEBUG_LOG(Core::getLogger("connext")) << "send_request for topic " << ReplyRequestBase<REQUEST, REPLY>::m_requestTopic.name()
|
||||||
<< ", m_currentSampleIdentity: " << DebugInfo::toReadable(currentSampleIdentity);
|
<< ", m_currentSampleIdentity: " << DebugInfo::toReadable(currentSampleIdentity);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -370,13 +370,13 @@ template <typename REQUEST, typename REPLY> class Requester final : public Reply
|
|||||||
|
|
||||||
if (m_dataReader->take(reply.data(), reply.info()) && reply.info().valid())
|
if (m_dataReader->take(reply.data(), reply.info()) && reply.info().valid())
|
||||||
{
|
{
|
||||||
DEBUG_LOG(::TrainingAreaBase::getLogger("connext")) << "receive_reply for topic "
|
DEBUG_LOG(Core::getLogger("connext")) << "receive_reply for topic "
|
||||||
<< ReplyRequestBase<REQUEST, REPLY>::m_requestTopic.name()
|
<< ReplyRequestBase<REQUEST, REPLY>::m_requestTopic.name()
|
||||||
<< ", SampleIdentity - original publication virtual: "
|
<< ", SampleIdentity - original publication virtual: "
|
||||||
<< DebugInfo::toReadable(
|
<< DebugInfo::toReadable(
|
||||||
reply.info()->original_publication_virtual_sample_identity());
|
reply.info()->original_publication_virtual_sample_identity());
|
||||||
|
|
||||||
DEBUG_LOG(::TrainingAreaBase::getLogger("connext")) << "receive_reply for topic "
|
DEBUG_LOG(Core::getLogger("connext")) << "receive_reply for topic "
|
||||||
<< ReplyRequestBase<REQUEST, REPLY>::m_requestTopic.name()
|
<< ReplyRequestBase<REQUEST, REPLY>::m_requestTopic.name()
|
||||||
<< ", SampleIdentity - related original: "
|
<< ", SampleIdentity - related original: "
|
||||||
<< DebugInfo::toReadable(
|
<< DebugInfo::toReadable(
|
||||||
@@ -389,7 +389,7 @@ template <typename REQUEST, typename REPLY> class Requester final : public Reply
|
|||||||
dds::core::cond::WaitSet::ConditionSeq activeConditionsSeq = waitset.wait(duration);
|
dds::core::cond::WaitSet::ConditionSeq activeConditionsSeq = waitset.wait(duration);
|
||||||
if (activeConditionsSeq.empty())
|
if (activeConditionsSeq.empty())
|
||||||
{
|
{
|
||||||
ERROR_LOG(::TrainingAreaBase::getLogger("connext")) << "Bailing out!";
|
ERROR_LOG(Core::getLogger("connext")) << "Bailing out!";
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -400,7 +400,7 @@ template <typename REQUEST, typename REPLY> class Requester final : public Reply
|
|||||||
if (!m_curInstanceHandle.is_nil())
|
if (!m_curInstanceHandle.is_nil())
|
||||||
{
|
{
|
||||||
|
|
||||||
DEBUG_LOG(::TrainingAreaBase::getLogger("connext")) << "Keyed topic - disposing instance: "
|
DEBUG_LOG(Core::getLogger("connext")) << "Keyed topic - disposing instance: "
|
||||||
<< ReplyRequestBase<REQUEST, REPLY>::m_requestTopic.name();
|
<< ReplyRequestBase<REQUEST, REPLY>::m_requestTopic.name();
|
||||||
m_dataWriter.dispose_instance(m_curInstanceHandle);
|
m_dataWriter.dispose_instance(m_curInstanceHandle);
|
||||||
}
|
}
|
||||||
@@ -456,7 +456,7 @@ template <typename REQUEST, typename REPLY> class Replier final : public ReplyRe
|
|||||||
void send_reply(connext::WriteSampleRef<REPLY>& reply, const rti::core::SampleIdentity& identity,
|
void send_reply(connext::WriteSampleRef<REPLY>& reply, const rti::core::SampleIdentity& identity,
|
||||||
bool bLastSample = true)
|
bool bLastSample = true)
|
||||||
{
|
{
|
||||||
DEBUG_LOG(::TrainingAreaBase::getLogger("connext")) << "send_reply for topic " << ReplyRequestBase<REQUEST, REPLY>::m_requestTopic.name()
|
DEBUG_LOG(Core::getLogger("connext")) << "send_reply for topic " << ReplyRequestBase<REQUEST, REPLY>::m_requestTopic.name()
|
||||||
<< ", sampleIdentity: " << DebugInfo::toReadable(identity);
|
<< ", sampleIdentity: " << DebugInfo::toReadable(identity);
|
||||||
|
|
||||||
rti::core::SampleFlag sf = reply.info().flag();
|
rti::core::SampleFlag sf = reply.info().flag();
|
||||||
@@ -466,7 +466,7 @@ template <typename REQUEST, typename REPLY> class Replier final : public ReplyRe
|
|||||||
sf |= rti::core::SampleFlag::intermediate_reply_sequence();
|
sf |= rti::core::SampleFlag::intermediate_reply_sequence();
|
||||||
reply.info().flag(sf);
|
reply.info().flag(sf);
|
||||||
reply.info().related_sample_identity(identity);
|
reply.info().related_sample_identity(identity);
|
||||||
DEBUG_LOG(::TrainingAreaBase::getLogger("connext")) << "send_reply for topic " << ReplyRequestBase<REQUEST, REPLY>::m_requestTopic.name()
|
DEBUG_LOG(Core::getLogger("connext")) << "send_reply for topic " << ReplyRequestBase<REQUEST, REPLY>::m_requestTopic.name()
|
||||||
<< ", related sampleIdentity: "
|
<< ", related sampleIdentity: "
|
||||||
<< DebugInfo::toReadable(reply.info().related_sample_identity());
|
<< DebugInfo::toReadable(reply.info().related_sample_identity());
|
||||||
|
|
||||||
@@ -480,7 +480,7 @@ template <typename REQUEST, typename REPLY> class Replier final : public ReplyRe
|
|||||||
|
|
||||||
if (request.info().valid())
|
if (request.info().valid())
|
||||||
{
|
{
|
||||||
DEBUG_LOG(::TrainingAreaBase::getLogger("connext")) << "receive_request for topic " << ReplyRequestBase<REQUEST, REPLY>::m_requestTopic.name()
|
DEBUG_LOG(Core::getLogger("connext")) << "receive_request for topic " << ReplyRequestBase<REQUEST, REPLY>::m_requestTopic.name()
|
||||||
<< ", sampleIdentity publication_virtual_sample_identity: "
|
<< ", sampleIdentity publication_virtual_sample_identity: "
|
||||||
<< DebugInfo::toReadable(request.info()->publication_virtual_sample_identity())
|
<< DebugInfo::toReadable(request.info()->publication_virtual_sample_identity())
|
||||||
<< ", original_publication_virtual_sample_identity: "
|
<< ", original_publication_virtual_sample_identity: "
|
||||||
|
|||||||
@@ -30,8 +30,11 @@ template <typename DRO_OBJECT, typename SC> class GenericDtcSC
|
|||||||
|
|
||||||
virtual bool setSubscriberCallback(const SubscriberCallback& subscriberCallback) = 0;
|
virtual bool setSubscriberCallback(const SubscriberCallback& subscriberCallback) = 0;
|
||||||
virtual dds::sub::LoanedSamples<TopicType> readAlive() const = 0;
|
virtual dds::sub::LoanedSamples<TopicType> readAlive() const = 0;
|
||||||
|
virtual bool readAlive(TopicType& data) = 0;
|
||||||
virtual dds::sub::LoanedSamples<TopicType> takeAlive() const = 0;
|
virtual dds::sub::LoanedSamples<TopicType> takeAlive() const = 0;
|
||||||
|
virtual bool takeAlive(TopicType& data) = 0;
|
||||||
virtual dds::sub::LoanedSamples<TopicType> takeDisposed() const = 0;
|
virtual dds::sub::LoanedSamples<TopicType> takeDisposed() const = 0;
|
||||||
|
virtual bool takeDisposed(TopicType& data) = 0;
|
||||||
virtual bool hasSamples() const = 0;
|
virtual bool hasSamples() const = 0;
|
||||||
virtual DataReaderObject* dataReader() const = 0;
|
virtual DataReaderObject* dataReader() const = 0;
|
||||||
virtual bool waitForHistoricalData(int timeoutMSec) = 0;
|
virtual bool waitForHistoricalData(int timeoutMSec) = 0;
|
||||||
@@ -46,7 +49,11 @@ class GenericDtc
|
|||||||
using TopicType = typename BaseClass::TopicType;
|
using TopicType = typename BaseClass::TopicType;
|
||||||
|
|
||||||
// Explicitly expose base class methods for accessibility through smart pointers
|
// Explicitly expose base class methods for accessibility through smart pointers
|
||||||
void setSubscriberCallback(std::function<void(const TopicType&, DataModification)> callback) { BaseClass::setSubscriberCallback(callback); }
|
using BaseClass::readAlive;
|
||||||
|
using BaseClass::takeAlive;
|
||||||
|
using BaseClass::takeDisposed;
|
||||||
|
using BaseClass::SubscriberCallback;
|
||||||
|
bool setSubscriberCallback(const typename BaseClass::SubscriberCallback& callback) override { return BaseClass::setSubscriberCallback(callback); }
|
||||||
bool readAlive(TopicType& data) { return BaseClass::readAlive(data); }
|
bool readAlive(TopicType& data) { return BaseClass::readAlive(data); }
|
||||||
bool takeAlive(TopicType& data) { return BaseClass::takeAlive(data); }
|
bool takeAlive(TopicType& data) { return BaseClass::takeAlive(data); }
|
||||||
bool takeDisposed(TopicType& data) { return BaseClass::takeDisposed(data); }
|
bool takeDisposed(TopicType& data) { return BaseClass::takeDisposed(data); }
|
||||||
@@ -65,6 +72,9 @@ class GenericDtcSampleInfo
|
|||||||
using TopicType = typename BaseClass::TopicType;
|
using TopicType = typename BaseClass::TopicType;
|
||||||
|
|
||||||
// Explicitly expose base class methods for accessibility through smart pointers
|
// Explicitly expose base class methods for accessibility through smart pointers
|
||||||
|
using BaseClass::readAlive;
|
||||||
|
using BaseClass::takeAlive;
|
||||||
|
using BaseClass::takeDisposed;
|
||||||
void setSubscriberCallback(std::function<void(const TopicType&, const dds::sub::SampleInfo&)> callback) { BaseClass::setSubscriberCallback(callback); }
|
void setSubscriberCallback(std::function<void(const TopicType&, const dds::sub::SampleInfo&)> callback) { BaseClass::setSubscriberCallback(callback); }
|
||||||
bool readAlive(TopicType& data) { return BaseClass::readAlive(data); }
|
bool readAlive(TopicType& data) { return BaseClass::readAlive(data); }
|
||||||
bool takeAlive(TopicType& data) { return BaseClass::takeAlive(data); }
|
bool takeAlive(TopicType& data) { return BaseClass::takeAlive(data); }
|
||||||
@@ -84,6 +94,9 @@ class Ddtc
|
|||||||
using TopicType = typename BaseClass::TopicType;
|
using TopicType = typename BaseClass::TopicType;
|
||||||
|
|
||||||
// Explicitly expose base class methods for accessibility through smart pointers
|
// Explicitly expose base class methods for accessibility through smart pointers
|
||||||
|
using BaseClass::readAlive;
|
||||||
|
using BaseClass::takeAlive;
|
||||||
|
using BaseClass::takeDisposed;
|
||||||
void setSubscriberCallback(std::function<void(const TopicType&, const std::string&, DataModification)> callback) { BaseClass::setSubscriberCallback(callback); }
|
void setSubscriberCallback(std::function<void(const TopicType&, const std::string&, DataModification)> callback) { BaseClass::setSubscriberCallback(callback); }
|
||||||
bool readAlive(TopicType& data) { return BaseClass::readAlive(data); }
|
bool readAlive(TopicType& data) { return BaseClass::readAlive(data); }
|
||||||
bool takeAlive(TopicType& data) { return BaseClass::takeAlive(data); }
|
bool takeAlive(TopicType& data) { return BaseClass::takeAlive(data); }
|
||||||
@@ -103,6 +116,9 @@ class DdtcSampleInfo
|
|||||||
using TopicType = typename BaseClass::TopicType;
|
using TopicType = typename BaseClass::TopicType;
|
||||||
|
|
||||||
// Explicitly expose base class methods for accessibility through smart pointers
|
// Explicitly expose base class methods for accessibility through smart pointers
|
||||||
|
using BaseClass::readAlive;
|
||||||
|
using BaseClass::takeAlive;
|
||||||
|
using BaseClass::takeDisposed;
|
||||||
void setSubscriberCallback(std::function<void(const TopicType&, const std::string&, const dds::sub::SampleInfo&)> callback) { BaseClass::setSubscriberCallback(callback); }
|
void setSubscriberCallback(std::function<void(const TopicType&, const std::string&, const dds::sub::SampleInfo&)> callback) { BaseClass::setSubscriberCallback(callback); }
|
||||||
bool readAlive(TopicType& data) { return BaseClass::readAlive(data); }
|
bool readAlive(TopicType& data) { return BaseClass::readAlive(data); }
|
||||||
bool takeAlive(TopicType& data) { return BaseClass::takeAlive(data); }
|
bool takeAlive(TopicType& data) { return BaseClass::takeAlive(data); }
|
||||||
|
|||||||
@@ -127,6 +127,17 @@ public:
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool readAlive(TopicTypeRead& data) override final
|
||||||
|
{
|
||||||
|
auto samples = readAlive();
|
||||||
|
if (samples.length() > 0)
|
||||||
|
{
|
||||||
|
data = samples[0].data();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
dds::sub::LoanedSamples<TopicTypeRead> takeAlive() const override final
|
dds::sub::LoanedSamples<TopicTypeRead> takeAlive() const override final
|
||||||
{
|
{
|
||||||
if (!m_dataReaderObject)
|
if (!m_dataReaderObject)
|
||||||
@@ -140,6 +151,17 @@ public:
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool takeAlive(TopicTypeRead& data) override final
|
||||||
|
{
|
||||||
|
auto samples = takeAlive();
|
||||||
|
if (samples.length() > 0)
|
||||||
|
{
|
||||||
|
data = samples[0].data();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
dds::sub::LoanedSamples<TopicTypeRead> takeDisposed() const override final
|
dds::sub::LoanedSamples<TopicTypeRead> takeDisposed() const override final
|
||||||
{
|
{
|
||||||
if (!m_dataReaderObject)
|
if (!m_dataReaderObject)
|
||||||
@@ -148,6 +170,17 @@ public:
|
|||||||
return m_dataReaderObject->takeDisposed();
|
return m_dataReaderObject->takeDisposed();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool takeDisposed(TopicTypeRead& data) override final
|
||||||
|
{
|
||||||
|
auto samples = takeDisposed();
|
||||||
|
if (samples.length() > 0)
|
||||||
|
{
|
||||||
|
data = samples[0].data();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
bool hasSamples() const override final
|
bool hasSamples() const override final
|
||||||
{
|
{
|
||||||
if (!m_dataReaderObject)
|
if (!m_dataReaderObject)
|
||||||
|
|||||||
@@ -208,6 +208,7 @@ APT_PACKAGES=(
|
|||||||
libvlc-dev
|
libvlc-dev
|
||||||
vlc-plugin-base
|
vlc-plugin-base
|
||||||
git
|
git
|
||||||
|
python3-pip
|
||||||
)
|
)
|
||||||
|
|
||||||
# INTERFACE libraries (header-only) are built automatically as dependencies
|
# INTERFACE libraries (header-only) are built automatically as dependencies
|
||||||
@@ -356,7 +357,7 @@ install_qt6_packages() {
|
|||||||
# Install aqtinstall if not available
|
# Install aqtinstall if not available
|
||||||
if ! command -v aqt &> /dev/null; then
|
if ! command -v aqt &> /dev/null; then
|
||||||
log_info "Installing aqtinstall via pip3"
|
log_info "Installing aqtinstall via pip3"
|
||||||
pip3 install --quiet aqtinstall
|
pip3 install --break-system-packages --quiet aqtinstall
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Install Qt6 modules (same as app/Dockerfile)
|
# Install Qt6 modules (same as app/Dockerfile)
|
||||||
@@ -592,6 +593,27 @@ log_info() {
|
|||||||
printf 'INFO: %s\n' "$*"
|
printf 'INFO: %s\n' "$*"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
install_qt6_packages() {
|
||||||
|
log_info "Installing Qt6 packages via aqtinstall"
|
||||||
|
|
||||||
|
# Install aqtinstall if not available
|
||||||
|
if ! command -v aqt &> /dev/null; then
|
||||||
|
log_info "Installing aqtinstall via pip3"
|
||||||
|
pip3 install --break-system-packages --quiet aqtinstall
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Install Qt6 modules (same as app/Dockerfile)
|
||||||
|
# Modules: qtmultimedia, qtserialport, qtimageformats, qtwebsockets, qtwebengine,
|
||||||
|
# qtpdf, qtwebview, qt5compat, qtwebchannel, qtpositioning, qtlocation, qtsensors
|
||||||
|
# Note: qtsvg is NOT available via aqtinstall - it's provided by libqt6svg6-dev apt package
|
||||||
|
aqt install-qt linux desktop "${QT_VERSION:-6.10.2}" "${QT_ARCH:-linux_gcc_64}" \
|
||||||
|
-m qtmultimedia qtserialport qtimageformats qtwebsockets qtwebengine \
|
||||||
|
qtpdf qtwebview qt5compat qtwebchannel qtpositioning qtlocation qtsensors \
|
||||||
|
--outputdir "${QT_BASE_DIR:-/opt/Qt}"
|
||||||
|
|
||||||
|
log_info "Qt6 packages installed successfully"
|
||||||
|
}
|
||||||
|
|
||||||
run_build_group() {
|
run_build_group() {
|
||||||
local group_id="$1"
|
local group_id="$1"
|
||||||
local enabled="$2"
|
local enabled="$2"
|
||||||
|
|||||||
Reference in new issue
Block a user