BUILD_RTI guards for DDS/Routing modules + logger init fixes
- Lts/DDS: Add BUILD_RTI guards to pacemaker.h, dds_connector.h, generic_fts_* files, generic_base.h, routing_plugin.h - Lts/Services/RoutingServiceNG: Add BUILD_RTI guards to session.h/cpp, connection.h/cpp, data_writer_task.h/cpp - Fix C++23 reference member initialization: use getLogger() instead of getNGLLogger() in constructor initializer lists - Root CMakeLists.txt: Add Lts/DDS to include_directories - Fix export header generation order (GENERATE_EXPORT_HEADER before TARGET_INCLUDE_DIRECTORIES) - Remove auto-generated stub files (external deps collected separately)
This commit is contained in:
1 parent
6588fc7d3f
commit
3cc3129de0
27 files changed
+338
-91
No files matched your search
@@ -60,7 +60,9 @@ include_directories(${CMAKE_SOURCE_DIR}/Lts/Viewer/SituationMap/Symbology)
|
|||||||
include_directories(${CMAKE_SOURCE_DIR}/Lts/Viewer/LtsDataView)
|
include_directories(${CMAKE_SOURCE_DIR}/Lts/Viewer/LtsDataView)
|
||||||
include_directories(${CMAKE_SOURCE_DIR}/Lts/Proxies/TrainingAreaBase)
|
include_directories(${CMAKE_SOURCE_DIR}/Lts/Proxies/TrainingAreaBase)
|
||||||
include_directories(${CMAKE_SOURCE_DIR}/include/ProjectDataManagement)
|
include_directories(${CMAKE_SOURCE_DIR}/include/ProjectDataManagement)
|
||||||
|
include_directories(${CMAKE_BINARY_DIR}/Lts/Services/ProjectDataManagement)
|
||||||
include_directories(${CMAKE_SOURCE_DIR}/Lts/Proxies/GuezNasat)
|
include_directories(${CMAKE_SOURCE_DIR}/Lts/Proxies/GuezNasat)
|
||||||
|
include_directories(${CMAKE_SOURCE_DIR}/Lts/DDS)
|
||||||
SET(CMAKE_CXX_STANDARD 20)
|
SET(CMAKE_CXX_STANDARD 20)
|
||||||
SET(CMAKE_CXX_STANDARD_REQUIRED 14)
|
SET(CMAKE_CXX_STANDARD_REQUIRED 14)
|
||||||
SET(CMAKE_VISIBILITY_INLINES_HIDDEN ON)
|
SET(CMAKE_VISIBILITY_INLINES_HIDDEN ON)
|
||||||
|
|||||||
@@ -4,7 +4,9 @@
|
|||||||
|
|
||||||
#include "svccoreclient_export.h"
|
#include "svccoreclient_export.h"
|
||||||
|
|
||||||
|
#if BUILD_RTI
|
||||||
#include <DDS/Core/core_dts_types.h>
|
#include <DDS/Core/core_dts_types.h>
|
||||||
|
#endif
|
||||||
#include <QtCore/QObject>
|
#include <QtCore/QObject>
|
||||||
#include <QtCore/QThread>
|
#include <QtCore/QThread>
|
||||||
|
|
||||||
@@ -25,36 +27,51 @@ class CORE_CLIENT_EXPORT Pacemaker final : public QObject
|
|||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
|
#if BUILD_RTI
|
||||||
explicit Pacemaker(const std::shared_ptr<DDSConnector::DdsConnector>& ddsConnector) : Pacemaker(ddsConnector.get())
|
explicit Pacemaker(const std::shared_ptr<DDSConnector::DdsConnector>& ddsConnector) : Pacemaker(ddsConnector.get())
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
explicit Pacemaker(DDSConnector::DdsConnector* ddsConnector);
|
explicit Pacemaker(DDSConnector::DdsConnector* ddsConnector);
|
||||||
|
#else
|
||||||
|
explicit Pacemaker(void* /*ddsConnector*/) {}
|
||||||
|
explicit Pacemaker() {}
|
||||||
|
#endif
|
||||||
~Pacemaker();
|
~Pacemaker();
|
||||||
|
|
||||||
|
#if BUILD_RTI
|
||||||
void startTimer();
|
void startTimer();
|
||||||
|
#endif
|
||||||
|
|
||||||
public Q_SLOTS:
|
public Q_SLOTS:
|
||||||
|
#if BUILD_RTI
|
||||||
void setNewState(Core::RunningState newState, const QString& errorString = QString());
|
void setNewState(Core::RunningState newState, const QString& errorString = QString());
|
||||||
void addPort(unsigned short number, Core::PortType portType, const QString& properties = QStringLiteral(""));
|
void addPort(unsigned short number, Core::PortType portType, const QString& properties = QStringLiteral(""));
|
||||||
|
|
||||||
void publishState();
|
void publishState();
|
||||||
|
#endif
|
||||||
|
|
||||||
private:
|
private:
|
||||||
NGL::INGLLogger& m_logger;
|
NGL::INGLLogger& m_logger;
|
||||||
|
#if BUILD_RTI
|
||||||
void init(DDSConnector::DdsConnector* ddsConnector);
|
void init(DDSConnector::DdsConnector* ddsConnector);
|
||||||
void setNewStateInternal(Core::RunningState newState, const QString& errorString = QString());
|
void setNewStateInternal(Core::RunningState newState, const QString& errorString = QString());
|
||||||
void addPortInternal(unsigned short number, Core::PortType portType,
|
void addPortInternal(unsigned short number, Core::PortType portType,
|
||||||
const QString& properties = QStringLiteral(""));
|
const QString& properties = QStringLiteral(""));
|
||||||
|
#endif
|
||||||
|
|
||||||
private:
|
private:
|
||||||
NGL::INGLLogger& m_logger;
|
NGL::INGLLogger& m_logger;
|
||||||
static constexpr const int m_publishTimerDelay = 3000;
|
static constexpr const int m_publishTimerDelay = 3000;
|
||||||
|
|
||||||
|
#if BUILD_RTI
|
||||||
CurrentRunningState m_state;
|
CurrentRunningState m_state;
|
||||||
|
#endif
|
||||||
QTimer* m_publishTimer = nullptr;
|
QTimer* m_publishTimer = nullptr;
|
||||||
QThread* m_paceThread = nullptr;
|
QThread* m_paceThread = nullptr;
|
||||||
|
|
||||||
|
#if BUILD_RTI
|
||||||
DTS::CurrentRunningStateImpl* m_dtsCurrentRunningState;
|
DTS::CurrentRunningStateImpl* m_dtsCurrentRunningState;
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
} // namespace Core
|
} // namespace Core
|
||||||
@@ -6,10 +6,13 @@
|
|||||||
#include <Lts/Common/ProjectConfig/project_defines.h>
|
#include <Lts/Common/ProjectConfig/project_defines.h>
|
||||||
#include <QUrl>
|
#include <QUrl>
|
||||||
#include <QtCore/QStringList>
|
#include <QtCore/QStringList>
|
||||||
|
#include <ddsconnector_export.h>
|
||||||
|
|
||||||
|
#if BUILD_RTI
|
||||||
#include <dds/pub/CoherentSet.hpp>
|
#include <dds/pub/CoherentSet.hpp>
|
||||||
#include <dds/pub/Publisher.hpp>
|
#include <dds/pub/Publisher.hpp>
|
||||||
#include <dds/sub/Subscriber.hpp>
|
#include <dds/sub/Subscriber.hpp>
|
||||||
#include <ddsconnector_export.h>
|
#endif
|
||||||
|
|
||||||
class QObject;
|
class QObject;
|
||||||
|
|
||||||
@@ -21,11 +24,6 @@ enum class ConnectionType;
|
|||||||
}
|
}
|
||||||
} // namespace DDS
|
} // namespace DDS
|
||||||
|
|
||||||
namespace NGL
|
|
||||||
{
|
|
||||||
class INGLLogger;
|
|
||||||
}
|
|
||||||
|
|
||||||
namespace DDSGeneric
|
namespace DDSGeneric
|
||||||
{
|
{
|
||||||
class WaitSetHandler;
|
class WaitSetHandler;
|
||||||
@@ -37,8 +35,17 @@ namespace DDSConnector
|
|||||||
class Publisher;
|
class Publisher;
|
||||||
class Subscriber;
|
class Subscriber;
|
||||||
|
|
||||||
|
#if !BUILD_RTI
|
||||||
|
// Stub types for RTI DDS when BUILD_RTI=OFF
|
||||||
|
namespace dds { namespace domain { class DomainParticipant; } }
|
||||||
|
namespace dds { namespace pub { class Publisher; } }
|
||||||
|
namespace dds { namespace sub { class Subscriber; } }
|
||||||
|
namespace dds { namespace topic { template<typename T> class Filter; } }
|
||||||
|
#endif
|
||||||
|
|
||||||
class DDSCONNECTOR_EXPORT DdsConnector
|
class DDSCONNECTOR_EXPORT DdsConnector
|
||||||
{
|
{
|
||||||
|
#if BUILD_RTI
|
||||||
DdsConnector(int domainId, const dds::domain::DomainParticipant& domainParticipant,
|
DdsConnector(int domainId, const dds::domain::DomainParticipant& domainParticipant,
|
||||||
IDL::PartitionType defaultPartitionType, int partitionId, int exerciseId,
|
IDL::PartitionType defaultPartitionType, int partitionId, int exerciseId,
|
||||||
DDS::QosProfile::ConnectionType connectionType, const QUrl& tcpConnectionUrl);
|
DDS::QosProfile::ConnectionType connectionType, const QUrl& tcpConnectionUrl);
|
||||||
@@ -169,6 +176,36 @@ class DDSCONNECTOR_EXPORT DdsConnector
|
|||||||
IDL::toStdString(m_defaultPartitionType), m_partitionId);
|
IDL::toStdString(m_defaultPartitionType), m_partitionId);
|
||||||
return ftc;
|
return ftc;
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
// Stub constructor and methods when BUILD_RTI=OFF
|
||||||
|
DdsConnector() = default;
|
||||||
|
virtual ~DdsConnector() = default;
|
||||||
|
|
||||||
|
// Stub methods
|
||||||
|
bool init(const QStringList& /*qosFileList*/ = QStringList()) { return false; }
|
||||||
|
void* getDomainParticipant() const { return nullptr; }
|
||||||
|
void setDomainParticipant(void* /*participant*/) {}
|
||||||
|
Publisher* getPublisher() { return nullptr; }
|
||||||
|
void* getDdsPublisher() const { return nullptr; }
|
||||||
|
void setPublisher(Publisher* /*publisher*/) {}
|
||||||
|
void enableBatchedWriter(bool /*bEnable*/) {}
|
||||||
|
Subscriber* getSubscriber() { return nullptr; }
|
||||||
|
void* getDdsSubscriber() const { return nullptr; }
|
||||||
|
void setSubscriber(Subscriber* /*subscriber*/) {}
|
||||||
|
void* getSubscriberListener() { return nullptr; }
|
||||||
|
const void* getWaitSetHandler() const { return nullptr; }
|
||||||
|
int getDomainId() const { return 0; }
|
||||||
|
int getPartitionType() const { return 0; }
|
||||||
|
int getPartitionId() const { return 0; }
|
||||||
|
int getExerciseId() const { return 0; }
|
||||||
|
std::string getDefaultPartition() const { return ""; }
|
||||||
|
QUrl getTcpConnectionUrl() const { return QUrl(); }
|
||||||
|
static std::string getPartitionString(int /*pt*/, int /*partitionId*/ = -1) { return ""; }
|
||||||
|
void initPublisherSubscriber() {}
|
||||||
|
void initPublisher() {}
|
||||||
|
void initSubscriber() {}
|
||||||
|
void initDomainParticipant() {}
|
||||||
|
#endif
|
||||||
|
|
||||||
private:
|
private:
|
||||||
NGL::INGLLogger& m_logger;
|
NGL::INGLLogger& m_logger;
|
||||||
@@ -184,12 +221,15 @@ class DDSCONNECTOR_EXPORT DdsConnector
|
|||||||
|
|
||||||
QUrl m_tcpConnectionUrl;
|
QUrl m_tcpConnectionUrl;
|
||||||
DDS::QosProfile::ConnectionType m_connectionType;
|
DDS::QosProfile::ConnectionType m_connectionType;
|
||||||
|
#if BUILD_RTI
|
||||||
dds::domain::DomainParticipant m_domainParticipant;
|
dds::domain::DomainParticipant m_domainParticipant;
|
||||||
|
#endif
|
||||||
DDSConnector::Publisher* m_publisher;
|
DDSConnector::Publisher* m_publisher;
|
||||||
DDSConnector::Subscriber* m_subscriber;
|
DDSConnector::Subscriber* m_subscriber;
|
||||||
DDSGeneric::WaitSetHandler* m_wsHandler;
|
DDSGeneric::WaitSetHandler* m_wsHandler;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#if BUILD_RTI
|
||||||
class CoherentSet
|
class CoherentSet
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
@@ -201,5 +241,15 @@ class CoherentSet
|
|||||||
NGL::INGLLogger& m_logger;
|
NGL::INGLLogger& m_logger;
|
||||||
dds::pub::CoherentSet m_coherentSet;
|
dds::pub::CoherentSet m_coherentSet;
|
||||||
};
|
};
|
||||||
|
#else
|
||||||
|
// Stub CoherentSet when BUILD_RTI=OFF
|
||||||
|
class CoherentSet
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
explicit CoherentSet(const std::shared_ptr<DdsConnector>& /*connector*/) {}
|
||||||
|
private:
|
||||||
|
NGL::INGLLogger& m_logger;
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
} // namespace DDSConnector
|
} // namespace DDSConnector
|
||||||
@@ -2,6 +2,8 @@
|
|||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#if BUILD_RTI
|
||||||
|
|
||||||
#include "connext.h"
|
#include "connext.h"
|
||||||
#include "generic_fts_internal.h"
|
#include "generic_fts_internal.h"
|
||||||
|
|
||||||
@@ -255,3 +257,5 @@ class GenericFtsImpl final : public GenericFts<TOPICTYPE_REQUEST, TOPICTYPE_REPL
|
|||||||
};
|
};
|
||||||
|
|
||||||
} // namespace FTS
|
} // namespace FTS
|
||||||
|
|
||||||
|
#endif // BUILD_RTI
|
||||||
@@ -2,6 +2,9 @@
|
|||||||
|
|
||||||
|
|
||||||
#include "generic_fts_internal.h"
|
#include "generic_fts_internal.h"
|
||||||
|
|
||||||
|
#if BUILD_RTI
|
||||||
|
|
||||||
#include <DDS/QosProfile/DDS_DefaultQos.h>
|
#include <DDS/QosProfile/DDS_DefaultQos.h>
|
||||||
#include <QMetaMethod>
|
#include <QMetaMethod>
|
||||||
#include <NGLLogger/INGLLogger.h>
|
#include <NGLLogger/INGLLogger.h>
|
||||||
@@ -46,3 +49,5 @@ void GenericFtsInternal::dataAvailable()
|
|||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endif // BUILD_RTI
|
||||||
@@ -8,9 +8,9 @@
|
|||||||
#if BUILD_RTI
|
#if BUILD_RTI
|
||||||
#include <DDS/Core/topic_lock_master.h>
|
#include <DDS/Core/topic_lock_master.h>
|
||||||
#include <DDS/Generic/wait_set_handler.h>
|
#include <DDS/Generic/wait_set_handler.h>
|
||||||
#endif
|
|
||||||
#include <dds/sub/qos/DataReaderQos.hpp>
|
#include <dds/sub/qos/DataReaderQos.hpp>
|
||||||
#include <dds/pub/qos/DataWriterQos.hpp>
|
#include <dds/pub/qos/DataWriterQos.hpp>
|
||||||
|
#endif
|
||||||
|
|
||||||
#include <QObject>
|
#include <QObject>
|
||||||
|
|
||||||
@@ -25,9 +25,11 @@ namespace FTS
|
|||||||
protected:
|
protected:
|
||||||
GenericFtsInternal() = default;
|
GenericFtsInternal() = default;
|
||||||
|
|
||||||
|
#if BUILD_RTI
|
||||||
static void printDefaultQos(NGL::INGLLogger &logger);
|
static void printDefaultQos(NGL::INGLLogger &logger);
|
||||||
static dds::sub::qos::DataReaderQos readerQos(NGL::INGLLogger &logger);
|
static dds::sub::qos::DataReaderQos readerQos(NGL::INGLLogger &logger);
|
||||||
static dds::pub::qos::DataWriterQos writerQos(NGL::INGLLogger &logger);
|
static dds::pub::qos::DataWriterQos writerQos(NGL::INGLLogger &logger);
|
||||||
|
#endif
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
#if BUILD_RTI
|
#if BUILD_RTI
|
||||||
|
|||||||
@@ -3,9 +3,11 @@
|
|||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#if BUILD_RTI
|
||||||
#include <dds/core/xtypes/DynamicData.hpp>
|
#include <dds/core/xtypes/DynamicData.hpp>
|
||||||
#include <dds/core/xtypes/DynamicType.hpp>
|
#include <dds/core/xtypes/DynamicType.hpp>
|
||||||
#include <dds/topic/Topic.hpp>
|
#include <dds/topic/Topic.hpp>
|
||||||
|
#endif
|
||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <ddsgen_export.h>
|
#include <ddsgen_export.h>
|
||||||
@@ -26,6 +28,7 @@ struct topic_type_name {
|
|||||||
return dds::topic::topic_type_name<T>::value();
|
return dds::topic::topic_type_name<T>::value();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
#if BUILD_RTI
|
||||||
template<>
|
template<>
|
||||||
struct topic_type_name<dds::core::xtypes::DynamicData> {
|
struct topic_type_name<dds::core::xtypes::DynamicData> {
|
||||||
static std::string value() {
|
static std::string value() {
|
||||||
@@ -38,6 +41,7 @@ struct topic_type_name<rti::core::xtypes::DynamicTypeImpl> {
|
|||||||
return "dds::topic::DynamicTypeImpl::value()";
|
return "dds::topic::DynamicTypeImpl::value()";
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
namespace Helper
|
namespace Helper
|
||||||
|
|||||||
@@ -3,6 +3,8 @@
|
|||||||
#include <DDS/Generic/generic_base.h>
|
#include <DDS/Generic/generic_base.h>
|
||||||
#include <DDS/QosProfile/DDS_DefaultQos.h>
|
#include <DDS/QosProfile/DDS_DefaultQos.h>
|
||||||
#include <NGLLogger/INGLLogger.h>
|
#include <NGLLogger/INGLLogger.h>
|
||||||
|
|
||||||
|
#if BUILD_RTI
|
||||||
#include <dds/pub/DataWriter.hpp>
|
#include <dds/pub/DataWriter.hpp>
|
||||||
#include <dds/pub/discovery.hpp>
|
#include <dds/pub/discovery.hpp>
|
||||||
#include <dds/sub/DataReader.hpp>
|
#include <dds/sub/DataReader.hpp>
|
||||||
@@ -333,3 +335,99 @@ class FunctionTopicRequestDispatcher final : public TopicDispatcher<typename FTC
|
|||||||
};
|
};
|
||||||
|
|
||||||
} // namespace RoutingService
|
} // namespace RoutingService
|
||||||
|
|
||||||
|
#else // BUILD_RTI=OFF - Stub declarations
|
||||||
|
|
||||||
|
namespace RoutingService
|
||||||
|
{
|
||||||
|
// Stub interfaces when BUILD_RTI=OFF
|
||||||
|
class SampleWriterInterface
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
SampleWriterInterface() = default;
|
||||||
|
virtual ~SampleWriterInterface() = default;
|
||||||
|
virtual void writeSamples() = 0;
|
||||||
|
virtual NGL::INGLLogger& logger() = 0;
|
||||||
|
};
|
||||||
|
|
||||||
|
class DataWriterTaskInterface
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
DataWriterTaskInterface() = default;
|
||||||
|
virtual ~DataWriterTaskInterface() = default;
|
||||||
|
virtual void enqueue(SampleWriterInterface* /*swi*/) = 0;
|
||||||
|
};
|
||||||
|
|
||||||
|
class TopicDispatcherInterface
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
TopicDispatcherInterface() = default;
|
||||||
|
virtual ~TopicDispatcherInterface() = default;
|
||||||
|
virtual bool init(DataWriterTaskInterface* /*dwt*/, void* /*dpIn*/, void* /*subIn*/, void* /*dpOut*/,
|
||||||
|
void* /*pubOut*/) = 0;
|
||||||
|
virtual void shutdown() = 0;
|
||||||
|
};
|
||||||
|
|
||||||
|
// Stub template classes when BUILD_RTI=OFF
|
||||||
|
template <typename TOPIC> class SampleWriter final : public SampleWriterInterface
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
SampleWriter(void* /*samples*/, void* /*dataWriter*/, bool /*bWithOriginalIdentity*/, NGL::INGLLogger& /*logger*/)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
void writeSamples() override {}
|
||||||
|
NGL::INGLLogger& logger() override
|
||||||
|
{
|
||||||
|
static NGL::INGLLogger dummyLogger;
|
||||||
|
return dummyLogger;
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
NGL::INGLLogger& m_logger;
|
||||||
|
};
|
||||||
|
|
||||||
|
template <typename TOPIC> class TopicDispatcher : public TopicDispatcherInterface
|
||||||
|
{
|
||||||
|
protected:
|
||||||
|
explicit TopicDispatcher(NGL::INGLLogger& /*logger*/, const std::string& /*topicName*/, int /*topicType*/) {}
|
||||||
|
~TopicDispatcher() { shutdown(); }
|
||||||
|
bool init(DataWriterTaskInterface* /*dwt*/, void* /*dpIn*/, void* /*subIn*/, void* /*dpOut*/,
|
||||||
|
void* /*pubOut*/) override
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
void shutdown() override {}
|
||||||
|
|
||||||
|
private:
|
||||||
|
NGL::INGLLogger& m_logger;
|
||||||
|
};
|
||||||
|
|
||||||
|
template <typename TOPIC> class DataTopicDispatcher final : public TopicDispatcher<TOPIC>
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
explicit DataTopicDispatcher(NGL::INGLLogger& logger) : TopicDispatcher<TOPIC>(logger, "", 0) {}
|
||||||
|
};
|
||||||
|
|
||||||
|
template <typename FTS_TOPIC>
|
||||||
|
class FunctionTopicReplyDispatcher final : public TopicDispatcher<typename FTS_TOPIC::ReplyTopic>
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
explicit FunctionTopicReplyDispatcher(NGL::INGLLogger& logger)
|
||||||
|
: TopicDispatcher<typename FTS_TOPIC::ReplyTopic>(logger, "", 0)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
template <typename FTC_TOPIC>
|
||||||
|
class FunctionTopicRequestDispatcher final : public TopicDispatcher<typename FTC_TOPIC::RequestTopic>
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
explicit FunctionTopicRequestDispatcher(NGL::INGLLogger& logger)
|
||||||
|
: TopicDispatcher<typename FTC_TOPIC::RequestTopic>(logger, "", 0)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace RoutingService
|
||||||
|
|
||||||
|
#endif // BUILD_RTI
|
||||||
+6
@@ -15,9 +15,14 @@ SET(pdm_combobox_gui_SRCS
|
|||||||
)
|
)
|
||||||
NGL_WRAP_UI(pdm_combobox_gui_SRCS pdm_charge_selector.ui)
|
NGL_WRAP_UI(pdm_combobox_gui_SRCS pdm_charge_selector.ui)
|
||||||
NGL_ADD_LIBRARY(WS PdmComboBoxGui STATIC ${pdm_combobox_gui_SRCS})
|
NGL_ADD_LIBRARY(WS PdmComboBoxGui STATIC ${pdm_combobox_gui_SRCS})
|
||||||
|
|
||||||
|
# Get include directories from svcPdmCommon (contains export header location)
|
||||||
|
GET_TARGET_PROPERTY(SVCPDMCOMMON_INCLUDE_DIRS svcPdmCommon INTERFACE_INCLUDE_DIRECTORIES)
|
||||||
|
|
||||||
NGL_TARGET_INCLUDE_DIRECTORIES(PdmComboBoxGui
|
NGL_TARGET_INCLUDE_DIRECTORIES(PdmComboBoxGui
|
||||||
PUBLIC
|
PUBLIC
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/../../..
|
${CMAKE_CURRENT_SOURCE_DIR}/../../..
|
||||||
|
${SVCPDMCOMMON_INCLUDE_DIRS}
|
||||||
)
|
)
|
||||||
NGL_TARGET_LINK_LIBRARIES(PdmComboBoxGui
|
NGL_TARGET_LINK_LIBRARIES(PdmComboBoxGui
|
||||||
PRIVATE
|
PRIVATE
|
||||||
@@ -27,6 +32,7 @@ NGL_TARGET_LINK_LIBRARIES(PdmComboBoxGui
|
|||||||
PdmGuiPluginInterface
|
PdmGuiPluginInterface
|
||||||
Qt6::Core
|
Qt6::Core
|
||||||
svcPdmClient
|
svcPdmClient
|
||||||
|
svcPdmCommon
|
||||||
)
|
)
|
||||||
|
|
||||||
SET(pdm_combobox_gui_plugin_SRCS
|
SET(pdm_combobox_gui_plugin_SRCS
|
||||||
|
|||||||
@@ -43,6 +43,8 @@ NGL_TARGET_INCLUDE_DIRECTORIES(tabTelegrams
|
|||||||
NGL_TARGET_LINK_LIBRARIES(tabTelegrams
|
NGL_TARGET_LINK_LIBRARIES(tabTelegrams
|
||||||
PUBLIC
|
PUBLIC
|
||||||
${_QT_CORE_TARGET}
|
${_QT_CORE_TARGET}
|
||||||
|
Qt6::Gui
|
||||||
|
${_QT_NETWORK_TARGET}
|
||||||
)
|
)
|
||||||
|
|
||||||
# install on RPM build and copy for local builds so that LogView automatically finds the training_area_telegrams.h file
|
# install on RPM build and copy for local builds so that LogView automatically finds the training_area_telegrams.h file
|
||||||
@@ -68,13 +70,12 @@ SET(SRCS_common
|
|||||||
tab_export.h
|
tab_export.h
|
||||||
)
|
)
|
||||||
|
|
||||||
# Generate tab_enums.idl / tab.idl
|
|
||||||
CODEGEN_IDL_SVC(SRCS_common ${xml_FILE})
|
|
||||||
# Generate tab_db_impl.cpp/.h, tab_db.h
|
|
||||||
CODEGEN_DATABASE(SRCS_common ${xml_FILE})
|
|
||||||
|
|
||||||
# Generate *.cpp/*.hpp from idl (only with BUILD_RTI)
|
|
||||||
IF(BUILD_RTI)
|
IF(BUILD_RTI)
|
||||||
|
# Generate tab_enums.idl / tab.idl
|
||||||
|
CODEGEN_IDL_SVC(SRCS_common ${xml_FILE})
|
||||||
|
# Generate tab_db_impl.cpp/.h, tab_db.h
|
||||||
|
CODEGEN_DATABASE(SRCS_common ${xml_FILE})
|
||||||
|
# Generate *.cpp/*.hpp from idl (only with BUILD_RTI)
|
||||||
RTIDDSGEN(SRCS_common tab_enums.idl)
|
RTIDDSGEN(SRCS_common tab_enums.idl)
|
||||||
RTIDDSGEN(SRCS_common tab.idl)
|
RTIDDSGEN(SRCS_common tab.idl)
|
||||||
# Generate tab_dt[s,c]_types.h, tab_ft[s,c]_types.h
|
# Generate tab_dt[s,c]_types.h, tab_ft[s,c]_types.h
|
||||||
@@ -82,10 +83,12 @@ IF(BUILD_RTI)
|
|||||||
# generate tab_[d|f]tc.h
|
# generate tab_[d|f]tc.h
|
||||||
CODEGEN_CLIENT_TOPICS_IFC(SRCS_common ${xml_FILE})
|
CODEGEN_CLIENT_TOPICS_IFC(SRCS_common ${xml_FILE})
|
||||||
ELSE()
|
ELSE()
|
||||||
# Stub files for BUILD_RTI=OFF
|
# Stub files for BUILD_RTI=OFF - NO code generation
|
||||||
SET(SRCS_common ${SRCS_common}
|
LIST(APPEND SRCS_common
|
||||||
stubs/tab_enums_stub.hpp
|
stubs/tab_enums_stub.hpp
|
||||||
stubs/tab_stub.hpp
|
stubs/tab_stub.hpp
|
||||||
|
stubs/tab_db_stub.hpp
|
||||||
|
stubs/tab_topic_type_plugin_stub.cpp
|
||||||
)
|
)
|
||||||
ENDIF()
|
ENDIF()
|
||||||
|
|
||||||
@@ -109,7 +112,9 @@ NGL_TARGET_INCLUDE_DIRECTORIES(svcTabCommon
|
|||||||
NGL_TARGET_LINK_LIBRARIES(svcTabCommon
|
NGL_TARGET_LINK_LIBRARIES(svcTabCommon
|
||||||
PUBLIC
|
PUBLIC
|
||||||
Qt6::Core
|
Qt6::Core
|
||||||
|
Qt6::Gui
|
||||||
Qt6::Sql
|
Qt6::Sql
|
||||||
|
Qt6::Network
|
||||||
NGLLogger
|
NGLLogger
|
||||||
ngldb
|
ngldb
|
||||||
svcPdmCommon
|
svcPdmCommon
|
||||||
@@ -131,8 +136,11 @@ NGL_INSTALL_TARGET(svcTabCommon)
|
|||||||
SET(SRCS_client
|
SET(SRCS_client
|
||||||
tab_export.h
|
tab_export.h
|
||||||
)
|
)
|
||||||
# generate tab_[d|f]tc_impl.[cpp|h]
|
|
||||||
CODEGEN_CLIENT_TOPICS_IMPL(SRCS_client ${xml_FILE})
|
IF(BUILD_RTI)
|
||||||
|
# generate tab_[d|f]tc_impl.[cpp|h]
|
||||||
|
CODEGEN_CLIENT_TOPICS_IMPL(SRCS_client ${xml_FILE})
|
||||||
|
ENDIF()
|
||||||
|
|
||||||
NGL_ADD_LIBRARY2(AAR SV WS HLA svcTabClient SHARED ${SRCS_client})
|
NGL_ADD_LIBRARY2(AAR SV WS HLA svcTabClient SHARED ${SRCS_client})
|
||||||
NGL_TARGET_INCLUDE_DIRECTORIES(svcTabClient
|
NGL_TARGET_INCLUDE_DIRECTORIES(svcTabClient
|
||||||
@@ -160,8 +168,11 @@ SET(SRCS_server
|
|||||||
tx_mixin.cpp
|
tx_mixin.cpp
|
||||||
tx_mixin.h
|
tx_mixin.h
|
||||||
)
|
)
|
||||||
# generate tab_[d|f]ts.h, tab_[d|f]ts_impl.[cpp|h]
|
|
||||||
CODEGEN_SERVER_TOPICS(SRCS_server ${xml_FILE})
|
IF(BUILD_RTI)
|
||||||
|
# generate tab_[d|f]ts.h, tab_[d|f]ts_impl.[cpp|h]
|
||||||
|
CODEGEN_SERVER_TOPICS(SRCS_server ${xml_FILE})
|
||||||
|
ENDIF()
|
||||||
|
|
||||||
NGL_ADD_LIBRARY2(AAR HLA SV svcTabServer SHARED ${SRCS_server}) # NGL_ADD_LIBRARY2 won't work here - no time for investigations
|
NGL_ADD_LIBRARY2(AAR HLA SV svcTabServer SHARED ${SRCS_server}) # NGL_ADD_LIBRARY2 won't work here - no time for investigations
|
||||||
if(BUILD_SV OR BUILD_HLA)
|
if(BUILD_SV OR BUILD_HLA)
|
||||||
@@ -173,27 +184,35 @@ NGL_TARGET_INCLUDE_DIRECTORIES(svcTabServer
|
|||||||
${CMAKE_CURRENT_BINARY_DIR}/../
|
${CMAKE_CURRENT_BINARY_DIR}/../
|
||||||
)
|
)
|
||||||
|
|
||||||
IF(BUILD_RTI)
|
|
||||||
NGL_TARGET_LINK_LIBRARIES(svcTabServer
|
NGL_TARGET_LINK_LIBRARIES(svcTabServer
|
||||||
PRIVATE
|
|
||||||
RTI::nddscpp2
|
|
||||||
ddsconnector
|
|
||||||
ddsfts
|
|
||||||
PUBLIC
|
PUBLIC
|
||||||
svcTabCommon
|
svcTabCommon
|
||||||
ngldb
|
ngldb
|
||||||
|
${_QT_CORE_TARGET}
|
||||||
|
Qt6::Gui
|
||||||
|
${_QT_NETWORK_TARGET}
|
||||||
)
|
)
|
||||||
|
IF(BUILD_RTI)
|
||||||
|
NGL_TARGET_LINK_LIBRARIES(svcTabServer
|
||||||
|
PRIVATE
|
||||||
|
RTI::nddscpp2
|
||||||
|
ddsconnector
|
||||||
|
ddsfts
|
||||||
|
)
|
||||||
ENDIF(BUILD_RTI)
|
ENDIF(BUILD_RTI)
|
||||||
NGL_INSTALL_TARGET(svcTabServer)
|
NGL_INSTALL_TARGET(svcTabServer)
|
||||||
|
|
||||||
#
|
#
|
||||||
# --- Topic Type Plugin --------------------------------------------------------------
|
# --- Topic Type Plugin --------------------------------------------------------------
|
||||||
#
|
#
|
||||||
|
IF(BUILD_RTI)
|
||||||
CREATE_TOPIC_TYPE_PLUGIN(${xml_FILE})
|
CREATE_TOPIC_TYPE_PLUGIN(${xml_FILE})
|
||||||
|
ENDIF()
|
||||||
|
|
||||||
#
|
#
|
||||||
# --- RecordReplayPlugin --------------------------------------------------------------
|
# --- RecordReplayPlugin --------------------------------------------------------------
|
||||||
#
|
#
|
||||||
|
IF(BUILD_RTI)
|
||||||
CREATE_RECORD_REPLAY_PLUGIN_SHARED(${xml_FILE})
|
CREATE_RECORD_REPLAY_PLUGIN_SHARED(${xml_FILE})
|
||||||
IF (TARGET tabRecordReplayPlugin)
|
IF (TARGET tabRecordReplayPlugin)
|
||||||
TARGET_SOURCES(tabRecordReplayPlugin
|
TARGET_SOURCES(tabRecordReplayPlugin
|
||||||
@@ -202,6 +221,7 @@ IF (TARGET tabRecordReplayPlugin)
|
|||||||
tab_record_replay_plugin_custom.h
|
tab_record_replay_plugin_custom.h
|
||||||
)
|
)
|
||||||
ENDIF()
|
ENDIF()
|
||||||
|
ENDIF()
|
||||||
|
|
||||||
#
|
#
|
||||||
# --- Executable svcTrainingAreaBase (sTAB) -------------------------------------------------
|
# --- Executable svcTrainingAreaBase (sTAB) -------------------------------------------------
|
||||||
@@ -251,8 +271,10 @@ SET(SRCS_exe
|
|||||||
${xml_FILE}
|
${xml_FILE}
|
||||||
)
|
)
|
||||||
|
|
||||||
# Generate tab.sql, tab.xml
|
IF(BUILD_RTI)
|
||||||
CODEGEN_SQL(SRCS_exe ${xml_FILE})
|
# Generate tab.sql, tab.xml
|
||||||
|
CODEGEN_SQL(SRCS_exe ${xml_FILE})
|
||||||
|
ENDIF()
|
||||||
|
|
||||||
NGL_ADD_SVC_ICON(SRCS_exe)
|
NGL_ADD_SVC_ICON(SRCS_exe)
|
||||||
NGL_ADD_EXECUTABLE(AAR SV svcTrainingAreaBase ${SRCS_exe})
|
NGL_ADD_EXECUTABLE(AAR SV svcTrainingAreaBase ${SRCS_exe})
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ namespace TrainingAreaBase
|
|||||||
{
|
{
|
||||||
using LOGGER_T = NGL::INGLLogger &;
|
using LOGGER_T = NGL::INGLLogger &;
|
||||||
|
|
||||||
TAB_COMMON_EXPORT LOGGER_T getLogger(const char *name);
|
SVCTABCOMMON_EXPORT LOGGER_T getLogger(const char *name);
|
||||||
inline LOGGER_T getLogger(const QString &loggerName)
|
inline LOGGER_T getLogger(const QString &loggerName)
|
||||||
{
|
{
|
||||||
return getLogger(loggerName.toUtf8().constData());
|
return getLogger(loggerName.toUtf8().constData());
|
||||||
|
|||||||
@@ -1,11 +0,0 @@
|
|||||||
// Stub for tab_enums.hpp when BUILD_RTI=OFF
|
|
||||||
#pragma once
|
|
||||||
|
|
||||||
namespace TrainingAreaBase {
|
|
||||||
// Stub enums - replace with actual values as needed
|
|
||||||
enum class DataModification {
|
|
||||||
INSERT = 0,
|
|
||||||
UPDATE = 1,
|
|
||||||
DELETE = 2
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
// Stub for tab.hpp when BUILD_RTI=OFF
|
|
||||||
#pragma once
|
|
||||||
|
|
||||||
// Forward declarations and stubs for RTI types
|
|
||||||
namespace TrainingAreaBase {
|
|
||||||
// Add stub types as needed
|
|
||||||
}
|
|
||||||
@@ -67,14 +67,13 @@ public:
|
|||||||
bool txData(const TetraIcd::OcCommand &data) override;
|
bool txData(const TetraIcd::OcCommand &data) override;
|
||||||
bool txData(const TrainingAreaBase::TetraIcd::ExFireReadiness &) override ;
|
bool txData(const TrainingAreaBase::TetraIcd::ExFireReadiness &) override ;
|
||||||
bool txData(const TrainingAreaBase::TetraIcd::ExFiredReport &) override ;
|
bool txData(const TrainingAreaBase::TetraIcd::ExFiredReport &) override ;
|
||||||
bool txData(const TrainingAreaBase::TetraIcd::ExConfirmationReport &) override ;
|
bool txData(const TrainingAreaBase::TetraIcd::ExConfirmationReport &) override;
|
||||||
private:
|
|
||||||
NGL::INGLLogger &m_logger;
|
|
||||||
bool txData(const TetraIcd::UAVPerformMission &data) override;
|
bool txData(const TetraIcd::UAVPerformMission &data) override;
|
||||||
bool txData(const TetraIcd::UAVChangeState &data) override;
|
bool txData(const TetraIcd::UAVChangeState &data) override;
|
||||||
|
|
||||||
template<typename T>
|
template<typename T>
|
||||||
bool txDataToAll(const T &data);
|
bool txDataToAll(const T &data);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
NGL::INGLLogger &m_logger;
|
NGL::INGLLogger &m_logger;
|
||||||
QVector<std::shared_ptr<SendToTab>> m_txHandler;
|
QVector<std::shared_ptr<SendToTab>> m_txHandler;
|
||||||
|
|||||||
@@ -8,7 +8,9 @@
|
|||||||
|
|
||||||
#include "dds_handler.h"
|
#include "dds_handler.h"
|
||||||
|
|
||||||
|
#if BUILD_RTI
|
||||||
#include <DDS/Core/pacemaker.h>
|
#include <DDS/Core/pacemaker.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
namespace GuezMinelayerProcessing
|
namespace GuezMinelayerProcessing
|
||||||
{
|
{
|
||||||
@@ -16,14 +18,14 @@ namespace GuezMinelayerProcessing
|
|||||||
#if BUILD_RTI
|
#if BUILD_RTI
|
||||||
DdsHandler::DdsHandler(const std::shared_ptr<DDSConnector::DdsConnector> &ddsConnector)
|
DdsHandler::DdsHandler(const std::shared_ptr<DDSConnector::DdsConnector> &ddsConnector)
|
||||||
: m_ddsConnector(ddsConnector)
|
: m_ddsConnector(ddsConnector)
|
||||||
, m_logger(getNGLLogger("GuezMinelayerProcessing.DdsHandler"))
|
, m_logger(getLogger("GuezMinelayerProcessing.DdsHandler"))
|
||||||
, m_topicLockMaster(std::make_shared<Core::TopicLockMaster>())
|
, m_topicLockMaster(std::make_shared<Core::TopicLockMaster>())
|
||||||
{
|
{
|
||||||
DEBUG_LOG(m_logger) << "DdsHandler(" << ddsConnector->getDomainId() << ") for partition: " << m_ddsConnector->getDefaultPartition();
|
DEBUG_LOG(m_logger) << "DdsHandler(" << ddsConnector->getDomainId() << ") for partition: " << m_ddsConnector->getDefaultPartition();
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
DdsHandler::DdsHandler()
|
DdsHandler::DdsHandler()
|
||||||
: m_logger(getNGLLogger("GuezMinelayerProcessing.DdsHandler"))
|
: m_logger(getLogger("GuezMinelayerProcessing.DdsHandler"))
|
||||||
{
|
{
|
||||||
DEBUG_LOG(m_logger) << "DdsHandler() - RTI DDS not enabled";
|
DEBUG_LOG(m_logger) << "DdsHandler() - RTI DDS not enabled";
|
||||||
}
|
}
|
||||||
|
|||||||
+2
@@ -28,6 +28,7 @@ namespace GuezMinelayerProcessing
|
|||||||
HandlerMinelayerData::HandlerMinelayerData(const std::shared_ptr<DdsHandler> &ddsHandler,
|
HandlerMinelayerData::HandlerMinelayerData(const std::shared_ptr<DdsHandler> &ddsHandler,
|
||||||
QObject *parent)
|
QObject *parent)
|
||||||
: QObject(parent)
|
: QObject(parent)
|
||||||
|
, m_logger(getLogger("GuezMinelayerProcessing.HandlerMinelayerData"))
|
||||||
, m_ddsHandler(ddsHandler)
|
, m_ddsHandler(ddsHandler)
|
||||||
#if BUILD_RTI
|
#if BUILD_RTI
|
||||||
, m_tabDtc(nullptr)
|
, m_tabDtc(nullptr)
|
||||||
@@ -375,6 +376,7 @@ namespace GuezMinelayerProcessing
|
|||||||
HandlerMinelayerData::HandlerMinelayerData(const std::shared_ptr<DdsHandler> &ddsHandler,
|
HandlerMinelayerData::HandlerMinelayerData(const std::shared_ptr<DdsHandler> &ddsHandler,
|
||||||
QObject *parent)
|
QObject *parent)
|
||||||
: QObject(parent)
|
: QObject(parent)
|
||||||
|
, m_logger(getLogger("GuezMinelayerProcessing.HandlerMinelayerData"))
|
||||||
, m_ddsHandler(ddsHandler)
|
, m_ddsHandler(ddsHandler)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -16,7 +16,8 @@
|
|||||||
using namespace GuezMinelayerProcessing;
|
using namespace GuezMinelayerProcessing;
|
||||||
|
|
||||||
Initialization::Initialization()
|
Initialization::Initialization()
|
||||||
: m_ddsHandler(nullptr)
|
: m_logger(getLogger("GuezMinelayerProcessing.Initialization"))
|
||||||
|
, m_ddsHandler(nullptr)
|
||||||
#if BUILD_RTI
|
#if BUILD_RTI
|
||||||
, m_handlerMinelayerData(nullptr)
|
, m_handlerMinelayerData(nullptr)
|
||||||
#endif
|
#endif
|
||||||
@@ -56,7 +57,6 @@ bool Initialization::initialize(
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
Q_UNUSED(ddsConnector)
|
|
||||||
// initialize DDS stub
|
// initialize DDS stub
|
||||||
m_ddsHandler.reset(new DdsHandler());
|
m_ddsHandler.reset(new DdsHandler());
|
||||||
if (!m_ddsHandler->init())
|
if (!m_ddsHandler->init())
|
||||||
|
|||||||
@@ -4,8 +4,6 @@
|
|||||||
# $Author$
|
# $Author$
|
||||||
#
|
#
|
||||||
|
|
||||||
IF(BUILD_RTI)
|
|
||||||
|
|
||||||
INCLUDE(MacroRTIDDSGen)
|
INCLUDE(MacroRTIDDSGen)
|
||||||
INCLUDE(MacroCodeGenIdl)
|
INCLUDE(MacroCodeGenIdl)
|
||||||
|
|
||||||
@@ -22,43 +20,75 @@ SET(SRCS_common
|
|||||||
logger.h
|
logger.h
|
||||||
)
|
)
|
||||||
|
|
||||||
# Generate pdm_enums.idl / pdm.idl
|
IF(BUILD_RTI)
|
||||||
CODEGEN_IDL_SVC(SRCS_common ${xml_FILE})
|
# Generate pdm_enums.idl / pdm.idl
|
||||||
|
CODEGEN_IDL_SVC(SRCS_common ${xml_FILE})
|
||||||
|
|
||||||
# Generate pdm_db.h
|
# Generate pdm_db.h
|
||||||
CODEGEN_DATABASE_STRUCTS(SRCS_common ${xml_FILE})
|
CODEGEN_DATABASE_STRUCTS(SRCS_common ${xml_FILE})
|
||||||
# Generate pdm_db_impl.cpp/.h,
|
# Generate pdm_db_impl.cpp/.h,
|
||||||
CODEGEN_DATABASE_SQL(SRCS_common ${xml_FILE})
|
CODEGEN_DATABASE_SQL(SRCS_common ${xml_FILE})
|
||||||
|
|
||||||
# Generate *.cpp/*.hpp from idl
|
# Generate *.cpp/*.hpp from idl
|
||||||
RTIDDSGEN(SRCS_common pdm_enums.idl)
|
RTIDDSGEN(SRCS_common pdm_enums.idl)
|
||||||
RTIDDSGEN(SRCS_common pdm.idl)
|
RTIDDSGEN(SRCS_common pdm.idl)
|
||||||
|
|
||||||
# Generate pdm_dt[s,c]_types.h, pdm_ft[s,c]_types.h
|
# Generate pdm_dt[s,c]_types.h, pdm_ft[s,c]_types.h
|
||||||
CODEGEN_TOPIC_TYPEDEFS(SRCS_common ${xml_FILE})
|
CODEGEN_TOPIC_TYPEDEFS(SRCS_common ${xml_FILE})
|
||||||
# generate pdm_[d|f]tc.h
|
# generate pdm_[d|f]tc.h
|
||||||
CODEGEN_CLIENT_TOPICS_IFC(SRCS_common ${xml_FILE})
|
CODEGEN_CLIENT_TOPICS_IFC(SRCS_common ${xml_FILE})
|
||||||
|
ELSE()
|
||||||
|
# Stub files for BUILD_RTI=OFF - NO code generation
|
||||||
|
LIST(APPEND SRCS_common
|
||||||
|
stubs/pdm_enums_stub.hpp
|
||||||
|
stubs/pdm_stub.hpp
|
||||||
|
stubs/pdm_db_stub.hpp
|
||||||
|
)
|
||||||
|
ENDIF()
|
||||||
|
|
||||||
|
# Create target only if component flags allow
|
||||||
NGL_ADD_LIBRARY2(AAR SV WS HLA svcPdmCommon SHARED ${SRCS_common})
|
NGL_ADD_LIBRARY2(AAR SV WS HLA svcPdmCommon SHARED ${SRCS_common})
|
||||||
NGL_TARGET_INCLUDE_DIRECTORIES(svcPdmCommon
|
|
||||||
|
# Generate export header ALWAYS (needed even if target not built)
|
||||||
|
IF(NOT TARGET svcPdmCommon)
|
||||||
|
# Create a dummy static library just for export header generation
|
||||||
|
ADD_LIBRARY(svcPdmCommon STATIC ${SRCS_common})
|
||||||
|
ENDIF()
|
||||||
|
|
||||||
|
# Generate export header BEFORE setting include directories
|
||||||
|
GENERATE_EXPORT_HEADER(svcPdmCommon EXPORT_FILE_NAME "svcpdmcommon_export.h")
|
||||||
|
|
||||||
|
# Include directories for svcPdmCommon (must include build dir for export header)
|
||||||
|
IF(TARGET svcPdmCommon)
|
||||||
|
TARGET_INCLUDE_DIRECTORIES(svcPdmCommon
|
||||||
|
PUBLIC
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}
|
||||||
|
${CMAKE_CURRENT_BINARY_DIR}
|
||||||
|
${CMAKE_SOURCE_DIR}/include/ProjectDataManagement
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/../
|
||||||
|
${CMAKE_CURRENT_BINARY_DIR}/../
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/stubs
|
||||||
|
${CMAKE_CURRENT_BINARY_DIR}/stubs
|
||||||
|
)
|
||||||
|
ENDIF()
|
||||||
|
NGL_TARGET_LINK_LIBRARIES(svcPdmCommon
|
||||||
PUBLIC
|
PUBLIC
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/../
|
Qt6::Core
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/../
|
NGLLogger
|
||||||
|
LtsUtilsCore
|
||||||
|
ngldb
|
||||||
)
|
)
|
||||||
IF(BUILD_RTI)
|
IF(BUILD_RTI)
|
||||||
NGL_TARGET_LINK_LIBRARIES(svcPdmCommon
|
NGL_TARGET_LINK_LIBRARIES(svcPdmCommon
|
||||||
PRIVATE
|
PRIVATE
|
||||||
RTI::nddscpp2
|
RTI::nddscpp2
|
||||||
PUBLIC
|
PUBLIC
|
||||||
Qt6::Core
|
|
||||||
ddscore
|
ddscore
|
||||||
NGLLogger
|
|
||||||
LtsUtilsCore
|
|
||||||
ngldb
|
|
||||||
)
|
)
|
||||||
ENDIF(BUILD_RTI)
|
ENDIF(BUILD_RTI)
|
||||||
NGL_INSTALL_TARGET(svcPdmCommon)
|
NGL_INSTALL_TARGET(svcPdmCommon)
|
||||||
|
|
||||||
|
IF(BUILD_RTI)
|
||||||
#
|
#
|
||||||
# --- Library svcPdmClient --------------------------------------------------------------------------------
|
# --- Library svcPdmClient --------------------------------------------------------------------------------
|
||||||
#
|
#
|
||||||
|
|||||||
@@ -9,13 +9,14 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <NGLLogger/INGLLogger.h>
|
#include <NGLLogger/INGLLogger.h>
|
||||||
|
#include <QString>
|
||||||
#include "svcpdmcommon_export.h"
|
#include "svcpdmcommon_export.h"
|
||||||
|
|
||||||
namespace ProjectDataManagement
|
namespace ProjectDataManagement
|
||||||
{
|
{
|
||||||
using LOGGER_T = NGL::INGLLogger &;
|
using LOGGER_T = NGL::INGLLogger &;
|
||||||
|
|
||||||
PDM_COMMON_EXPORT LOGGER_T getLogger(const char *name);
|
SVCPDMCOMMON_EXPORT LOGGER_T getLogger(const char *name);
|
||||||
inline LOGGER_T getLogger(const QString &loggerName)
|
inline LOGGER_T getLogger(const QString &loggerName)
|
||||||
{
|
{
|
||||||
return getLogger(loggerName.toUtf8().constData());
|
return getLogger(loggerName.toUtf8().constData());
|
||||||
|
|||||||
@@ -13,6 +13,10 @@
|
|||||||
|
|
||||||
namespace ProjectDataManagement
|
namespace ProjectDataManagement
|
||||||
{
|
{
|
||||||
|
|
||||||
|
// Forward declaration for helper function
|
||||||
|
static QString toString(VulnerabilityState vs);
|
||||||
|
|
||||||
//
|
//
|
||||||
// VulnerabilityState + VulnerabilityClass
|
// VulnerabilityState + VulnerabilityClass
|
||||||
//
|
//
|
||||||
@@ -97,7 +101,6 @@ static QString toStringSoldier(VulnerabilityState vs)
|
|||||||
case 14:
|
case 14:
|
||||||
case 15:
|
case 15:
|
||||||
case 16:
|
case 16:
|
||||||
case 4:
|
|
||||||
case 6:
|
case 6:
|
||||||
case 0:
|
case 0:
|
||||||
case 17:
|
case 17:
|
||||||
|
|||||||
@@ -24,15 +24,17 @@ namespace RoutingService
|
|||||||
Connection::Connection(const dds::domain::DomainParticipant &domainParticipant,
|
Connection::Connection(const dds::domain::DomainParticipant &domainParticipant,
|
||||||
const std::string &partition,
|
const std::string &partition,
|
||||||
const std::vector<TopicDispatcherInterface *> &topicsToRoute,
|
const std::vector<TopicDispatcherInterface *> &topicsToRoute,
|
||||||
const std::string &desc) : m_output(nullptr)
|
const std::string &desc)
|
||||||
|
: m_output(nullptr)
|
||||||
, m_domainParticipant(domainParticipant)
|
, m_domainParticipant(domainParticipant)
|
||||||
, m_publisher(new DDSConnector::Publisher(domainParticipant, partition))
|
, m_publisher(new DDSConnector::Publisher(domainParticipant, partition))
|
||||||
, m_subscriber(new DDSConnector::Subscriber(domainParticipant, partition, false))
|
, m_subscriber(new DDSConnector::Subscriber(domainParticipant, partition, false))
|
||||||
, m_dataWriterTask(nullptr)
|
, m_dataWriterTask(nullptr)
|
||||||
, m_topicsToRoute(topicsToRoute)
|
, m_topicsToRoute(topicsToRoute)
|
||||||
, m_partition(partition)
|
, m_partition(partition)
|
||||||
, m_description(desc),
|
, m_description(desc)
|
||||||
m_logger(NGL::NGLLoggerBootstrap::getNGLRootLogger()) {
|
, m_logger(getLogger("Connection"))
|
||||||
|
{
|
||||||
INFO_LOG(m_logger) << "Create connection: " << partition
|
INFO_LOG(m_logger) << "Create connection: " << partition
|
||||||
<< ", domain: " << domainParticipant.domain_id()
|
<< ", domain: " << domainParticipant.domain_id()
|
||||||
<< ", direction: " << m_description
|
<< ", direction: " << m_description
|
||||||
|
|||||||
@@ -39,7 +39,6 @@ public:
|
|||||||
dds::sub::Subscriber subscriber() const;
|
dds::sub::Subscriber subscriber() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
NGL::INGLLogger &m_logger;
|
|
||||||
bool initTopics();
|
bool initTopics();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|||||||
@@ -11,13 +11,15 @@
|
|||||||
namespace RoutingService
|
namespace RoutingService
|
||||||
{
|
{
|
||||||
DataWriterTask::DataWriterTask()
|
DataWriterTask::DataWriterTask()
|
||||||
: m_doShutdown(false)
|
: m_logger(getLogger("DataWriterTask"))
|
||||||
|
, m_doShutdown(false)
|
||||||
{
|
{
|
||||||
DEBUG_LOG(m_logger) << this << ": init ";
|
DEBUG_LOG(m_logger) << this << ": init ";
|
||||||
}
|
}
|
||||||
|
|
||||||
DataWriterTask::~DataWriterTask()
|
DataWriterTask::~DataWriterTask()
|
||||||
{
|
{
|
||||||
|
#if BUILD_RTI
|
||||||
std::lock_guard<std::mutex> lock(m_queueLock);
|
std::lock_guard<std::mutex> lock(m_queueLock);
|
||||||
DEBUG_LOG(m_logger) << this << ": Cleaning up remaining writers: " << m_writerQueue.size();
|
DEBUG_LOG(m_logger) << this << ": Cleaning up remaining writers: " << m_writerQueue.size();
|
||||||
while (!m_writerQueue.empty())
|
while (!m_writerQueue.empty())
|
||||||
@@ -25,8 +27,10 @@ DataWriterTask::~DataWriterTask()
|
|||||||
delete m_writerQueue.front();
|
delete m_writerQueue.front();
|
||||||
m_writerQueue.pop();
|
m_writerQueue.pop();
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if BUILD_RTI
|
||||||
void DataWriterTask::enqueue(SampleWriterInterface *swi)
|
void DataWriterTask::enqueue(SampleWriterInterface *swi)
|
||||||
{
|
{
|
||||||
std::lock_guard<std::mutex> lock(m_queueLock);
|
std::lock_guard<std::mutex> lock(m_queueLock);
|
||||||
@@ -100,5 +104,6 @@ void DataWriterTask::writeSamples()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif // BUILD_RTI
|
||||||
|
|
||||||
} // namespace RoutingService
|
} // namespace RoutingService
|
||||||
@@ -12,10 +12,11 @@
|
|||||||
#include <mutex>
|
#include <mutex>
|
||||||
#include <condition_variable>
|
#include <condition_variable>
|
||||||
|
|
||||||
|
#include "logger.h"
|
||||||
|
|
||||||
#if BUILD_RTI
|
#if BUILD_RTI
|
||||||
#include <DDS/Routing/routing_plugin.h>
|
#include <DDS/Routing/routing_plugin.h>
|
||||||
#endif
|
#endif
|
||||||
#include "logger.h"
|
|
||||||
|
|
||||||
namespace RoutingService
|
namespace RoutingService
|
||||||
{
|
{
|
||||||
@@ -25,16 +26,27 @@ public:
|
|||||||
DataWriterTask();
|
DataWriterTask();
|
||||||
~DataWriterTask();
|
~DataWriterTask();
|
||||||
|
|
||||||
|
#if BUILD_RTI
|
||||||
void enqueue(SampleWriterInterface *swi) override;
|
void enqueue(SampleWriterInterface *swi) override;
|
||||||
void shutdown();
|
void shutdown();
|
||||||
bool waitForData();
|
bool waitForData();
|
||||||
|
|
||||||
SampleWriterInterface *getNextSampleWriter();
|
SampleWriterInterface *getNextSampleWriter();
|
||||||
void writeSamples();
|
void writeSamples();
|
||||||
|
#else
|
||||||
|
// Stub methods when BUILD_RTI is disabled
|
||||||
|
void enqueue(void* /*swi*/) override {}
|
||||||
|
void shutdown() {}
|
||||||
|
bool waitForData() { return false; }
|
||||||
|
void *getNextSampleWriter() { return nullptr; }
|
||||||
|
void writeSamples() {}
|
||||||
|
#endif
|
||||||
|
|
||||||
private:
|
private:
|
||||||
NGL::INGLLogger &m_logger;
|
NGL::INGLLogger &m_logger;
|
||||||
|
#if BUILD_RTI
|
||||||
std::queue<SampleWriterInterface *> m_writerQueue;
|
std::queue<SampleWriterInterface *> m_writerQueue;
|
||||||
|
#endif
|
||||||
std::mutex m_queueLock;
|
std::mutex m_queueLock;
|
||||||
std::condition_variable m_waitForDataCondition;
|
std::condition_variable m_waitForDataCondition;
|
||||||
bool m_doShutdown;
|
bool m_doShutdown;
|
||||||
|
|||||||
@@ -12,9 +12,12 @@
|
|||||||
#if BUILD_RTI
|
#if BUILD_RTI
|
||||||
namespace RoutingService
|
namespace RoutingService
|
||||||
{
|
{
|
||||||
Session::Session(const QString &partitionNameSv, const QString &partitionNameWs) : m_partitionNameSv(partitionNameSv.toStdString())
|
Session::Session(const QString &partitionNameSv, const QString &partitionNameWs)
|
||||||
, m_partitionNameWs(partitionNameWs.toStdString()),
|
: m_partitionNameSv(partitionNameSv.toStdString())
|
||||||
m_logger(NGL::NGLLoggerBootstrap::getNGLRootLogger()) {}
|
, m_partitionNameWs(partitionNameWs.toStdString())
|
||||||
|
, m_logger(getLogger("Session"))
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
Session::~Session()
|
Session::~Session()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -10,6 +10,9 @@
|
|||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <QString>
|
#include <QString>
|
||||||
|
|
||||||
|
#include "logger.h"
|
||||||
|
|
||||||
#if BUILD_RTI
|
#if BUILD_RTI
|
||||||
#include "connection.h"
|
#include "connection.h"
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -1,6 +0,0 @@
|
|||||||
// Auto-generated export macro for PDM Common
|
|
||||||
// Stub for BUILD_RTI=OFF or missing dependency
|
|
||||||
|
|
||||||
#ifndef PDM_COMMON_EXPORT
|
|
||||||
#define PDM_COMMON_EXPORT
|
|
||||||
#endif
|
|
||||||
Reference in new issue
Block a user