/** * MainHandler for OcSituationServer * $Id$ * $HeadURL$ * $Author$ * Created by Philipp Dassow, NLST, 14-02-2018 */ #include "main_handler.h" #include #include "handler_oc_data.h" #include "position_converter.h" #include "settings.h" namespace OcSituationServer { MainHandler::MainHandler(QObject *parent) : QObject(parent) , m_exerciseId(0) , m_ddsHandler(nullptr) , m_dbHandler(nullptr) , m_handlerOcData(nullptr) , m_positionConverter(nullptr) , m_aesDtc(nullptr) , m_evlDtc(nullptr) , m_evlFtc(nullptr) , m_gimDtc(nullptr) , m_msgFtc(nullptr) , m_ppmDtc(nullptr) , m_ppmFtc(nullptr) , m_tabDtc(nullptr) , m_tabFtc(nullptr) , m_logger(getLogger("MainHandler")) {} MainHandler::~MainHandler() { m_handlerOcData = nullptr; m_positionConverter = nullptr; m_aesDtc = nullptr; m_evlDtc = nullptr; m_evlFtc = nullptr; m_gimDtc = nullptr; m_msgFtc = nullptr; m_ppmDtc = nullptr; m_ppmFtc = nullptr; m_tabDtc = nullptr; m_tabFtc = nullptr; m_ddsHandler = nullptr; m_dbHandler = nullptr; } bool MainHandler::init(int domainId, int exerciseId) { m_exerciseId = exerciseId; // register TrainingAreaBase::SendOcDataRequest for signal/slot connection from OC-threads qRegisterMetaType("ParticipantManagement::Participant"); qRegisterMetaType("ParticipantManagement::DynamicParticipantData"); qRegisterMetaType("ParticipantManagement::ParticipantPosition"); qRegisterMetaType("TrainingAreaBase::SendOcDataRequest"); qRegisterMetaType("DataModification"); // initialize database m_dbHandler = std::make_shared(); if (!m_dbHandler->init(exerciseId, Settings::settings())) { ERROR_LOG(m_logger) << "Initialisation dbHandler failed."; return false; } DEBUG_LOG(m_logger) << "Initialisation dbHandler succesful."; // initialize DDS m_ddsHandler = std::make_shared(domainId, exerciseId); if (!m_ddsHandler->init()) { ERROR_LOG(m_logger) << "Initialisation ddsHandler failed."; return false; } DEBUG_LOG(m_logger) << "Initialisation ddsHandler succesful."; // create AES Dtc m_aesDtc = AreaEffectSimulation::Interface::Dtc::create(m_ddsHandler->dds()); DEBUG_LOG(m_logger) << "Created AES Dtc"; // create EVL Dtc m_evlDtc = Evaluations::Interface::Dtc::create(m_ddsHandler->dds()); DEBUG_LOG(m_logger) << "Created EVL Dtc"; // create EVL Ftc m_evlFtc = Evaluations::Interface::Ftc::create(m_ddsHandler->dds()); DEBUG_LOG(m_logger) << "Created EVL Ftc"; // create GIM Dtc m_gimDtc = GuezIedManagement::Interface::Dtc::create(m_ddsHandler->dds()); DEBUG_LOG(m_logger) << "Created GIM Dtc"; // create MSG Ftc m_msgFtc = Messaging::Interface::Ftc::create(m_ddsHandler->dds()); DEBUG_LOG(m_logger) << "Created Msg Ftc"; // create PPM Dtc m_ppmDtc = ParticipantManagement::Interface::Dtc::create(m_ddsHandler->dds()); DEBUG_LOG(m_logger) << "Created PPM Dtc"; // create PPM Ftc m_ppmFtc = ParticipantManagement::Interface::Ftc::create(m_ddsHandler->dds()); DEBUG_LOG(m_logger) << "Created PPM Dtc"; // create TAB Dtc m_tabDtc = TrainingAreaBase::Interface::Dtc::create(m_ddsHandler->dds()); DEBUG_LOG(m_logger) << "Created TAB Dtc"; // create TAB Ftc m_tabFtc = TrainingAreaBase::Interface::Ftc::create(m_ddsHandler->dds()); DEBUG_LOG(m_logger) << "Created TAB Ftc"; // create position converter m_positionConverter = std::make_shared(this); // create handler oc-data m_handlerOcData = std::make_shared(this, this); if (!m_handlerOcData->init()) { ERROR_LOG(m_logger) << "Initialisation HandlerOcData failed."; return false; } m_ddsHandler->pacemaker()->setNewState(Core::RunningState::Running); return true; } } // namespace OcSituationServer