From 74293535b8d98673e27eebadceef802f863a494c Mon Sep 17 00:00:00 2001 From: Michael Zanetti Date: Tue, 13 Nov 2018 23:01:09 +0100 Subject: [PATCH] fix it --- libnymea-core/debugserverhandler.cpp | 53 ++++++++-------------------- libnymea-core/debugserverhandler.h | 7 ++-- 2 files changed, 19 insertions(+), 41 deletions(-) diff --git a/libnymea-core/debugserverhandler.cpp b/libnymea-core/debugserverhandler.cpp index 92cf1f12..84a2c595 100644 --- a/libnymea-core/debugserverhandler.cpp +++ b/libnymea-core/debugserverhandler.cpp @@ -31,6 +31,9 @@ #include +QtMessageHandler DebugServerHandler::s_oldLogMessageHandler = nullptr; +QList DebugServerHandler::s_websocketClients; + namespace nymeaserver { DebugServerHandler::DebugServerHandler(QObject *parent) : @@ -52,7 +55,7 @@ DebugServerHandler::DebugServerHandler(QObject *parent) : //m_timer->start(); - qInstallMessageHandler(&DebugServerHandler::consoleLogHandler); + s_oldLogMessageHandler = qInstallMessageHandler(&logMessageHandler); } HttpReply *DebugServerHandler::processDebugRequest(const QString &requestPath) @@ -337,6 +340,14 @@ HttpReply *DebugServerHandler::processDebugRequest(const QString &requestPath) return reply; } +void DebugServerHandler::logMessageHandler(QtMsgType type, const QMessageLogContext &context, const QString &message) { + s_oldLogMessageHandler(type, context, message); + + foreach (QWebSocket *client, s_websocketClients) { + client->sendTextMessage(message + "\n"); + } +} + QByteArray DebugServerHandler::loadResourceData(const QString &resourceFileName) { QFile resourceFile(QString(":%1").arg(resourceFileName)); @@ -1198,43 +1209,9 @@ QByteArray DebugServerHandler::createErrorXmlDocument(HttpReply::HttpStatusCode return data; } -void consoleLogHandler(QtMsgType type, const QMessageLogContext& context, const QString& message) -{ - QString messageString; - QString timeString = QDateTime::currentDateTime().toString("yyyy.MM.dd hh:mm:ss.zzz"); - switch (type) { - case QtInfoMsg: - messageString = QString(" I %1 | %2: %3").arg(timeString).arg(context.category).arg(message); - fprintf(stdout, " I | %s: %s\n", context.category, message.toUtf8().data()); - break; - case QtDebugMsg: - messageString = QString(" I %1 | %2: %3").arg(timeString).arg(context.category).arg(message); - fprintf(stdout, " I | %s: %s\n", context.category, message.toUtf8().data()); - break; - case QtWarningMsg: - messageString = QString(" W %1 | %2: %3").arg(timeString).arg(context.category).arg(message); - fprintf(stderr, " W | %s: %s\n", context.category, message.toUtf8().data()); - break; - case QtCriticalMsg: - messageString = QString(" C %1 | %2: %3").arg(timeString).arg(context.category).arg(message); - fprintf(stderr, " C | %s: %s\n", context.category, message.toUtf8().data()); - break; - case QtFatalMsg: - messageString = QString(" F %1 | %2: %3").arg(timeString).arg(context.category).arg(message); - fprintf(stderr, " F | %s: %s\n", context.category, message.toUtf8().data()); - break; - } - fflush(stdout); - fflush(stderr); - - foreach (QWebSocket *client, DebugServerHandler::s_websocketClients) { - client->sendTextMessage(messageString + "\r\n"); - } -} - void DebugServerHandler::onTimeout() { - foreach (QWebSocket *client, DebugServerHandler::s_websocketClients) { + foreach (QWebSocket *client, s_websocketClients) { client->sendTextMessage("Hallo!\n"); } } @@ -1242,7 +1219,7 @@ void DebugServerHandler::onTimeout() void DebugServerHandler::onWebsocketClientConnected() { QWebSocket *client = m_websocketServer->nextPendingConnection(); - DebugServerHandler::s_websocketClients.append(client); + s_websocketClients.append(client); qCDebug(dcWebServer()) << "DebugServer: New websocket client connected:" << client->peerAddress().toString(); connect(client, SIGNAL(error(QAbstractSocket::SocketError)), this, SLOT(onWebsocketClientError(QAbstractSocket::SocketError))); @@ -1253,7 +1230,7 @@ void DebugServerHandler::onWebsocketClientDisconnected() { QWebSocket *client = static_cast(sender()); qCDebug(dcWebServer()) << "DebugServer: Websocket client disconnected" << client->peerAddress().toString(); - DebugServerHandler::s_websocketClients.removeAll(client); + s_websocketClients.removeAll(client); client->deleteLater(); } diff --git a/libnymea-core/debugserverhandler.h b/libnymea-core/debugserverhandler.h index 8260f493..582c5e8b 100644 --- a/libnymea-core/debugserverhandler.h +++ b/libnymea-core/debugserverhandler.h @@ -38,10 +38,11 @@ public: HttpReply *processDebugRequest(const QString &requestPath); - static QList s_websocketClients; - static void consoleLogHandler(QtMsgType type, const QMessageLogContext& context, const QString& message); - private: + static QtMessageHandler s_oldLogMessageHandler; + static QList s_websocketClients; + static void logMessageHandler(QtMsgType type, const QMessageLogContext &context, const QString &message); + QTimer *m_timer = nullptr; QWebSocketServer *m_websocketServer = nullptr;