rad 6.2.0
Loading...
Searching...
No Matches
activity.hpp
Go to the documentation of this file.
1
8#ifndef RAD_ACTIVITY_HPP
9#define RAD_ACTIVITY_HPP
10
11#include <scxml4cpp/Activity.h>
12
13#include <atomic>
14#include <string>
15#include <thread>
16#include <mutex>
17
18namespace rad {
19
44 public:
45 using Activity::Activity;
46
48
56 void start(scxml4cpp::Context* c) override;
57
63 void stop(scxml4cpp::Context* c) override;
64
68 virtual pthread_t GetNativeHandle() const = 0;
69
75 inline bool IsStopRequested() const { return m_stop_requested.load(std::memory_order_acquire); }
76
83 virtual bool IsThreadJoined() const = 0;
84
85 protected:
86 // @todo Add error code?
87 virtual void StartThread() = 0;
88 virtual void JoinThread() = 0;
89 // returns true if thread is joined == not running.
90 // @}
91
92 private:
93 std::atomic<bool> m_stop_requested; // Flag indicating whether the activity should stop.
94};
95
117 public:
119
122
127 virtual void Run() = 0;
128
132 pthread_t GetNativeHandle() const override;
133
137 bool IsThreadJoined() const override;
138
139 protected:
140 void StartThread() override;
141 void JoinThread() override;
142
155 std::string GetPthreadName();
156
166 int SetPthreadName(const std::string& name);
167
168 private:
169 std::thread m_thread;
170};
171
172} // namespace rad
173
174#endif // RAD_ACTIVITY_HPP
Activity header.
Definition activity.hpp:116
virtual void Run()=0
void JoinThread() override
Definition activity.cpp:61
bool IsThreadJoined() const override
Definition activity.cpp:39
pthread_t GetNativeHandle() const override
Definition activity.cpp:79
ThreadActivity(const ThreadActivity &)=delete
std::string GetPthreadName()
Definition activity.cpp:84
int SetPthreadName(const std::string &name)
Definition activity.cpp:98
ThreadActivity & operator=(const ThreadActivity &)=delete
void StartThread() override
Definition activity.cpp:47
Definition activity.hpp:43
virtual void JoinThread()=0
virtual bool IsThreadJoined() const =0
void stop(scxml4cpp::Context *c) override
Definition activity.cpp:32
virtual void StartThread()=0
ThreadBaseActivity(ThreadBaseActivity const &)=delete
virtual pthread_t GetNativeHandle() const =0
bool IsStopRequested() const
Definition activity.hpp:75
void start(scxml4cpp::Context *c) override
Definition activity.cpp:25
Definition Activity.h:52
Definition Context.h:58
Definition actionsApp.cpp:23