RTC Toolkit 6.0.0
Loading...
Searching...
No Matches
threadActivity.hpp
Go to the documentation of this file.
1
11
12#ifndef RTCTK_COMPONENTFRAMEWORK_THREADACTIVITY_HPP
13#define RTCTK_COMPONENTFRAMEWORK_THREADACTIVITY_HPP
14
17
18#include <functional>
19#include <future>
20#include <scxml4cpp/Activity.h>
21
23
27class ThreadActivity : public scxml4cpp::Activity {
28public:
29 using ActivityMethod = std::function<void(StopToken)>;
30 using SuccessMethod = std::function<void()>;
31 using FailureMethod = std::function<void(std::exception_ptr)>;
32
33 ThreadActivity(const std::string& id,
34 ActivityMethod activity,
35 SuccessMethod on_success = nullptr,
36 FailureMethod on_failure = nullptr);
37
38 ~ThreadActivity() override;
39
42
43 void start(scxml4cpp::Context* c) override;
44 void stop(scxml4cpp::Context* c) override;
45
46private:
47 log4cplus::Logger& m_logger;
48 ActivityMethod m_activity_method;
49 SuccessMethod m_success_method;
50 FailureMethod m_failure_method;
51
52 StopSource m_stop_source;
53 std::future<void> m_thread_observer;
54 std::atomic<bool> m_is_stopped;
55 std::thread m_thread;
56};
57
58} // namespace rtctk::componentFramework
59
60#endif // RTCTK_COMPONENTFRAMEWORK_THREADACTIVITY_HPP
ThreadActivity & operator=(const ThreadActivity &)=delete
std::function< void()> SuccessMethod
Definition threadActivity.hpp:30
ThreadActivity(const ThreadActivity &)=delete
void start(scxml4cpp::Context *c) override
Definition threadActivity.cpp:35
std::function< void(std::exception_ptr)> FailureMethod
Definition threadActivity.hpp:31
ThreadActivity(const std::string &id, ActivityMethod activity, SuccessMethod on_success=nullptr, FailureMethod on_failure=nullptr)
Definition threadActivity.cpp:21
std::function< void(StopToken)> ActivityMethod
Definition threadActivity.hpp:29
void stop(scxml4cpp::Context *c) override
Definition threadActivity.cpp:65
Logging Support Library based on log4cplus.
Definition commandReplier.cpp:21
rad::StopToken StopToken
Definition stopToken.hpp:19
rad::StopSource StopSource
Definition stopToken.hpp:18
A simple Stop Token.