/** * MainHandler for AssetManagement * $Id$ * $HeadURL$ * $Author$ */ #include "main_handler.h" #include "handler_training_area.h" #include "handler_workstation_logout.h" #include "handler_asset.h" #include "handler_location.h" #include "handler_relay_info.h" #include "settings.h" #include #include #include namespace AssetManagement { MainHandler::MainHandler(QObject *parent) : QObject(parent) , m_handlerTrainingArea(nullptr) , m_handlerWorkstationLogout(nullptr) , m_handlerAsset(nullptr) , m_handlerLocation(nullptr) , m_handlerRelayInfo(nullptr) , m_ddsHandler(nullptr) , m_dbHandler(nullptr) , m_handlerWebSocket(nullptr) , m_logger(getLogger("MainHandler")) {} MainHandler::~MainHandler() { m_handlerTrainingArea = nullptr; m_handlerWorkstationLogout = nullptr; m_handlerAsset = nullptr; m_handlerLocation = nullptr; m_handlerRelayInfo = nullptr; m_handlerWebSocket = nullptr; m_ddsHandler = nullptr; m_dbHandler = nullptr; } bool MainHandler::init(int domainId) { // initialize database m_dbHandler = std::make_shared(); if (!m_dbHandler->init(0, 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); if (!m_ddsHandler->init()) { ERROR_LOG(m_logger) << "Initialisation ddsHandler failed."; return false; } DEBUG_LOG(m_logger) << "Initialisation ddsHandler succesful."; // read project specific data from database // publish project specific data // initialize all handlers if (!initAsmHandler()) { ERROR_LOG(m_logger) << "Initialisation AsmHandler failed."; return false; } DEBUG_LOG(m_logger) << "Initialisation AsmHandler succesful."; m_ddsHandler->pacemaker()->setNewState(Core::RunningState::Running); return true; } bool MainHandler::initAsmHandler() { DEBUG_LOG(m_logger) << "Start Initialisation AsmHandler"; // TrainingArea m_handlerTrainingArea = std::make_shared(this); DEBUG_LOG(m_logger) << "Reset HandlerTrainingArea succesful."; if (!m_handlerTrainingArea->init()) { ERROR_LOG(m_logger) << "Initialisation of HandlerTrainingArea failed."; return false; } DEBUG_LOG(m_logger) << "Initialisation HandlerTrainingArea succesful."; // WorkstationLogout m_handlerWorkstationLogout = std::make_shared(this); DEBUG_LOG(m_logger) << "Reset HandlerWorkstationLogout succesful."; if (!m_handlerWorkstationLogout->init()) { ERROR_LOG(m_logger) << "Initialisation of HandlerWorkstationLogout failed."; return false; } DEBUG_LOG(m_logger) << "Initialisation HandlerWorkstationLogout succesful."; // Asset m_handlerAsset = std::make_shared(this); DEBUG_LOG(m_logger) << "Reset HandlerAsset succesful."; if (!m_handlerAsset->init()) { ERROR_LOG(m_logger) << "Initialisation of HandlerAsset failed."; return false; } DEBUG_LOG(m_logger) << "Initialisation HandlerAsset succesful."; // Location m_handlerLocation = std::make_shared(this); DEBUG_LOG(m_logger) << "Reset HandlerLocation succesful."; if (!m_handlerLocation->init()) { ERROR_LOG(m_logger) << "Initialisation of HandlerLocation failed."; return false; } DEBUG_LOG(m_logger) << "Initialisation HandlerLocation succesful."; // RelayInfo m_handlerRelayInfo = std::make_shared(this); DEBUG_LOG(m_logger) << "Reset HandlerRelayInfo succesful."; if (!m_handlerRelayInfo->init()) { ERROR_LOG(m_logger) << "Initialisation of HandlerRelayInfo failed."; return false; } DEBUG_LOG(m_logger) << "Initialisation HandlerRelayInfo succesful."; // WebSocketServer m_handlerWebSocket = std::make_shared(this); DEBUG_LOG(m_logger) << "Reset WebSocketInterfaceHandler succesful."; if (!m_handlerWebSocket->init()) { ERROR_LOG(m_logger) << "Initialisation WebSocketInterfaceHandler failed."; return false; } m_ddsHandler->pacemaker()->addPort(m_handlerWebSocket->serverWebSocketPort(), Core::PortType::WebSocketServer); DEBUG_LOG(m_logger) << "Initialisation WebSocketInterfaceHandler succesful."; return true; } std::shared_ptr MainHandler::db() const { return m_dbHandler->db(); } int MainHandler::exerciseId() const { if (dds()) return dds()->ddsConnector()->getPartitionId(); return -1; } } // namespace Assetmanagement