RTC Toolkit  0.1.0-alpha
threadActivity.hpp
Go to the documentation of this file.
1 
9 #ifndef RTCTK_COMPONENTFRAMEWORK_THREADACTIVITY_HPP
10 #define RTCTK_COMPONENTFRAMEWORK_THREADACTIVITY_HPP
11 
13 #include <scxml4cpp/Activity.h>
14 #include <functional>
15 #include <future>
16 
17 namespace rtctk::componentFramework {
18 
19 class ThreadActivity : public scxml4cpp::Activity
20 {
21 public:
22 
24  std::string const& id,
25  std::function<void(StopToken st)> activity,
26  std::function<void()> on_success = nullptr,
27  std::function<void(const std::runtime_error&)> on_failure = nullptr);
28 
30 
31  ThreadActivity(const ThreadActivity&) = delete;
33 
34  void start(scxml4cpp::Context* c) override;
35  void stop(scxml4cpp::Context* c) override;
36 
37 private:
38  std::function<void(StopToken st)> m_activity_method;
39  std::function<void()> m_success_method;
40  std::function<void(const std::runtime_error&)> m_failure_method;
41 
42  StopSource m_stop_source;
43  std::future<void> m_thread_observer;
44  bool m_is_stopped;
45 };
46 
47 }
48 
49 #endif
rtctk::componentFramework
Definition: rtcComponent.hpp:17
rtctk::componentFramework::ThreadActivity::ThreadActivity
ThreadActivity(const ThreadActivity &)=delete
rtctk::componentFramework::StopToken
rad::StopToken StopToken
Definition: stopToken.hpp:16
rtctk::componentFramework::ThreadActivity::operator=
ThreadActivity & operator=(const ThreadActivity &)=delete
rtctk::componentFramework::ThreadActivity
Definition: threadActivity.hpp:20
stopToken.hpp
A simple Stop Token.
rtctk::componentFramework::ThreadActivity::ThreadActivity
ThreadActivity(std::string const &id, std::function< void(StopToken st)> activity, std::function< void()> on_success=nullptr, std::function< void(const std::runtime_error &)> on_failure=nullptr)
Definition: threadActivity.cpp:6
rtctk::componentFramework::ThreadActivity::start
void start(scxml4cpp::Context *c) override
Definition: threadActivity.cpp:23
rtctk::componentFramework::StopSource
rad::StopSource StopSource
Definition: stopToken.hpp:15
rtctk::componentFramework::ThreadActivity::stop
void stop(scxml4cpp::Context *c) override
Definition: threadActivity.cpp:53
rtctk::componentFramework::ThreadActivity::~ThreadActivity
~ThreadActivity()
Definition: threadActivity.cpp:19