RTC Toolkit 4.0.1
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(std::string const& id,
35 ActivityMethod activity,
36 SuccessMethod on_success = nullptr,
37 FailureMethod on_failure = nullptr);
38
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
std::function< void()> SuccessMethod
Definition: threadActivity.hpp:31
ThreadActivity(const ThreadActivity &)=delete
void start(scxml4cpp::Context *c) override
Definition: threadActivity.cpp:37
~ThreadActivity()
Definition: threadActivity.cpp:34
std::function< void(std::exception_ptr)> FailureMethod
Definition: threadActivity.hpp:32
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::StopSource StopSource
Definition: stopToken.hpp:19
rad::StopToken StopToken
Definition: stopToken.hpp:20
A simple Stop Token.