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