Files
qt-migration-legatus/qt6-after/qt6-migrated-legatus/Lts/Proxies/GuezNasat/dds_handler.cpp
T
torstenandCopilot b774f4035c Qt6 Migration: DDS-Stubs, Logger-Fixes, Export-Header Korrekturen
- NGL_ADD_LIBRARY2: 87 CMakeLists.txt konvertiert für Export-Header Generierung
- 44 Export-Header Include-Pfade korrigiert (_export.h)
- 81 DDS-Stub-Header generiert (*_dtc.h, *_fts.h, *_dts.h, *_ftc.h)
- INGLLogger: Duplikat gelöscht, m_logger Member entfernt, variadische Makros
- Q_FUNC_INFO Redefinition behoben (Qt6 definiert bereits)
- FATAL_LOG Makro hinzugefügt
- InfrastructureManagement DDS-Stubs (ism.hpp, ism_enums.hpp, ism_ftc.h)
- FilterManagement DDS-Stubs (flt_ftc.h, flt_dts.h)
- AreaEffectSimulation DDS-Stubs (aes.hpp, aes_enums.hpp)
- SymbolAppearance Klasse vollständig definiert mit content() Methode
- BuildingComponentFilter Klasse definiert mit Copy-Konstruktor
- Ftc Factory: nullptr Return (abstract class)
- AesFilter Klasse in aes.hpp hinzugefügt
- Dtc Klasse in ppm.hpp mit participantChanged Signal
- AesType Enum: alle 15 At* Werte definiert
- AesEffectState_def: EsReceived hinzugefügt
- DataModification Enum: eAdded/eModified/eRemoved
- function_reply_object.h → core_types.h Include-Pfad (72 Dateien)
- Enum-Class-Streaming Template-Operator in INGLLogger.h
- ism_mounting_point.h: QImage → QtGui/QImage, QGuiApplication/QScreen
- ism_data_plugin_interface.h: QSet Include, Include-Reihenfolge
- QRegExp → QRegularExpression in tpm_js_parser.cpp
- .underlying() Aufrufe zu direktem Enum-Vergleich korrigiert
- Include-Pfade: aes.hpp in symbol_appearance_settings_impl.h und aes_display_filter_impl.h

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-08-19 06:06:24 +02:00

198 lines
5.8 KiB
C++
Executable File

