/** * @RDE_HEADER@ * The ConnectionHandler class functions as a WebSocket server and manages incoming client connections. * $Id$ * $HeadURL$ * $Author$ * Created by Hannes Fritsche, SLSE, 2017-09-07 */ #pragma once #include #include #include "../Messages/reply_message.h" #include "logger.h" class QWebSocketServer; namespace CombatNetRadio { namespace WebSocketInterface { namespace Messages { class MessageTransmitter; } namespace Connection { class ClientConnection; class ConnectionHandler : public QObject { Q_OBJECT public: explicit ConnectionHandler(); ~ConnectionHandler(); bool init(); Q_SIGNALS: void newTextMessageFromClient(Messages::MessageTransmitter *transmitter, const QString &message); void lastConnectionClosed(); void newClientConnection(qint64 id); void clientConnectionClosed(qint64 id); void clearFrequencyPlanningStatus(); public Q_SLOTS: void onUpdate(); void onPositions(const Messages::ReplyMessage &positionsCnr); private Q_SLOTS: void onNewMessage(Messages::MessageTransmitter *transmitter, const QString &message); void onServerError(QWebSocketProtocol::CloseCode closeCode); void onNewConnection(); void onDisconnected(ClientConnection *conn); private: // attributes QWebSocketServer *m_server; QVector m_connections; LOGGER_T m_logger; }; } // namespace Connection } // namespace WebSocketInterface } // namespace CombatNetRadio