rad  3.0.0
pthreadActivity.hpp
Go to the documentation of this file.
1 
9 #ifndef RAD_ACTIVITY_PTHREAD_HPP
10 #define RAD_ACTIVITY_PTHREAD_HPP
11 
12 #include <rad/activity.hpp>
13 
14 #include <scxml4cpp/Activity.h>
15 #include <scxml4cpp/Event.h>
16 
17 #include <pthread.h>
18 
19 #include <atomic>
20 #include <string>
21 
22 namespace rad {
23 
32  public:
33  explicit PthreadActivity(const std::string& id, const int cpu = -1, const int priotity = -1);
34 
35  virtual ~PthreadActivity();
36 
37  virtual void Run() = 0;
38 
39  std::string GetName();
40  int SetName(const std::string& name);
41 
42  int GetCPU() const;
43  int GetConfiguredCPU() const;
44  void SetConfiguredCPU(const int cpu);
45  int GetPriority();
46  int GetConfiguredPriority() const;
47  void SetConfiguredPriority(const int priority);
48 
52  pthread_t GetNativeHandle() const override;
53 
54  PthreadActivity(const PthreadActivity&) = delete;
56 
57  protected:
58  void StartThread() override;
59  void JoinThread() override;
60  bool IsThreadJoined() const override;
61 
62  private:
63  std::atomic<bool> m_thread_id_valid;
64  pthread_t m_thread_id;
65  int m_cpu;
66  int m_priority;
67 
68  static void* RunWrapper(void* arg);
69 };
70 
71 } // namespace rad
72 
73 #endif // RAD_ACTIVITY_PTHREAD_HPP
rad::PthreadActivity::GetPriority
int GetPriority()
Definition: pthreadActivity.cpp:315
rad::PthreadActivity::JoinThread
void JoinThread() override
Definition: pthreadActivity.cpp:204
wscript.name
name
Definition: wscript:8
rad::PthreadActivity::operator=
PthreadActivity & operator=(const PthreadActivity &)=delete
Disable copy constructor.
rad::PthreadActivity::StartThread
void StartThread() override
Disable assignment operator.
Definition: pthreadActivity.cpp:56
rad::PthreadActivity::GetConfiguredPriority
int GetConfiguredPriority() const
Definition: pthreadActivity.cpp:340
rad::PthreadActivity::PthreadActivity
PthreadActivity(const PthreadActivity &)=delete
rad
Definition: actionCallback.hpp:21
rad::PthreadActivity::GetName
std::string GetName()
Definition: pthreadActivity.cpp:238
rad::PthreadActivity::GetConfiguredCPU
int GetConfiguredCPU() const
Definition: pthreadActivity.cpp:298
rad::PthreadActivity::SetConfiguredPriority
void SetConfiguredPriority(const int priority)
Definition: pthreadActivity.cpp:349
rad::PthreadActivity::GetCPU
int GetCPU() const
Definition: pthreadActivity.cpp:290
rad::PthreadActivity::Run
virtual void Run()=0
rad::PthreadActivity::SetName
int SetName(const std::string &name)
Definition: pthreadActivity.cpp:261
rad::PthreadActivity::~PthreadActivity
virtual ~PthreadActivity()
Definition: pthreadActivity.cpp:43
rad::PthreadActivity
Definition: pthreadActivity.hpp:31
rad::PthreadActivity::SetConfiguredCPU
void SetConfiguredCPU(const int cpu)
Definition: pthreadActivity.cpp:307
rad::ThreadBaseActivity
Definition: activity.hpp:39
rad::PthreadActivity::IsThreadJoined
bool IsThreadJoined() const override
Definition: pthreadActivity.cpp:196
rad::PthreadActivity::PthreadActivity
PthreadActivity(const std::string &id, const int cpu=-1, const int priotity=-1)
Definition: pthreadActivity.cpp:31
rad::PthreadActivity::GetNativeHandle
pthread_t GetNativeHandle() const override
Definition: pthreadActivity.cpp:48