]> git.tdb.fi Git - builder.git/blob - source/internaltask.cpp
Refactor InternalTask to take a functor
[builder.git] / source / internaltask.cpp
1 #include "internaltask.h"
2
3 InternalTask::~InternalTask()
4 {
5         worker.join();
6 }
7
8 void InternalTask::start()
9 {
10         prepare();
11         worker.launch();
12 }
13
14 Task::Status InternalTask::check()
15 {
16         Status result = worker.get_status();
17         if(result!=RUNNING)
18                 signal_finished.emit(result==SUCCESS);
19         return result;
20 }
21
22 Task::Status InternalTask::wait()
23 {
24         Status result;
25         while((result = check())==RUNNING) ;
26         return result;
27 }
28
29
30 void InternalTask::Worker::main()
31 {
32         if(func())
33                 status = Task::SUCCESS;
34         else
35                 status = Task::ERROR;
36 }