From 880fbb84acf853be8ac0c5a23ff0475e8ce6dff0 Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Wed, 22 Jun 2022 16:44:30 +0200 Subject: Add --console mode, to be used remotely --- src/consoleworker.cpp | 66 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 src/consoleworker.cpp (limited to 'src/consoleworker.cpp') diff --git a/src/consoleworker.cpp b/src/consoleworker.cpp new file mode 100644 index 0000000..a869725 --- /dev/null +++ b/src/consoleworker.cpp @@ -0,0 +1,66 @@ +#include "consoleworker.h" +#include "copythread.h" +#include "datasource/cpuload.h" +#include "datasource/networkspeed.h" + +#include +#include +#include + +ConsoleWorker::ConsoleWorker(QString fileName) : + _thread(nullptr), + _fileName(fileName), + _networkSource(nullptr) +{ + _timer.setInterval(200); + connect(&_timer, &QTimer::timeout, this, &ConsoleWorker::updateTimer); + QTimer::singleShot(1, [this]() { + QFile *file = new QFile(_fileName); + if (!file->open(QIODevice::ReadOnly)) { + puts(tr("Could not open %1 for reading.").arg(_fileName).toLocal8Bit().constData()); + return; + } + _networkSource = new NetworkSpeed(); + _thread = new CopyThread(file, this); + connect(_thread, &CopyThread::logMessage, this, &ConsoleWorker::logMessage, Qt::QueuedConnection); + connect(_thread, &CopyThread::finished, this, &ConsoleWorker::testFinished, Qt::QueuedConnection); + _timer.start(); + _thread->start(); + }); +} + +ConsoleWorker::~ConsoleWorker() +{ + delete _networkSource; +} + +void ConsoleWorker::logMessage(CopyThread::LogMessageId msgId, QString message) +{ + if (msgId == CopyThread::TestRandomStart) { + printf("+SEQ"); + } else if (msgId == CopyThread::TestFinished) { + printf("+RND"); + } + if (msgId == CopyThread::TestRandomStart || msgId == CopyThread::TestFinished) { + for (int i : _series) { + printf(",%i", i); + } + putchar('\n'); + } + _series.clear(); + puts(message.toLocal8Bit().constData()); +} + +void ConsoleWorker::testFinished() +{ + _timer.stop(); + delete _thread; + _thread = NULL; + QCoreApplication::instance()->quit(); +} + +void ConsoleWorker::updateTimer() +{ + int i = (int)_networkSource->read(); + _series.append(i); +} -- cgit v1.2.3-55-g7522