/** * Websocket interface to participant positions * $Id$ * $HeadURL$ * $Author$ * Created by Justus Hertel, SLSE, 2017-01-11 */ #pragma once #include #include #include #include "logger.h" namespace ParticipantManagement { class WebSocketHandler : public QObject { Q_OBJECT public: explicit WebSocketHandler(QObject *parent = nullptr); ~WebSocketHandler(); bool init(quint16 listenPort = 0); bool init(const QPair &portRange); bool isConnected() const { return !m_webSockets.isEmpty(); } quint16 listenPort() const { return m_webSocketServer->serverPort(); } bool sendPosition(const ParticipantPosition& participantPosition, int equipmentNumber) const; private: bool sendTelegramInternal(const ParticipantPosition& pos, int eqNo) const; private Q_SLOTS: void onNewConnection(); void onWebSocketDisconnected(); private: QWebSocketServer* m_webSocketServer = nullptr; QVector m_webSockets; LOGGER_T m_logger; }; }