#pragma once #include #include #include #include #include #include #include #include #include #include #include #include "logger.h" namespace GuezNasat { class Participant2Dds final : public QObject { Q_OBJECT public: Participant2Dds(const dds::domain::DomainParticipant &domainParticipant, int exerciseId); bool publish(const TrainingAreaBase::EquipmentPosition &pos); bool publish(const AreaEffectSimulation::AirSupportImpactModifyRequest &req, AreaEffectSimulation::Interface::Ftc::AirSupportImpactModifyReplyHandler *handler); bool publish(const AreaEffectSimulation::ExplosionClusterModifyRequest &req, AreaEffectSimulation::Interface::Ftc::ExplosionClusterModifyReplyHandler *handler); bool publish(const GuezNasat::Nasat9Liner &nl); void addParticipantToWatch(int participantId); void removeParticipantToWatch(int participantId); int partyId(int participantId) const; Q_SIGNALS: void participantRemoved(int exerciseId, int participantId); private: NGL::INGLLogger &m_logger; void onParticipantChanged(const ParticipantManagement::Participant &data, DataModification modType); private: std::shared_ptr m_ddsConnector; std::shared_ptr m_tabDts; std::shared_ptr m_aesFtc; std::shared_ptr m_ppmDtc; std::shared_ptr m_gnaDts; QSet m_participantsToWatch; }; class DdsHandler final { public: explicit DdsHandler(const std::shared_ptr &ddsConnector); bool init(const QStringList &qosFileList = QStringList()); std::shared_ptr dts() const { return m_ddsDts; } std::shared_ptr fts() const { return m_ddsFts; } std::shared_ptr exmDtc() const { return m_exmDtc; } std::shared_ptr pdmDtc() const { return m_pdmDtc; } std::shared_ptr ddsParticipant(int exerciseId); private: std::shared_ptr m_ddsConnector; std::shared_ptr m_ddsDts; std::shared_ptr m_ddsFts; std::shared_ptr m_exmDtc; std::shared_ptr m_aesFtc; std::shared_ptr m_pdmDtc; QHash> m_nasatParticipant2Dds; // Qt5 declared m_logger in *both* classes of this header (Participant2Dds at line 54 // and DdsHandler at line 79). A dedup pass kept only one of them, which left // DdsHandler's DEBUG_LOG(m_logger) uses in dds_handler.cpp without a member. Restored // to match the Qt5 declaration; this is fidelity, not a new member. NGL::INGLLogger &m_logger; }; }