Line |
Branch |
Exec |
Source |
1 |
|
|
/** |
2 |
|
|
* @file lib.AbstractTask.hpp |
3 |
|
|
* @author Sergey Baigudin, sergey@baigudin.software |
4 |
|
|
* @copyright 2022, Sergey Baigudin, Baigudin Software |
5 |
|
|
*/ |
6 |
|
|
#ifndef LIB_ABSTRACTTASK_HPP_ |
7 |
|
|
#define LIB_ABSTRACTTASK_HPP_ |
8 |
|
|
|
9 |
|
|
#include "lib.NonCopyable.hpp" |
10 |
|
|
#include "api.Task.hpp" |
11 |
|
|
|
12 |
|
|
namespace eoos |
13 |
|
|
{ |
14 |
|
|
namespace lib |
15 |
|
|
{ |
16 |
|
|
|
17 |
|
|
/** |
18 |
|
|
* @class AbstractTask<A> |
19 |
|
|
* @brief Abstract task for the thread class. |
20 |
|
|
* |
21 |
|
|
* @tparam A Heap memory allocator class. |
22 |
|
|
*/ |
23 |
|
|
template <class A = Allocator> |
24 |
|
|
class AbstractTask : public NonCopyable<A>, public api::Task |
25 |
|
|
{ |
26 |
|
|
typedef NonCopyable<A> Parent; |
27 |
|
|
|
28 |
|
|
public: |
29 |
|
|
|
30 |
|
|
/** |
31 |
|
|
* @brief Constructor. |
32 |
|
|
*/ |
33 |
|
63 |
AbstractTask() |
34 |
|
|
: NonCopyable<A>() |
35 |
|
63 |
, api::Task() { |
36 |
|
63 |
} |
37 |
|
|
|
38 |
|
|
/** |
39 |
|
|
* @brief Destructor. |
40 |
|
|
*/ |
41 |
|
126 |
virtual ~AbstractTask() {} |
42 |
|
|
|
43 |
|
|
/** |
44 |
|
|
* @copydoc eoos::api::Task::start() |
45 |
|
|
*/ |
46 |
|
|
virtual void start() = 0; |
47 |
|
|
|
48 |
|
|
/** |
49 |
|
|
* @copydoc eoos::api::Object::isConstructed() |
50 |
|
|
*/ |
51 |
|
35 |
virtual bool_t isConstructed() const |
52 |
|
|
{ |
53 |
|
35 |
return Parent::isConstructed(); |
54 |
|
|
} |
55 |
|
|
|
56 |
|
|
/** |
57 |
|
|
* @copydoc eoos::api::Task::getStackSize() |
58 |
|
|
*/ |
59 |
|
6 |
virtual size_t getStackSize() const |
60 |
|
|
{ |
61 |
|
6 |
return 0U; |
62 |
|
|
} |
63 |
|
|
|
64 |
|
|
}; |
65 |
|
|
|
66 |
|
|
} // namespace lib |
67 |
|
|
} // namespace eoos |
68 |
|
|
#endif // LIB_ABSTRACTTASK_HPP_ |
69 |
|
|
|