summaryrefslogtreecommitdiff
path: root/includes
diff options
context:
space:
mode:
authorPixel <pixel@nobis-crew.org>2012-04-06 10:38:13 -0700
committerPixel <pixel@nobis-crew.org>2012-04-06 10:38:13 -0700
commit9bdb93b01b037358a209af040b561fca3a51851b (patch)
tree75772799ae8b14f5cdc9bb323ab88c327affc745 /includes
parentc385d3ea8c6f96bbcf7d64f0a1890ab2ef5096ee (diff)
A few improvements over how a threaded TaskMan works. Now its own exported class. Also has a proper exception handling in its caller.
Diffstat (limited to 'includes')
-rw-r--r--includes/TaskMan.h17
1 files changed, 15 insertions, 2 deletions
diff --git a/includes/TaskMan.h b/includes/TaskMan.h
index 088d5d7..6c446b7 100644
--- a/includes/TaskMan.h
+++ b/includes/TaskMan.h
@@ -25,6 +25,15 @@ class Async;
class TaskMan {
public:
+ class TaskManThread : public Thread {
+ public:
+ virtual ~TaskManThread();
+ virtual void * proc();
+ void stopMe(int code = 0) { m_taskMan->stopMe(code); }
+ private:
+ TaskMan * m_taskMan;
+ };
+
TaskMan();
~TaskMan();
int mainLoop();
@@ -32,8 +41,12 @@ class TaskMan {
struct ev_loop * getLoop() { return m_loop; }
void signalTask(Task * t);
static void stop(int code);
- void stopMe(int code) { m_stopped = true; m_stopCode = code; }
- static Thread * createThreadedTaskMan();
+ void stopMe(int code = 0);
+ static TaskManThread * createThreadedTaskMan() {
+ TaskManThread * r = new TaskManThread();
+ r->threadStart();
+ return r;
+ }
bool stopped() { return m_stopped; }
template<class T>
static T * createTask(T * t, Task * stick = NULL) { TaskMan::registerTask(t, stick); return t; }