Line | Branch | Exec | Source |
---|---|---|---|
1 | /** | ||
2 | * @file lib.AbstractThreadTask.hpp | ||
3 | * @author Sergey Baigudin, sergey@baigudin.software | ||
4 | * @copyright 2022, Sergey Baigudin, Baigudin Software | ||
5 | */ | ||
6 | #ifndef LIB_ABSTRACTTHREADTASK_HPP_ | ||
7 | #define LIB_ABSTRACTTHREADTASK_HPP_ | ||
8 | |||
9 | #include "lib.Thread.hpp" | ||
10 | |||
11 | namespace eoos | ||
12 | { | ||
13 | namespace lib | ||
14 | { | ||
15 | |||
16 | /** | ||
17 | * @class AbstractThreadTask<A> | ||
18 | * @brief Abstract thread with a task. | ||
19 | * | ||
20 | * @tparam A Heap memory allocator class. | ||
21 | */ | ||
22 | template <class A = Allocator> | ||
23 | class AbstractThreadTask : public Thread<A>, public api::Task | ||
24 | { | ||
25 | typedef Thread<A> Parent; | ||
26 | |||
27 | public: | ||
28 | |||
29 | /** | ||
30 | * @brief Constructor. | ||
31 | */ | ||
32 | 3 | AbstractThreadTask() | |
33 | : Thread<A>() | ||
34 | 3 | , api::Task() { | |
35 |
1/2✓ Branch 1 taken 3 times.
✗ Branch 2 not taken.
|
3 | bool_t const isConstructed( construct() ); |
36 | 3 | setConstructed( isConstructed ); | |
37 | 3 | } | |
38 | |||
39 | /** | ||
40 | * @brief Destructor. | ||
41 | */ | ||
42 | 6 | virtual ~AbstractThreadTask() {} | |
43 | |||
44 | /** | ||
45 | * @copydoc eoos::api::Task::start() | ||
46 | */ | ||
47 | virtual void start() = 0; | ||
48 | |||
49 | /** | ||
50 | * @copydoc eoos::api::Object::isConstructed() | ||
51 | */ | ||
52 | 15 | virtual bool_t isConstructed() const | |
53 | { | ||
54 | 15 | return Parent::isConstructed(); | |
55 | } | ||
56 | |||
57 | /** | ||
58 | * @copydoc eoos::api::Task::getStackSize() | ||
59 | */ | ||
60 | 3 | virtual size_t getStackSize() const | |
61 | { | ||
62 | 3 | return 0U; | |
63 | } | ||
64 | |||
65 | protected: | ||
66 | |||
67 | using Parent::setConstructed; | ||
68 | using Parent::setTask; | ||
69 | |||
70 | private: | ||
71 | |||
72 | /** | ||
73 | * @brief Constructor. | ||
74 | * | ||
75 | * @return True if object has been constructed successfully. | ||
76 | */ | ||
77 | 3 | bool_t construct() | |
78 | { | ||
79 | 3 | return setTask(*this); | |
80 | } | ||
81 | |||
82 | }; | ||
83 | |||
84 | } // namespace lib | ||
85 | } // namespace eoos | ||
86 | #endif // LIB_ABSTRACTTHREADTASK_HPP_ | ||
87 |