summaryrefslogtreecommitdiffstats
path: root/api/logic/tasks
diff options
context:
space:
mode:
authorPetr Mrázek <peterix@gmail.com>2017-07-07 19:46:56 +0200
committerPetr Mrázek <peterix@gmail.com>2017-07-07 19:46:56 +0200
commite5b4b5d2954d72f0323ced8e7d14f5ce9606e4cb (patch)
tree5baef66192a4d73fbee3ff9652e55b121882ec76 /api/logic/tasks
parentfbeceaa98cc252c671ef6a9d26837973cc9bffa3 (diff)
downloadMultiMC-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.cpp54
-rw-r--r--api/logic/tasks/Task.h4
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: