Grantlee Templates: Fix namespace resolution for RTI DTC generation
- Changed {{ namespace }}::{{ dt.type }} to ::{{ namespace }}::{{ dt.type }}
in svc_dtc.h.grantlee, svc_dtc_impl.cpp.grantlee, svc_dtc_impl.h.grantlee
- Ensures absolute namespace resolution for Core::* types
- Fixes MOC/compilation errors for CurrentRunningState, LockedEntity, etc.
- Updated CMakeLists.txt for RTI 7.7.0 detection with DDS_PATH
- Fixed RTI include paths (ndds/hpp and ndds directories)
- Updated Lts/DDS module files for Qt6/RTI 7.7 compatibility
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
1 parent
497baa804b
commit
ad07345480
14 files changed
+183
-62
No files matched your search
@@ -76,7 +76,7 @@ include_directories(${CMAKE_SOURCE_DIR}/include)
|
||||
include_directories(${CMAKE_BINARY_DIR})
|
||||
include_directories(${CMAKE_BINARY_DIR}/Z/src/NGLLogger)
|
||||
# Include directories for external dependencies and internal modules
|
||||
include_directories(${CMAKE_SOURCE_DIR}/Z/src/NGLLogger)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/Z/src)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/Z/src/ngltools)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/Lts/Viewer/SituationMap/Symbology)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/Lts/Viewer/LtsDataView)
|
||||
@@ -87,6 +87,7 @@ include_directories(${CMAKE_SOURCE_DIR}/include/InfrastructureManagement)
|
||||
include_directories(${CMAKE_BINARY_DIR}/Lts/Services/InfrastructureManagement)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/Lts/Proxies/GuezNasat)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/Lts/DDS)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/Lts/DDS/QosProfile)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/Lts/Common)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/Lts/Common/LtsUtils)
|
||||
include_directories(${CMAKE_BINARY_DIR}/Lts/Common/LtsUtils/LtsUtilsCore)
|
||||
@@ -116,10 +117,31 @@ OPTION(BUILD_PLUGINS_PARTICIPANT_ORG_CHART "Build ParticipantOrgChart (requires
|
||||
OPTION(BUILD_PLUGINS_MSDL "Build MSDL module (requires Qt6 XmlPatterns)" OFF)
|
||||
OPTION(BUILD_PLUGINS_SAAB "Build Saab module (requires Qt6 XmlPatterns)" OFF)
|
||||
OPTION(BUILD_RTI "Build RTI Connext DDS dependent modules" OFF)
|
||||
# Add Lts/ include path globally for QosProfile and other Lts headers
|
||||
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/Lts)
|
||||
IF(BUILD_RTI)
|
||||
# Define BUILD_RTI as preprocessor macro for all targets
|
||||
ADD_COMPILE_DEFINITIONS(BUILD_RTI)
|
||||
ENDIF()
|
||||
OPTION(BUILD_ARCGIS "Build ArcGIS SDK dependent modules" ON)
|
||||
OPTION(BUILD_FILTERMANAGEMENT "Build FilterManagement plugins (temporarily disabled for migration)" OFF)
|
||||
OPTION(BUILD_CODIFICATION "Build CodificationManagement plugins (requires KDReports)" OFF)
|
||||
OPTION(BUILD_GRANTLEE "Build CodeGen Grantlee templates (requires Grantlee5/Qt5)" OFF)
|
||||
|
||||
# If BUILD_GRANTLEE is OFF but ngl_codegen is needed (for IDL codegen),
|
||||
# provide it as an imported executable target from pre-built location
|
||||
IF(NOT BUILD_GRANTLEE)
|
||||
# ngl_codegen is copied to build/bin/ by run_final_migration.sh
|
||||
# Create an imported target so MacroCodeGenIdl.cmake can find it
|
||||
IF(NOT TARGET ngl_codegen)
|
||||
ADD_EXECUTABLE(ngl_codegen IMPORTED GLOBAL)
|
||||
SET_TARGET_PROPERTIES(ngl_codegen PROPERTIES
|
||||
IMPORTED_LOCATION "${CMAKE_BINARY_DIR}/bin/ngl_codegen"
|
||||
)
|
||||
MESSAGE(STATUS "Using pre-built ngl_codegen from ${CMAKE_BINARY_DIR}/bin/ngl_codegen")
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
OPTION(BUILD_LTSWEBSOCKET "Build LtsWebSocket module (requires NGLLogger)" ON)
|
||||
|
||||
IF(WIN32)
|
||||
@@ -142,19 +164,21 @@ ELSE()
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
# Set CMAKE_MODULE_PATH early so FIND_PACKAGE can find our custom Find modules
|
||||
SET(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")
|
||||
INCLUDE(FindLibraryWithDebug)
|
||||
|
||||
# Find ArcGIS SDK globally if BUILD_ARCGIS is enabled
|
||||
# This creates ArcGIS::ArcGIS target for all modules to use
|
||||
IF(BUILD_ARCGIS)
|
||||
FIND_PACKAGE(ArcGIS REQUIRED)
|
||||
ENDIF()
|
||||
|
||||
ENABLE_TESTING()
|
||||
INCLUDE(CTest)
|
||||
# Add migration tests - skip when MIGRATE_MODULE targets specific Lts modules (tests need full codebase)
|
||||
if(NOT DEFINED MIGRATE_MODULE OR MIGRATE_MODULE STREQUAL "tests")
|
||||
ADD_SUBDIRECTORY(tests)
|
||||
else()
|
||||
message(STATUS "MIGRATE_MODULE=${MIGRATE_MODULE} - skipping tests (need full codebase)")
|
||||
endif()
|
||||
CONFIGURE_FILE(CTestCustom.ctest ${CMAKE_BINARY_DIR}/CTestCustom.ctest COPYONLY)
|
||||
CONFIGURE_FILE(lts-cc.conf ${CMAKE_BINARY_DIR}/lts-cc.conf.distrib COPYONLY)
|
||||
|
||||
SET(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")
|
||||
INCLUDE(FindLibraryWithDebug)
|
||||
# Add bundled GeographicLib cmake config to find modern targets (GeographicLib::GeographicLib_SHARED)
|
||||
LIST(APPEND CMAKE_PREFIX_PATH "${CMAKE_SOURCE_DIR}/include/GeographicLib/lib/cmake")
|
||||
SET(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bin)
|
||||
@@ -235,6 +259,12 @@ IF(BUILD_RTI)
|
||||
"${RTI_INSTALL_DIR}/include/rti"
|
||||
)
|
||||
|
||||
# RTI Include-Pfade global hinzufügen (auch für Tests die keine RTI Libraries linken)
|
||||
INCLUDE_DIRECTORIES(${RTI_INCLUDE_DIRS})
|
||||
|
||||
# RTI Include-Pfade auch an MOC weitergeben (für Q_OBJECT Header mit RTI Types)
|
||||
SET(CMAKE_AUTOMOC_INCLUDE_DIRECTORIES ${CMAKE_AUTOMOC_INCLUDE_DIRECTORIES} ${RTI_INCLUDE_DIRS})
|
||||
|
||||
# IMPORTED Targets für RTI Libraries erstellen
|
||||
# Debug und Release Varianten korrekt konfigurieren
|
||||
FOREACH(lib nddsc nddscore nddscpp nddscpp2 nddsctesthelpers)
|
||||
@@ -273,11 +303,13 @@ IF(BUILD_RTI)
|
||||
ENDIF()
|
||||
ENDIF(BUILD_RTI)
|
||||
|
||||
# Alias Targets für RTI Libraries (für Abwärtskompatibilität)
|
||||
# Alias Targets für RTI Libraries (für Abwärtskompatibilität)
|
||||
# Ermöglicht Verwendung von "ddscore" statt "RTI::nddscore" in CMakeLists.txt Files
|
||||
# HINWEIS: ddscore, ddsftc, ddsfts, ddsconnector werden von Lts/DDS Modulen als echte Targets erstellt
|
||||
# Daher hier KEINE ALIAS für diese Targets erstellen um Kollisionen zu vermeiden
|
||||
IF(BUILD_RTI AND TARGET RTI::nddsc)
|
||||
ADD_LIBRARY(ddsc ALIAS RTI::nddsc)
|
||||
ADD_LIBRARY(ddscore ALIAS RTI::nddscore)
|
||||
# ddscore wird von Lts/DDS/Core/CMakeLists.txt als echtes Target erstellt - kein Alias hier!
|
||||
ADD_LIBRARY(ddscpp2 ALIAS RTI::nddscpp2)
|
||||
# Optionale Targets nur als ALIAS erstellen wenn verfügbar (RTI 7.x hat nicht alle Legacy-Bibliotheken)
|
||||
# KEINE INTERFACE-Placeholder erstellen - Module müssen selbst mit fehlenden Targets umgehen
|
||||
@@ -317,6 +349,7 @@ ENDIF()
|
||||
# Ein paar NGL-spezifische Macros
|
||||
#
|
||||
INCLUDE(NGLMacros)
|
||||
INCLUDE(MacroCodeGenIdl)
|
||||
|
||||
#
|
||||
# Projektspezifische Einstellungen?
|
||||
@@ -514,6 +547,15 @@ NGL_ADD_SUBDIR_GUARDED(TetraIF)
|
||||
NGL_ADD_SUBDIR_GUARDED(Z/src)
|
||||
# Services are included before plugins via Lts/CMakeLists.txt (LTS_SUBDIRS order)
|
||||
NGL_ADD_SUBDIR_GUARDED(Lts)
|
||||
|
||||
# Add migration tests - skip when MIGRATE_MODULE targets specific Lts modules (tests need full codebase)
|
||||
# MUST be after Lts configuration so tests can access Lts targets (LtsTimelineClassic, codegen_base, etc.)
|
||||
if(NOT DEFINED MIGRATE_MODULE OR MIGRATE_MODULE STREQUAL "" OR MIGRATE_MODULE STREQUAL "tests")
|
||||
ADD_SUBDIRECTORY(tests)
|
||||
else()
|
||||
message(STATUS "MIGRATE_MODULE=${MIGRATE_MODULE} - skipping tests (need full codebase)")
|
||||
endif()
|
||||
|
||||
# TrainingAreaBase is included via Lts/Proxies when Lts is processed
|
||||
# Special-case: when migrating TetraIF, also include ProjectDataManagement so generated headers
|
||||
# and internal logger target are available in the same build tree for TetraIF dependents.
|
||||
|
||||
@@ -18,6 +18,9 @@
|
||||
#include <{{ include_prefix }}/{{ namespace_abbr }}_export.h>
|
||||
#include <{{ include_prefix }}/{{ namespace_abbr }}.hpp>
|
||||
|
||||
// Bring Core namespace types into scope for Interface namespace
|
||||
using namespace {{ namespace }};
|
||||
|
||||
namespace DDSConnector
|
||||
{
|
||||
class DdsConnector;
|
||||
@@ -68,16 +71,16 @@ public:
|
||||
//
|
||||
// Data Topic '{{ dt.name }}'
|
||||
// {% if dt.key.name %}
|
||||
virtual QMap<{{ dt.key.cppType }}, {{ namespace }}::{{ dt.type }}> {{ dt.nameFlc }}s() = 0;
|
||||
virtual bool {{ dt.nameFlc }}s(const std::function<void(const {{ namespace }}::{{ dt.type }} &data)> &cb) = 0;
|
||||
virtual QMap<{{ dt.key.cppType }}, ::{{ namespace }}::{{ dt.type }}> {{ dt.nameFlc }}s() = 0;
|
||||
virtual bool {{ dt.nameFlc }}s(const std::function<void(const ::{{ namespace }}::{{ dt.type }} &data)> &cb) = 0;
|
||||
// when the cb returns true, the loop is stopped (useful when searching for a specific topic)
|
||||
virtual bool {{ dt.nameFlc }}s(const std::function<bool(const {{ namespace }}::{{ dt.type }} &data)> &cb) = 0;
|
||||
virtual {{ namespace }}::{{ dt.type }} {{ dt.nameFlc }}({{ dt.key.cppTypeCr }} {{ dt.key.nameFlc }}) = 0;
|
||||
virtual bool {{ dt.nameFlc }}s(const std::function<bool(const ::{{ namespace }}::{{ dt.type }} &data)> &cb) = 0;
|
||||
virtual ::{{ namespace }}::{{ dt.type }} {{ dt.nameFlc }}({{ dt.key.cppTypeCr }} {{ dt.key.nameFlc }}) = 0;
|
||||
{% else %}
|
||||
virtual {{ namespace }}::{{ dt.type }} {{ dt.nameFlc }}() = 0;
|
||||
virtual ::{{ namespace }}::{{ dt.type }} {{ dt.nameFlc }}() = 0;
|
||||
{% endif %}
|
||||
Q_SIGNALS:
|
||||
void {{ dt.nameFlc }}Changed(const {{ namespace }}::{{ dt.type }} &data, DataModification modType);
|
||||
void {{ dt.nameFlc }}Changed(const ::{{ namespace }}::{{ dt.type }} &data, DataModification modType);
|
||||
|
||||
{% endfor %}
|
||||
|
||||
|
||||
@@ -218,7 +218,7 @@ template <>
|
||||
return val.{{ dt.key.name }}();
|
||||
}
|
||||
|
||||
QMap<{{ dt.key.cppType }},{{ namespace }}::{{ dt.type }}> DtcImpl::{{ dt.nameFlc }}s()
|
||||
QMap<{{ dt.key.cppType }},::{{ namespace }}::{{ dt.type }}> DtcImpl::{{ dt.nameFlc }}s()
|
||||
{
|
||||
if (!is{{ dt.name }}Enabled())
|
||||
{
|
||||
@@ -229,7 +229,7 @@ QMap<{{ dt.key.cppType }},{{ namespace }}::{{ dt.type }}> DtcImpl::{{ dt.nameFlc
|
||||
return m_{{ dt.nameFlc }}Cont;
|
||||
}
|
||||
|
||||
bool DtcImpl::{{ dt.nameFlc }}s(const std::function<void(const {{ namespace }}::{{ dt.type }} &data)> &cb)
|
||||
bool DtcImpl::{{ dt.nameFlc }}s(const std::function<void(const ::{{ namespace }}::{{ dt.type }} &data)> &cb)
|
||||
{
|
||||
if (!is{{ dt.name }}Enabled())
|
||||
{
|
||||
@@ -240,7 +240,7 @@ bool DtcImpl::{{ dt.nameFlc }}s(const std::function<void(const {{ namespace }}::
|
||||
return iterateAll(m_dtc{{ dt.name }}, m_{{ dt.nameFlc }}Cont, cb);
|
||||
}
|
||||
|
||||
bool DtcImpl::{{ dt.nameFlc }}s(const std::function<bool(const {{ namespace }}::{{ dt.type }} &data)> &cb)
|
||||
bool DtcImpl::{{ dt.nameFlc }}s(const std::function<bool(const ::{{ namespace }}::{{ dt.type }} &data)> &cb)
|
||||
{
|
||||
if (!is{{ dt.name }}Enabled())
|
||||
{
|
||||
@@ -251,7 +251,7 @@ bool DtcImpl::{{ dt.nameFlc }}s(const std::function<bool(const {{ namespace }}::
|
||||
return iterateUntil(m_dtc{{ dt.name }}, m_{{ dt.nameFlc }}Cont, cb);
|
||||
}
|
||||
|
||||
{{ namespace }}::{{ dt.type }} DtcImpl::{{ dt.nameFlc }}({{ dt.key.cppTypeCr }} {{ dt.key.nameFlc }})
|
||||
::{{ namespace }}::{{ dt.type }} DtcImpl::{{ dt.nameFlc }}({{ dt.key.cppTypeCr }} {{ dt.key.nameFlc }})
|
||||
{
|
||||
if (!is{{ dt.name }}Enabled())
|
||||
{
|
||||
@@ -262,7 +262,7 @@ bool DtcImpl::{{ dt.nameFlc }}s(const std::function<bool(const {{ namespace }}::
|
||||
return getOne(m_dtc{{ dt.name }}, m_{{ dt.nameFlc }}Cont, {{ dt.key.nameFlc }});
|
||||
}
|
||||
|
||||
void DtcImpl::{{ dt.nameFlc }}ChangedInternal(const {{ namespace }}::{{ dt.type }} &data, DataModification modType)
|
||||
void DtcImpl::{{ dt.nameFlc }}ChangedInternal(const ::{{ namespace }}::{{ dt.type }} &data, DataModification modType)
|
||||
{
|
||||
switch (modType)
|
||||
{
|
||||
@@ -278,11 +278,11 @@ void DtcImpl::{{ dt.nameFlc }}ChangedInternal(const {{ namespace }}::{{ dt.type
|
||||
}
|
||||
|
||||
{% else %}
|
||||
{{ namespace }}::{{ dt.type }} DtcImpl::{{ dt.nameFlc }}()
|
||||
::{{ namespace }}::{{ dt.type }} DtcImpl::{{ dt.nameFlc }}()
|
||||
{
|
||||
return m_{{ dt.nameFlc }};
|
||||
}
|
||||
void DtcImpl::{{ dt.nameFlc }}ChangedInternal(const {{ namespace }}::{{ dt.type }} &data, DataModification modType)
|
||||
void DtcImpl::{{ dt.nameFlc }}ChangedInternal(const ::{{ namespace }}::{{ dt.type }} &data, DataModification modType)
|
||||
{
|
||||
switch (modType)
|
||||
{
|
||||
@@ -291,7 +291,7 @@ void DtcImpl::{{ dt.nameFlc }}ChangedInternal(const {{ namespace }}::{{ dt.type
|
||||
m_{{ dt.nameFlc }} = data;
|
||||
break;
|
||||
case DataModification::eRemoved:
|
||||
m_{{ dt.nameFlc }} = {{ namespace }}::{{ dt.type }}();
|
||||
m_{{ dt.nameFlc }} = ::{{ namespace }}::{{ dt.type }}();
|
||||
break;
|
||||
}
|
||||
emit {{ dt.nameFlc }}Changed(data, modType);
|
||||
|
||||
@@ -52,12 +52,12 @@ public:
|
||||
bool is{{ dt.name }}Enabled() const override final { return m_dtc{{ dt.name }} != nullptr; }
|
||||
bool waitForHistoricalData{{ dt.name }}(int timeoutMSec = -1) override final;
|
||||
{% if dt.key.name %}
|
||||
QMap<{{ dt.key.cppType }}, {{ namespace }}::{{ dt.type }}> {{ dt.nameFlc }}s() override final;
|
||||
bool {{ dt.nameFlc }}s(const std::function<void(const {{ namespace }}::{{ dt.type }} &data)> &cb) override final;
|
||||
bool {{ dt.nameFlc }}s(const std::function<bool(const {{ namespace }}::{{ dt.type }} &data)> &cb) override final;
|
||||
{{ namespace }}::{{ dt.type }} {{ dt.nameFlc }}({{ dt.key.cppTypeCr }} {{ dt.key.nameFlc }}) override final;
|
||||
QMap<{{ dt.key.cppType }}, ::{{ namespace }}::{{ dt.type }}> {{ dt.nameFlc }}s() override final;
|
||||
bool {{ dt.nameFlc }}s(const std::function<void(const ::{{ namespace }}::{{ dt.type }} &data)> &cb) override final;
|
||||
bool {{ dt.nameFlc }}s(const std::function<bool(const ::{{ namespace }}::{{ dt.type }} &data)> &cb) override final;
|
||||
::{{ namespace }}::{{ dt.type }} {{ dt.nameFlc }}({{ dt.key.cppTypeCr }} {{ dt.key.nameFlc }}) override final;
|
||||
{% else %}
|
||||
{{ namespace }}::{{ dt.type }} {{ dt.nameFlc }}() override final;
|
||||
::{{ namespace }}::{{ dt.type }} {{ dt.nameFlc }}() override final;
|
||||
{% endif %} {% endif %} {% endfor %}
|
||||
|
||||
private:
|
||||
@@ -85,10 +85,10 @@ protected:
|
||||
|
||||
{% for dt in dataTopics.member %}
|
||||
{% if dt.dtcImpl %}
|
||||
void {{ dt.nameFlc }}ChangedInternal(const {{ namespace }}::{{ dt.type }} &data, DataModification modType);
|
||||
void {{ dt.nameFlc }}ChangedInternal(const ::{{ namespace }}::{{ dt.type }} &data, DataModification modType);
|
||||
std::unique_ptr<DTC::{{ dt.name }}> m_dtc{{ dt.name }}; {% if dt.key.name %}
|
||||
QMap<{{ dt.key.cppType }}, {{ namespace }}::{{ dt.type }}> m_{{ dt.nameFlc }}Cont; {% else %}
|
||||
{{ namespace }}::{{ dt.type }} m_{{ dt.nameFlc }};
|
||||
QMap<{{ dt.key.cppType }}, ::{{ namespace }}::{{ dt.type }}> m_{{ dt.nameFlc }}Cont; {% else %}
|
||||
::{{ namespace }}::{{ dt.type }} m_{{ dt.nameFlc }};
|
||||
{% endif %} {% endif %} {% endfor %}
|
||||
|
||||
LOGGER_T m_logger;
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
#
|
||||
|
||||
IF(BUILD_RTI)
|
||||
ADD_SUBDIRECTORY(QosProfile)
|
||||
ADD_SUBDIRECTORY(DDSConnector)
|
||||
ENDIF()
|
||||
|
||||
@@ -18,9 +19,6 @@ ADD_SUBDIRECTORY(Generic)
|
||||
ADD_SUBDIRECTORY(Routing)
|
||||
|
||||
ADD_SUBDIRECTORY(Core)
|
||||
IF(BUILD_RTI)
|
||||
ADD_SUBDIRECTORY(QosProfile)
|
||||
ENDIF()
|
||||
|
||||
# During stepwise migration, add placeholder CTest entries before the
|
||||
# real DdsUnitTests subdir so the test-suite shows migration status even
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
#include "ddscore_export.h"
|
||||
#include "core_export.h"
|
||||
|
||||
#ifndef tr_lts
|
||||
#define tr_lts(ctx, t) (t)
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
#pragma once
|
||||
|
||||
#include <NGLLogger/INGLLogger.h>
|
||||
#include "ddscore_export.h"
|
||||
#include "core_export.h"
|
||||
|
||||
namespace Core
|
||||
{
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
#include "pacemaker.h"
|
||||
|
||||
#if BUILD_RTI
|
||||
#include <DDS/DDSConnector/dds_connector.h>
|
||||
#include <DDS/DTS/generic_dts.h>
|
||||
#include <DDS/DTS/generic_dts_impl.h>
|
||||
@@ -14,7 +15,7 @@ namespace Core
|
||||
{
|
||||
Pacemaker::Pacemaker(DDSConnector::DdsConnector *ddsConnector)
|
||||
: QObject(nullptr)
|
||||
.getNGLLogger("Core.Pacemaker"))
|
||||
, m_logger(NGL::INGLLoggerBootstrap::getNGLLogger("Core.Pacemaker"))
|
||||
{
|
||||
init(ddsConnector);
|
||||
}
|
||||
@@ -108,4 +109,57 @@ void Pacemaker::startTimer()
|
||||
m_paceThread->start();
|
||||
}
|
||||
|
||||
#else // BUILD_RTI
|
||||
|
||||
Pacemaker::Pacemaker(void* ddsConnector)
|
||||
: QObject(nullptr)
|
||||
{
|
||||
Q_UNUSED(ddsConnector)
|
||||
}
|
||||
|
||||
Pacemaker::~Pacemaker()
|
||||
{
|
||||
}
|
||||
|
||||
void Pacemaker::setNewState(Core::RunningState newState, const QString& errorString)
|
||||
{
|
||||
Q_UNUSED(newState)
|
||||
Q_UNUSED(errorString)
|
||||
}
|
||||
|
||||
void Pacemaker::setNewStateInternal(Core::RunningState newState, const QString& errorString)
|
||||
{
|
||||
Q_UNUSED(newState)
|
||||
Q_UNUSED(errorString)
|
||||
}
|
||||
|
||||
void Pacemaker::addPort(unsigned short number, Core::PortType portType, const QString& properties)
|
||||
{
|
||||
Q_UNUSED(number)
|
||||
Q_UNUSED(portType)
|
||||
Q_UNUSED(properties)
|
||||
}
|
||||
|
||||
void Pacemaker::addPortInternal(unsigned short number, Core::PortType portType, const QString& properties)
|
||||
{
|
||||
Q_UNUSED(number)
|
||||
Q_UNUSED(portType)
|
||||
Q_UNUSED(properties)
|
||||
}
|
||||
|
||||
void Pacemaker::publishState()
|
||||
{
|
||||
}
|
||||
|
||||
void Pacemaker::init(void* ddsConnector)
|
||||
{
|
||||
Q_UNUSED(ddsConnector)
|
||||
}
|
||||
|
||||
void Pacemaker::startTimer()
|
||||
{
|
||||
}
|
||||
|
||||
#endif // BUILD_RTI
|
||||
|
||||
} // namespace Core
|
||||
@@ -4,12 +4,18 @@
|
||||
|
||||
#include "svccoreclient_export.h"
|
||||
|
||||
#if BUILD_RTI
|
||||
#include <DDS/Core/core_dts_types.h>
|
||||
#endif
|
||||
#include <QtCore/QObject>
|
||||
#include <QtCore/QThread>
|
||||
|
||||
// Forward declarations for moc compatibility (moc doesn't see BUILD_RTI guards)
|
||||
namespace Core { enum class RunningState; enum class PortType; }
|
||||
namespace DTS { class CurrentRunningStateImpl; }
|
||||
|
||||
#if BUILD_RTI
|
||||
#include <dds/core/core_dts_types.h>
|
||||
#include <dds/core/types/CurrentRunningState.h>
|
||||
#endif
|
||||
|
||||
namespace DDSConnector
|
||||
{
|
||||
class DdsConnector;
|
||||
@@ -52,26 +58,24 @@ class CORE_CLIENT_EXPORT Pacemaker final : public QObject
|
||||
#endif
|
||||
|
||||
private:
|
||||
NGL::INGLLogger& m_logger;
|
||||
#if BUILD_RTI
|
||||
NGL::INGLLogger& m_logger;
|
||||
void init(DDSConnector::DdsConnector* ddsConnector);
|
||||
void setNewStateInternal(Core::RunningState newState, const QString& errorString = QString());
|
||||
void addPortInternal(unsigned short number, Core::PortType portType,
|
||||
const QString& properties = QStringLiteral(""));
|
||||
#endif
|
||||
|
||||
private:
|
||||
NGL::INGLLogger& m_logger;
|
||||
static constexpr const int m_publishTimerDelay = 3000;
|
||||
|
||||
#if BUILD_RTI
|
||||
CurrentRunningState m_state;
|
||||
DTS::CurrentRunningStateImpl* m_dtsCurrentRunningState = nullptr;
|
||||
#else
|
||||
void* m_reserved1 = nullptr;
|
||||
void* m_reserved2 = nullptr;
|
||||
void* m_reserved3 = nullptr;
|
||||
void* m_reserved4 = nullptr;
|
||||
void* m_reserved5 = nullptr;
|
||||
#endif
|
||||
static constexpr const int m_publishTimerDelay = 3000;
|
||||
QTimer* m_publishTimer = nullptr;
|
||||
QThread* m_paceThread = nullptr;
|
||||
|
||||
#if BUILD_RTI
|
||||
DTS::CurrentRunningStateImpl* m_dtsCurrentRunningState;
|
||||
#endif
|
||||
};
|
||||
} // namespace Core
|
||||
@@ -1,10 +1,14 @@
|
||||
#pragma once
|
||||
|
||||
#include <Core/core_dtc.h>
|
||||
|
||||
#include <QtCore/QSet>
|
||||
#include <QtCore/QString>
|
||||
|
||||
#if BUILD_RTI
|
||||
#include <Core/core_dtc.h>
|
||||
#else
|
||||
// Forward declarations for moc compatibility when BUILD_RTI=OFF
|
||||
namespace DDS { namespace Core { namespace Interface { class Dtc; } } }
|
||||
#endif
|
||||
|
||||
namespace DDSConnector
|
||||
{
|
||||
@@ -44,10 +48,17 @@ class CORE_CLIENT_EXPORT TopicLockMaster : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
#if BUILD_RTI
|
||||
explicit TopicLockMaster(const std::shared_ptr<DDSConnector::DdsConnector> &ddsConnector);
|
||||
~TopicLockMaster();
|
||||
|
||||
bool init(const std::shared_ptr<DDSConnector::DdsConnector> &ddsConnector);
|
||||
#else
|
||||
explicit TopicLockMaster(void* /*ddsConnector*/) {}
|
||||
~TopicLockMaster() = default;
|
||||
|
||||
bool init(void* /*ddsConnector*/) { return false; }
|
||||
#endif
|
||||
|
||||
template<typename E>
|
||||
bool isLocked(const E &data, int exerciseId)
|
||||
@@ -58,7 +69,9 @@ public:
|
||||
|
||||
private:
|
||||
QSet<key> m_lockedEntitys;
|
||||
std::shared_ptr<Core::Interface::Dtc> m_coreDtc;
|
||||
#if BUILD_RTI
|
||||
std::shared_ptr<DDS::Core::Interface::Dtc> m_coreDtc;
|
||||
#endif
|
||||
};
|
||||
|
||||
}
|
||||
@@ -8,7 +8,7 @@
|
||||
#include "subscriber.h"
|
||||
|
||||
#include <DDS/Generic/wait_set_handler.h>
|
||||
#include <DDS/QosProfile/DDS_DefaultQos.h>
|
||||
#include <Lts/DDS/QosProfile/DDS_DefaultQos.h>
|
||||
#include <NGLLogger/NGLLoggerBootstrap.h>
|
||||
#include <QtCore/QCoreApplication>
|
||||
|
||||
@@ -32,7 +32,7 @@ DdsConnector::DdsConnector(int domainId,
|
||||
, m_publisher(nullptr)
|
||||
, m_subscriber(nullptr)
|
||||
, m_wsHandler(nullptr)
|
||||
.getNGLLogger("Common.DDSConnector"))
|
||||
, m_logger(NGL::NGLLoggerBootstrap::getNGLRootLogger().getNGLLogger("Common.DDSConnector"))
|
||||
{
|
||||
initInternal();
|
||||
DEBUG_LOG(m_logger) << "DdsConnector ctor: " << m_domainId << "," << m_partitionId << "," << m_exerciseId << ","
|
||||
@@ -153,8 +153,8 @@ std::string DdsConnector::getPartitionString(IDL::PartitionType pt, int partitio
|
||||
return IDL::replayPartition(partitionId);
|
||||
}
|
||||
|
||||
NGL::INGLLogger& m_logger = NGL::NGLLoggerBootstrap::getNGLRootLogger().getNGLLogger("Common.DDSConnector");
|
||||
ERROR_LOG(m_logger) << "Invalid partition type: " << static_cast<int>(pt);
|
||||
NGL::INGLLogger& logger = NGL::NGLLoggerBootstrap::getNGLRootLogger().getNGLLogger("Common.DDSConnector");
|
||||
ERROR_LOG(logger) << "Invalid partition type: " << static_cast<int>(pt);
|
||||
return std::string();
|
||||
}
|
||||
|
||||
|
||||
@@ -129,6 +129,13 @@ class DDSCONNECTOR_EXPORT DdsConnector
|
||||
void initSubscriber();
|
||||
void initDomainParticipant();
|
||||
|
||||
private:
|
||||
#if BUILD_RTI
|
||||
void initInternal();
|
||||
void createWaitSetHandler();
|
||||
#endif
|
||||
|
||||
public:
|
||||
template <typename T>
|
||||
T* createDTS(const std::string& topicName =
|
||||
DDS::Helper::getShortTopicName(DDS::topic_type_name<typename T::TopicType>::value()))
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
|
||||
#include <dds/pub/AnyDataWriter.hpp>
|
||||
#include <rti/core/xtypes/DynamicDataImpl.hpp>
|
||||
#include <DDS/QosProfile/DDS_DefaultQos.h>
|
||||
#include <Lts/DDS/QosProfile/DDS_DefaultQos.h>
|
||||
#include <NGLLogger/INGLLogger.h>
|
||||
|
||||
namespace DDSConnector
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
#include "subscriber.h"
|
||||
#include "pub_sub_base_p.h"
|
||||
|
||||
#include <DDS/QosProfile/DDS_DefaultQos.h>
|
||||
#include <Lts/DDS/QosProfile/DDS_DefaultQos.h>
|
||||
#include <NGLLogger/INGLLogger.h>
|
||||
|
||||
namespace DDSConnector
|
||||
|
||||
Reference in new issue
Block a user