/** * MainHandler for ExerciseManagement * $Id$ * $HeadURL$ * $Author$ */ #include "main_handler.h" #include "handler_access_control_level.h" #include "handler_operator.h" #include "handler_group.h" #include "handler_locked_topics.h" #include "handler_active_apps.h" #include "settings.h" #include #include #include namespace OperatorManagement { MainHandler::MainHandler() : m_logger(getLogger("MainHandler")) {} MainHandler::~MainHandler() { // destruction in reverse order: m_handlerActiveApps = nullptr; m_handlerLockedTopics = nullptr; m_handlerWebSocket = nullptr; m_handlerOperator = nullptr; m_handlerGroup = nullptr; m_handlerAcl = nullptr; // Finally 'serving' objects: 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; } // initialize DDS m_ddsHandler = std::make_shared(domainId); if (!m_ddsHandler->init()) return false; // read project specific data from database // publish project specific data // initialize the specific handler if (!initAclHandler()) return false; { DDSConnector::CoherentSet cs(m_ddsHandler->ddsConnector()); if (!initOperatorHandler()) return false; } if (!initGroupHandler()) return false; if (!initWebSocketHandler()) return false; if (!initLockedTopicsHandler()) return false; if (!initActiveApps()) return false; m_ddsHandler->pacemaker()->setNewState(Core::RunningState::Running); return true; } bool MainHandler::initAclHandler() { m_handlerAcl = std::make_shared(this); return m_handlerAcl->init(); } bool MainHandler::initOperatorHandler() { m_handlerOperator = std::make_shared(this); return m_handlerOperator->init(); } bool MainHandler::initGroupHandler() { m_handlerGroup = std::make_shared(this); return m_handlerGroup->init(); } bool MainHandler::initLockedTopicsHandler() { m_handlerLockedTopics = std::make_shared(*this); return m_handlerLockedTopics->init(); } bool MainHandler::initWebSocketHandler() { // 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; } bool MainHandler::initActiveApps() { m_handlerActiveApps = std::make_shared(this); return m_handlerActiveApps->init(); } std::shared_ptr MainHandler::db() const { return m_dbHandler->db(); } } // namespace OperatorManagement