version 0.3.0
[fms.git] / include / threadwrapper / cancelablethread.h
1 #ifndef _cancelablethread_\r
2 #define _cancelablethread_\r
3 \r
4 #include "cancelablerunnable.h"\r
5 \r
6 #include <Poco/Thread.h>\r
7 \r
8 class CancelableThread:public Poco::Thread\r
9 {\r
10 public:\r
11         CancelableThread():m_runnable(0)                                                                                {}\r
12         CancelableThread(CancelableRunnable *runnable):m_runnable(runnable)     { start(*runnable); }\r
13         ~CancelableThread()\r
14         {\r
15                 if(m_runnable)\r
16                 {\r
17                         delete m_runnable;\r
18                 }\r
19         }\r
20 \r
21         // CancelableThread takes ownership of runnable and will destroy it in the destructor\r
22         void Start(CancelableRunnable *runnable)        { m_runnable=runnable; start(*runnable); }\r
23 \r
24         void Cancel()                           { if(m_runnable) { m_runnable->Cancel(); } }\r
25         const bool IsCancelled()        { return m_runnable ? m_runnable->IsCancelled() : false; }\r
26 \r
27 private:\r
28 \r
29         CancelableRunnable *m_runnable;\r
30 \r
31 };\r
32 \r
33 #endif  // _cancelablethread_\r