/** * DDS Handler for GuezNasat * $Id$ * $HeadURL$ * $Author$ * Created by hjl, SLSE, 2016-11-14 */ #pragma once #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: 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; NGL::INGLLogger &m_logger; }; 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; NGL::INGLLogger &m_logger; }; } // namespace GuezNasat