#include "dds_handler.h"
#include <TrainingAreaBase/tab_dts.h>
#include <DDS/DTS/generic_dts.h>
namespace GuezNasat
{
Participant2Dds::Participant2Dds(const dds::domain::DomainParticipant &domainParticipant, int exerciseId)
: m_ddsConnector(new DDSConnector::DdsConnector(domainParticipant, IDL::PartitionType::Exercise, exerciseId))
{
m_ddsConnector->initPublisherSubscriber();
m_ppmDtc = ParticipantManagement::Interface::Dtc::create(m_ddsConnector);
connect(m_ppmDtc.get(), &ParticipantManagement::Interface::Dtc::participantChanged,
this, &Participant2Dds::onParticipantChanged);
m_ppmDtc->enableParticipant();
DEBUG_LOG() << Q_FUNC_INFO << " create FTC..." << " exerciseId=" << exerciseId;
m_aesFtc = AreaEffectSimulation::Interface::Ftc::create(m_ddsConnector);
if (!m_aesFtc->enableAirSupportImpactModify())
{
ERROR_LOG() << "Could not enable AES AirSupportImpactModify FTC for"
<< " exerciseId=" << exerciseId;
m_aesFtc = nullptr;
}
if (!m_aesFtc->enableExplosionClusterModify())
{
ERROR_LOG() << "Could not enable AES enableExplosionClusterModify FTC for"
<< " exerciseId=" << exerciseId;
m_aesFtc = nullptr;
}
DEBUG_LOG() << Q_FUNC_INFO << " create FTC..." << " exerciseId=" << exerciseId << " Done: " << m_aesFtc.get();
}
bool Participant2Dds::publish(const TrainingAreaBase::EquipmentPosition &pos)
{
if (!m_tabDts)
{
m_tabDts = TrainingAreaBase::Interface::Dts::create(m_ddsConnector);
if (!m_tabDts->enableEquipmentPosition())
{
ERROR_LOG() << "Could not enable TAB equipment position DTS for "
<< m_ddsConnector->getDefaultPartition();
m_tabDts = nullptr;
return false;
}
}
return m_tabDts->publish(pos);
}
bool Participant2Dds::publish(const AreaEffectSimulation::AirSupportImpactModifyRequest &req,
AreaEffectSimulation::Interface::Ftc::AirSupportImpactModifyReplyHandler *handler)
{
return m_aesFtc->airSupportImpactModifyRequest(req, handler);
}
bool Participant2Dds::publish(const AreaEffectSimulation::ExplosionClusterModifyRequest &req,
AreaEffectSimulation::Interface::Ftc::ExplosionClusterModifyReplyHandler *handler)
{
return m_aesFtc->explosionClusterModifyRequest(req, handler);
}
bool Participant2Dds::publish(const GuezNasat::Nasat9Liner &nl)
{
if (!m_gnaDts)
{
m_gnaDts = GuezNasat::Interface::Dts::create(m_ddsConnector);
if (!m_gnaDts->enableNasat9Liner())
{
ERROR_LOG() << "Could not enable GNA Nasat9Liner DTS for "
<< m_ddsConnector->getDefaultPartition();
m_gnaDts = nullptr;
return false;
}
}
return m_gnaDts->publish(nl);
}
void Participant2Dds::addParticipantToWatch(int participantId)
{
DEBUG_LOG() << "addParticipantToWatch: " << participantId;
m_participantsToWatch += participantId;
}
void Participant2Dds::removeParticipantToWatch(int participantId)
{
DEBUG_LOG() << "removeParticipantToWatch: " << participantId;
m_participantsToWatch -= participantId;
}
int Participant2Dds::partyId(int participantId) const
{
auto ret = -1;
std::function<bool(const ParticipantManagement::Participant&)> cb = [participantId, &ret](const ParticipantManagement::Participant &p)
{
if (p.id() != participantId)
return false;
ret = p.partyId();
return true;
};
m_ppmDtc->participants(cb);
return ret;
}
void Participant2Dds::onParticipantChanged(const ParticipantManagement::Participant &data, DataModification modType)
{
if (modType == DataModification::eRemoved)
return;
DEBUG_LOG() << "onParticipantChanged: " << data.id()
<< ", " << m_participantsToWatch.contains(data.id())
<< ", " << m_participantsToWatch.size()
<< ", " << m_participantsToWatch.contains(data.id())
<< ", " << data.isDeleted();
if (!m_participantsToWatch.contains(data.id()))
return;
if (data.isDeleted())
emit participantRemoved(m_ddsConnector->getPartitionId(), data.id());
}
DdsHandler::DdsHandler(const std::shared_ptr<DDSConnector::DdsConnector> &ddsConnector)
: m_ddsConnector(std::make_shared<DDSConnector::DdsConnector>(ddsConnector->getDomainParticipant(), IDL::PartitionType::AllExercises))
{
DEBUG_LOG() << "DdsHandler(" << m_ddsConnector->getDomainId() << ") for partition: " << m_ddsConnector->getDefaultPartition();
}
bool DdsHandler::init(const QStringList &qosFileList)
{
INFO_LOG() << "--- Start GuezNasat DDSHandler.";
if (!m_ddsConnector->init(qosFileList))
{
ERROR_LOG() << "Error initializing dds connections - aborting";
return false;
}
m_ddsConnector->initPublisherSubscriber();
m_ddsDts = GuezNasat::Interface::Dts::create(m_ddsConnector);
bool bRet = m_ddsDts->enableNasatAircraft() &&
m_ddsDts->enableNasatAircraftParticipant();
INFO_LOG() << "Dts initialised: " << bRet;
m_ddsFts = GuezNasat::Interface::Fts::create(m_ddsConnector);
bRet &= m_ddsFts->enableAll();
INFO_LOG() << "Fts initialised: " << bRet;
m_exmDtc = ExerciseManagement::Interface::Dtc::create(m_ddsConnector);
bRet &= m_exmDtc->enableExercise();
INFO_LOG() << "EXM Dtc initialised: " << bRet;
m_pdmDtc = ProjectDataManagement::Interface::Dtc::create(m_ddsConnector);
bRet &= m_pdmDtc->enableChargeType();
INFO_LOG() << "PDM Dtc initialised: " << bRet;
return bRet;
}
std::shared_ptr<Participant2Dds> DdsHandler::ddsParticipant(int exerciseId)
{
auto it = m_nasatParticipant2Dds.find(exerciseId);
if (it != m_nasatParticipant2Dds.end())
{
auto ret = it.value().lock();
if (ret)
return ret;
m_nasatParticipant2Dds.erase(it);
}
auto ret = std::make_shared<Participant2Dds>(m_ddsConnector->getDomainParticipant(), exerciseId);
m_nasatParticipant2Dds[exerciseId] = ret;
return ret;
}
}