/** * @RDE_HEADER@ * MainHandler for FileManagement * $Id$ * $HeadURL$ * $Author$ * Created by Iuliana Ojog, SLSE, 2017-04-03 */ #include "main_handler.h" #include "handler_file_type_info.h" #include "handler_folder.h" #include "handler_file_content.h" #include "settings.h" //#include "thp_script_server.h" #include "thp_script_httq.h" #include "pdf_server.h" #include #include namespace FileManagement { MainHandler::MainHandler(QObject *parent) : QObject(parent) , m_ddsHandler(nullptr) , m_dbHandler(nullptr) , m_handlerFileTypeInfo(nullptr) , m_handlerFolder(nullptr) , m_handlerFileContent(nullptr) , m_handlerWebSocket(nullptr) , m_logger(getLogger("MainHandler")) {} MainHandler::~MainHandler() { m_thpScriptServer = nullptr; m_pdfServer = nullptr; m_handlerFileTypeInfo = nullptr; m_handlerFolder = nullptr; m_handlerFileContent = 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.reset(new DdsHandler(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 (!initFlmHandler()) { ERROR_LOG(m_logger) << "Initialisation FlmHandler failed."; return false; } DEBUG_LOG(m_logger) << "Initialisation FlmHandler succesful."; m_ddsHandler->pacemaker()->setNewState(Core::RunningState::Running); return true; } int MainHandler::exerciseId() const { if (dds()) return dds()->ddsConnector()->getPartitionId(); return -1; } bool MainHandler::initFlmHandler() { DEBUG_LOG(m_logger) << "Start Initialisation FlmHandler"; // FileTypeInfo m_handlerFileTypeInfo.reset(new HandlerFileTypeInfo(this)); DEBUG_LOG(m_logger) << "Reset HandlerFileTypeInfo successful."; if (!m_handlerFileTypeInfo->init()) { ERROR_LOG(m_logger) << "Initialisation of HandlerFileTypeInfo failed."; return false; } DEBUG_LOG(m_logger) << "Initialisation HandlerFileTypeInfo succesful."; // Folder m_handlerFolder.reset(new HandlerFolder(this)); DEBUG_LOG(m_logger) << "Reset HandlerFolder successful."; if (!m_handlerFolder->init()) { ERROR_LOG(m_logger) << "Initialisation of HandlerFolder failed."; return false; } DEBUG_LOG(m_logger) << "Initialisation HandlerFolder successful."; // FileContent m_handlerFileContent.reset(new HandlerFileContent(this)); DEBUG_LOG(m_logger) << "Reset HandlerFileContent successful."; if (!m_handlerFileContent->init()) { ERROR_LOG(m_logger) << "Initialisation of HandlerFileContent failed."; return false; } DEBUG_LOG(m_logger) << "Initialisation HandlerFileContent successful."; // WebSocketServer m_handlerWebSocket = std::make_shared(this); DEBUG_LOG(m_logger) << "Reset WebSocketInterfaceHandler successful."; 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 successful."; m_thpScriptServer.reset(new ThpScriptServer(this)); DEBUG_LOG(m_logger) << "Initialisation ThpTcpScriptServer successful."; m_pdfServer.reset(new PdfServer(this, this)); if (!m_pdfServer->init()) { ERROR_LOG(m_logger) << "Initialisation PdfServer failed."; return false; } DEBUG_LOG(m_logger) << "Initialisation PdfServer successful."; return true; } } // namespace FileManagement