/** * @RDE_HEADER@ * Handler for the WebSocket Interface * $Id$ * $HeadURL$ * $Author$ * Created by Philipp Dassow, SLST, 2017-12-05 */ #include "ws_base_data_interface_handler.h" #include "main_handler.h" #include "data_manager.h" #include "WsBaseDataInterface/Messages/client_message.h" #include namespace WarehouseGuez { namespace WsBaseDataInterface { WsBaseDataInterfaceHandler::WsBaseDataInterfaceHandler(MainHandler *mainHandler, QObject *parent) : QObject(parent) , m_webSocketServer(nullptr) , m_messageFactory(nullptr) , m_dataManager(nullptr) , m_mainHandler(mainHandler) , m_logger(getLogger("WsBaseDataInterfaceHandler")) { } WsBaseDataInterfaceHandler::~WsBaseDataInterfaceHandler() { cleanup(); } bool WsBaseDataInterfaceHandler::init() { cleanup(); DEBUG_LOG(m_logger) << "... ok"; DEBUG_LOG(m_logger) << "Initialising DataManager"; m_dataManager = new DataManager(m_mainHandler); if (!m_dataManager->init()) { ERROR_LOG(m_logger) << "Failed to initialise DataManager"; return false; } DEBUG_LOG(m_logger) << "... ok"; m_messageFactory = new Messages::ClientMessageFactory(m_dataManager); m_webSocketServer = new LtsWebSocket::LtsWebSocketServer(m_messageFactory, this); DEBUG_LOG(m_logger) << "Initialising LtsWebSocketServer"; int port = NGL::Connections::port(NGL::Connections::eConnection::ZSLV); ERROR_LOG(m_logger) << "Port: " << port; if (!m_webSocketServer->init(QStringLiteral("localhost"), port)) { ERROR_LOG(m_logger) << "Failed to initialise LtsWebSocketServer"; return false; } DEBUG_LOG(m_logger) << "... ok"; DEBUG_LOG(m_logger) << "Connection signals and slots"; m_dataManager->setWebSocketServer(m_webSocketServer); return true; } void WsBaseDataInterfaceHandler::cleanup() { delete m_webSocketServer; delete m_messageFactory; delete m_dataManager; } void WsBaseDataInterfaceHandler::requestExercisesFromExcon() { m_webSocketServer->sendToAllClients(new Messages::ExerciseRequest); } void WsBaseDataInterfaceHandler::requestParticipantsFromExcon(int exerciseId) { m_webSocketServer->sendToAllClients(new Messages::ParticipantsRequest(exerciseId)); } void WsBaseDataInterfaceHandler::sendEquipmentTypes() { m_webSocketServer->sendToAllClients(m_dataManager->equipmentTypes(QStringLiteral("spontaneous"))); } } // namespace WsBaseDataInterface } // namespace WarehouseGuez