Quark  0.1
TaskProcessor.h++
Go to the documentation of this file.
1 #ifndef __libquark_util_TaskProcessor_hxx
2 #define __libquark_util_TaskProcessor_hxx
3 
4 #include <QEvent>
5 #include <QMap>
6 #include <QMutex>
7 #include <QThread>
8 #include <QTimer>
9 
10 #include <quark/Quark.h++>
11 
12 namespace quark {
13 namespace util {
14 
15 class Task;
16 
23 class LIBQUARK_API TaskProcessor : public QThread
24 {
25  Q_OBJECT;
26 
27  public:
28 
30  TaskProcessor(QObject *parent = NULL);
31 
33  virtual ~TaskProcessor();
34 
41  int addTask(Task *task);
42 
50  bool cancelTask(int taskId);
51 
59  bool stop();
60 
61  signals:
62 
69  void busyStateChanged(bool busy);
70 
71  protected:
72 
74  virtual void customEvent(QEvent *event);
77  private slots:
78 
79  void taskFinished();
80  void checkForTimeouts();
81 
82  private:
83 
84  void cleanUpTask(Task *task);
85 
86  QMap<int, Task *> _tasks;
87  int _activeTasks;
88  QTimer _timer;
89  QMutex _lock;
90 };
91 
92 } // namespace util
93 } // namespace quark
94 
95 #endif // __libquark_util_TaskProcessor_hxx
An object that executes Tasks in a queue on a dedicated thread.
Definition: TaskProcessor.h++:23
Definition: BarChartView.h++:6
An abstract base class for objects that represent tasks to be executed by a TaskProcessor.
Definition: Task.h++:20
#define LIBQUARK_API
Definition: Quark.h++:18