/** * MainHandler for AereaEffectSimulation * $Id$ * $HeadURL$ * $Author$ */ #pragma once #include #include "logger.h" #include "avm_db.h" #include namespace NGLDB { template class DbServiceHandler; } namespace AudioVideoManagement { using DbHandler = NGLDB::DbServiceHandler; class DdsHandler; class AVControl; class FMControl; class ExercisesHandler; class HandlerMenuStruct; class TvcHandler; class CnrHandler; class FrequencySetHandler; class FrequencyPlanningHandler; class CnrTvcProfileHandler; class ActiveExercises; class StreamNameMappingPublisher; class HandlerVideoReceiver; class HandlerVideoTeam; class HandlerFrequencyPlanningStatus; namespace Interface { class Dts; class Fts; } class MainHandler : public QObject { Q_OBJECT public: explicit MainHandler(QObject *parent = nullptr); ~MainHandler(); bool init(int domainId); int exerciseId(); DdsHandler *ddsHandler() { return m_ddsHandler.get(); } DatabaseInterface *db() { return m_dbInterface.get(); } AVControl *avControl() { return m_avControl.get(); } FMControl *fmControl() { return m_fmControl.get(); } ExercisesHandler *exHandler() { return m_exHandler.get(); } HandlerVideoTeam *videoTeamHandler() { return m_videoTeamHandler.get(); } HandlerFrequencyPlanningStatus *frequencyPlanningStatusHandler() { return m_frequencyPlanningStatusHandler.get(); } CnrHandler *cnrHandler() { return m_cnrHandler.get(); } private: std::unique_ptr m_ddsHandler; std::unique_ptr m_dbHandler; std::shared_ptr m_dbInterface; //!< just to make sure we own a reference to it; we can then simply forward a plain pointer to our clients std::unique_ptr m_avControl; std::unique_ptr m_fmControl; std::unique_ptr m_exHandler; std::unique_ptr m_activeExercises; std::unique_ptr m_menuStructHandler; std::unique_ptr m_cnrHandler; std::unique_ptr m_tvcHandler; std::unique_ptr m_frequencySetHandler; std::unique_ptr m_frequencyPlanningHandler; std::unique_ptr m_cnrTvcProfileHandler; std::unique_ptr m_streamNameMappingPublisher; std::unique_ptr m_videoReceiverHandler; std::unique_ptr m_videoTeamHandler; std::unique_ptr m_frequencyPlanningStatusHandler; NGL::INGLLogger &m_logger; }; } // namespace AudioVideoManagement