# DDS Migration Summary ## Completed Tasks ### 1. Target Discovery Discovered all 13 DDS CMake targets in Lts/DDS/: - **Buildable targets (7)**: ddscore, svcCoreClient, ddsftccore, ddsfts, ddsgen, ddsQoS, ddsconnector - **INTERFACE libraries (6)**: ddsdtc, ddsdts, ddsfts_connext, topic_type_plugin, routing_plugin, ddsfts_connext ### 2. Build Script Updates Updated `new_docker_build.sh` GROUP1_TARGETS to include all 7 buildable DDS targets. ### 3. Compilation Fixes Applied #### NGL Logger Fixes - `Z/src/NGLLogger/INGLLogger.h`: Fixed log macros to use `::NGL::INGLLogger` namespace - `Lts/DDS/Core/logger.h`: Fixed LOGGER_T typedef - `Lts/DDS/Core/logger.cpp`: Fixed getLogger() to use NGLLoggerBootstrap - `Lts/DDS/FTS/connext.h`: Added m_logger member declarations #### Core Namespace Fixes - `Lts/DDS/Core/pacemaker.h`: Fixed Core::PortType → Core::CorePortType - `Lts/DDS/Core/topic_lock_master.h/.cpp`: Fixed namespace qualifications for Dtc and LockedEntity - `Lts/DDS/Core/pacemaker.cpp`: Fixed omg::types::optional usage (.value() instead of ()) #### Generic/FTC Fixes - `include/DDS/DTC/generic_dtc.h`: Added explicit using declarations for inherited methods - `Lts/DDS/DTC/generic_dtc_impl.h`: Fixed Qt include order (before namespace declarations) - `Lts/DDS/Generic/generic_data_reader.h`: Fixed Qt include order, added TopicType typedef - `include/DDS/Generic/generic_data_reader.h`: Wrapped stub in #ifndef BUILD_RTI guard - `Lts/DDS/FTC/generic_ftc_impl.h`: Fixed QMetaMethod::invoke() signature for Qt6 #### Grantlee Template Fixes - `Lts/Common/CodeGen/svc_dtc_impl.cpp.grantlee`: Fixed getKey to use direct member access for RTI structs - `Lts/Common/CodeGen/svc_ftc_impl.cpp.grantlee`: Fixed FunctionReplyObject to use method calls #### Build System Fixes - `Lts/DDS/Core/CMakeLists.txt`: Added MAKE_SVCCORECLIENT_LIB compile definition - `Lts/DDS/CMakeLists.txt`: Fixed subdirectory order (DTC before DDSConnector) - `Lts/Common/CodeGen/codegen_simple.py`: Added generic_dtc.h include to DtcGenerator - `tests/test_migration_stubs.cpp`: Fixed DDS namespace errors - `new_docker_build.sh`: Added INTEGRATION_TEST default variable ### 4. Build Results - All 7 buildable DDS targets compile successfully with BUILD_RTI=ON and BUILD_GRANTLEE=ON - CTest: 462/498 tests passed (93%) - 36 tests not run (DDS unit tests require proper build configuration) ## Remaining Issues ### DDS Unit Tests Not Building The DdsUnitTests subdirectory (ddsGenericDataTests, ddsDataTopicTests, ddsFunctionTopicTests) is not being built because: 1. CMake condition requires TARGET ddsgen AND TARGET ddsdtc AND TARGET ddsfts AND TARGET ddsQoS 2. These targets exist but the condition may not be evaluating correctly ### Qt5 SIGNAL/SLOT Syntax File `Lts/DDS/DdsUnitTests/function_topic_tests.cpp` lines 107-108, 132-133 still use Qt5 SIGNAL/SLOT syntax that needs migration to Qt6 QOverload syntax. ## Key Technical Findings 1. **RTI Struct Member Access**: RTI-generated structs use direct member access (e.g., `data.entityId`), NOT method calls 2. **FunctionReplyObject**: Unlike RTI structs, this Qt wrapper class uses methods (id(), str(), args(), etc.) 3. **Namespace Pollution**: Qt includes must come BEFORE namespace declarations to prevent conflicts 4. **Include Path Order**: CMake adds `include/` before `Lts/`, causing stub headers to be found first 5. **Logger Pattern**: Use `NGL::NGLLoggerBootstrap::getNGLRootLogger().getNGLLogger("name")` 6. **omg::types::optional**: Requires .value() or operator* to access, not function call syntax () ## Files Modified (18 total) 1. new_docker_build.sh 2. Z/src/NGLLogger/INGLLogger.h 3. Lts/DDS/Core/logger.h 4. Lts/DDS/Core/logger.cpp 5. Lts/DDS/Core/pacemaker.h 6. Lts/DDS/Core/topic_lock_master.h 7. Lts/DDS/Core/topic_lock_master.cpp 8. Lts/DDS/FTS/connext.h 9. Lts/DDS/Core/pacemaker.cpp 10. include/DDS/DTC/generic_dtc.h 11. Lts/DDS/DTC/generic_dtc_impl.h 12. Lts/DDS/Generic/generic_data_reader.h 13. include/DDS/Generic/generic_data_reader.h 14. Lts/DDS/FTC/generic_ftc_impl.h 15. Lts/Common/CodeGen/svc_dtc_impl.cpp.grantlee 16. Lts/Common/CodeGen/svc_ftc_impl.cpp.grantlee 17. Lts/Plugins/ExerciseManagement/Gui/ExerciseEdit/exm_edit_gui_plugin.cpp 18. Lts/Plugins/ParticipantManagement/Gui/ParticipantEdit/tactical_organisation.cpp 19. Lts/DDS/Core/CMakeLists.txt 20. Lts/Common/CodeGen/codegen_simple.py 21. Lts/DDS/CMakeLists.txt 22. tests/test_migration_stubs.cpp