base task and taskmanager class

This commit is contained in:
itsmattkc
2019-06-27 11:03:08 -07:00
parent e435f6ee83
commit 8117e13c15
8 changed files with 173 additions and 6 deletions
+30
View File
@@ -20,6 +20,7 @@
#include "taskmanager.h"
#include <QDebug>
#include <QThread>
TaskManager olive::task_manager;
@@ -28,3 +29,32 @@ TaskManager::TaskManager()
{
maximum_task_count_ = QThread::idealThreadCount();
}
void TaskManager::AddTask(Task* t)
{
connect(t, SIGNAL(StatusChanged(Task::Status)), this, SLOT(TaskCallback(Task::Status)));
tasks_.append(t);
if (tasks_.size() < maximum_task_count_) {
t->Start();
}
}
void TaskManager::TaskCallback(Task::Status status)
{
switch (status) {
case Task::kWaiting:
qDebug() << sender() << "is waiting...";
break;
case Task::kWorking:
qDebug() << sender() << "is working...";
break;
case Task::kFinished:
qDebug() << sender() << "finished successfully.";
break;
case Task::kError:
qDebug() << sender() << "failed:" << static_cast<Task*>(sender())->error();
break;
}
}