/** * WebSocketServer to publish Events * $Id$ * $HeadURL$ * $Author$ * Created by Christian Ehrlicher, SLSE, 2017-02-06 */ #pragma once #include #include #include #include #include #include #include "logger.h" class QTimer; class QUrl; class QWebSocket; class QWebSocketServer; namespace ExerciseEventManagement { class WebSocketEventServer : public QObject { Q_OBJECT public: WebSocketEventServer(const QSqlDatabase &db, QObject *parent = nullptr); ~WebSocketEventServer(); bool listen(const QPair &portRange); bool listen(quint16 port); quint16 listenPort() const; void sendEvent(const QJsonObject &obj); private: void onNewConnection(); void onSocketDisconnected(); void onCleanupLiveHistory(); void historyDataRequested(const QSqlDatabase &db, QWebSocket *ws, const QUrl &requestUrl); private: QSet m_liveSockets; QMap> m_liveHistory; QWebSocketServer *m_wsServer; QTimer *m_cleanupTimer; QSqlDatabase m_db; NGL::INGLLogger &m_logger; }; } // namespace ExerciseEventManagement