/** * DdsHandler for CombatNetRadio * $Id$ * $HeadURL$ * $Author$ * Created by Hannes Fritsche, SLSE, 2017-09-05 */ #pragma once #include #include "logger.h" #include namespace Core { class Pacemaker; } namespace AudioVideoManagement { namespace Interface { class Dtc; class Ftc; } } namespace ExerciseManagement { namespace Interface { class Dtc; } } namespace InfrastructureManagement { namespace Interface { class Dtc; } } namespace AssetManagement { namespace Interface { class Dtc; } } namespace CombatNetRadio { class DdsHandler final { public: explicit DdsHandler(int domainId); ~DdsHandler() = default; bool init(const QStringList &qosFileList = QStringList()); /** * Must be called *after* init and *after* all DTC-consuming instances * have been setup. This is to avoid data races that otherwise could arise * when * - connecting to the onFooChanged() signal and * - shortly after that calling foo() to get all received entities so far. */ void enableDtcs(); dds::domain::DomainParticipant domainParticipant() const; Core::Pacemaker *pacemaker() const { return m_pacemaker.get(); } AssetManagement::Interface::Dtc *asmDtc() const { return m_asmDtc.get(); } AudioVideoManagement::Interface::Dtc *avmDtc() const { return m_avmDtc.get(); } AudioVideoManagement::Interface::Ftc *avmFtc() const { return m_avmFtc.get(); } ExerciseManagement::Interface::Dtc *exmDtc() const { return m_exmDtc.get(); } InfrastructureManagement::Interface::Dtc *ismDtc() const { return m_ismDtc.get(); } std::shared_ptr dds() const { return m_ddsConnector; } private: std::shared_ptr m_ddsConnector; std::unique_ptr m_pacemaker; std::shared_ptr m_asmDtc; std::shared_ptr m_avmDtc; std::shared_ptr m_avmFtc; std::shared_ptr m_exmDtc; std::shared_ptr m_ismDtc; NGL::INGLLogger &m_logger; }; } // namespace CombatNetRadio