diff options
author | Petr Mrázek <peterix@gmail.com> | 2017-07-07 19:46:56 +0200 |
---|---|---|
committer | Petr Mrázek <peterix@gmail.com> | 2017-07-07 19:46:56 +0200 |
commit | e5b4b5d2954d72f0323ced8e7d14f5ce9606e4cb (patch) | |
tree | 5baef66192a4d73fbee3ff9652e55b121882ec76 /api/logic/tasks | |
parent | fbeceaa98cc252c671ef6a9d26837973cc9bffa3 (diff) | |
download | MultiMC-e5b4b5d2954d72f0323ced8e7d14f5ce9606e4cb.tar MultiMC-e5b4b5d2954d72f0323ced8e7d14f5ce9606e4cb.tar.gz MultiMC-e5b4b5d2954d72f0323ced8e7d14f5ce9606e4cb.tar.lz MultiMC-e5b4b5d2954d72f0323ced8e7d14f5ce9606e4cb.tar.xz MultiMC-e5b4b5d2954d72f0323ced8e7d14f5ce9606e4cb.zip |
GH-1927 Add more specific task status logging
* Tasks are now described by class name and object name (or memory address).
* Tasks starts are logged.
* Aborted tasks are now treated just as the other cases.
Diffstat (limited to 'api/logic/tasks')
-rw-r--r-- | api/logic/tasks/Task.cpp | 54 | ||||
-rw-r--r-- | api/logic/tasks/Task.h | 4 |
2 files changed, 55 insertions, 3 deletions
diff --git a/api/logic/tasks/Task.cpp b/api/logic/tasks/Task.cpp index 94a4d428..bc48e902 100644 --- a/api/logic/tasks/Task.cpp +++ b/api/logic/tasks/Task.cpp @@ -41,31 +41,79 @@ void Task::start() { m_running = true; emit started(); + qDebug() << "Task" << describe() << "started"; executeTask(); } void Task::emitFailed(QString reason) { + // Don't fail twice. + if (!m_running) + { + qCritical() << "Task" << describe() << "failed while not running!!!!: " << reason; + return; + } m_running = false; m_finished = true; m_succeeded = false; m_failReason = reason; - qCritical() << "Task failed: " << reason; + qCritical() << "Task" << describe() << "failed: " << reason; emit failed(reason); emit finished(); } +void Task::emitAborted() +{ + // Don't abort twice. + if (!m_running) + { + qCritical() << "Task" << describe() << "aborted while not running!!!!"; + return; + } + m_running = false; + m_finished = true; + m_succeeded = false; + m_failReason = "Aborted."; + qDebug() << "Task" << describe() << "aborted."; + emit failed(m_failReason); + emit finished(); +} + void Task::emitSucceeded() { - if (!m_running) { return; } // Don't succeed twice. + // Don't succeed twice. + if (!m_running) + { + qCritical() << "Task" << describe() << "succeeded while not running!!!!"; + return; + } m_running = false; m_finished = true; m_succeeded = true; - qDebug() << "Task succeeded"; + qDebug() << "Task" << describe() << "succeeded"; emit succeeded(); emit finished(); } +QString Task::describe() +{ + QString outStr; + QTextStream out(&outStr); + out << metaObject()->className() << QChar('('); + auto name = objectName(); + if(name.isEmpty()) + { + out << QString("0x%1").arg((quintptr)this, 0, 16); + } + else + { + out << name; + } + out << QChar(')'); + out.flush(); + return outStr; +} + bool Task::isRunning() const { return m_running; diff --git a/api/logic/tasks/Task.h b/api/logic/tasks/Task.h index 3654ed24..f54996c1 100644 --- a/api/logic/tasks/Task.h +++ b/api/logic/tasks/Task.h @@ -54,6 +54,9 @@ public: return m_progressTotal; } +private: + QString describe(); + signals: void started(); void progress(qint64 current, qint64 total); @@ -71,6 +74,7 @@ protected: protected slots: virtual void emitSucceeded(); + virtual void emitAborted(); virtual void emitFailed(QString reason); public slots: |