]> git.tdb.fi Git - builder.git/blobdiff - source/internaltask.cpp
Refactor InternalTask to take a functor
[builder.git] / source / internaltask.cpp
index 5cbbd09ad0dc787e36cd37f3d729cc2e7c77fdbb..fc929ce02b2f843c2bd6de87331bbe081f11017c 100644 (file)
@@ -1,24 +1,19 @@
 #include "internaltask.h"
 
-InternalTask::InternalTask(Worker *w):
-       worker(w)
-{ }
-
 InternalTask::~InternalTask()
 {
-       worker->join();
-       delete worker;
+       worker.join();
 }
 
 void InternalTask::start()
 {
        prepare();
-       worker->launch();
+       worker.launch();
 }
 
 Task::Status InternalTask::check()
 {
-       Status result = worker->get_status();
+       Status result = worker.get_status();
        if(result!=RUNNING)
                signal_finished.emit(result==SUCCESS);
        return result;
@@ -32,6 +27,10 @@ Task::Status InternalTask::wait()
 }
 
 
-InternalTask::Worker::Worker():
-       status(Task::RUNNING)
-{ }
+void InternalTask::Worker::main()
+{
+       if(func())
+               status = Task::SUCCESS;
+       else
+               status = Task::ERROR;
+}