ifw-slm 0.1.2
 
Loading...
Searching...
No Matches
actionMgr.hpp
Go to the documentation of this file.
1
9#ifndef IFWSLM_ACTION_MGR_HPP
10#define IFWSLM_ACTION_MGR_HPP
11
12#include <rad/configurableActionMgr.hpp>
13#include <rad/application.hpp>
14#include <functional>
15#include <map>
16#include <memory>
17
18namespace ifw::slm {
19
20class DataContext;
21class BaseLoopActions;
26
27// Forward declarations for test classes
28class TestActionMgr;
30class TestLoopCloseActions;
31
32// Friend declarations for test classes to access private helper methods
33
39class ActionMgr : public rad::ConfigurableActionMgr {
40 public:
42 using LoopActionFactory = std::function<BaseLoopActions*(
43 const std::string&, rad::Application&, rad::ConfigurableActionMgr&, DataContext&, int,
44 std::shared_ptr<LoopCompletionHandler>)>;
46 const std::string&, rad::Application&, rad::ConfigurableActionMgr&, DataContext&, int,
47 std::shared_ptr<LoopCompletionHandler>)>;
49 const std::string&, rad::Application&, rad::ConfigurableActionMgr&, DataContext&, int,
50 std::shared_ptr<LoopCompletionHandler>)>;
51
54 const std::string&, rad::SMAdapter&, DataContext&, int, LoopCompletionHandler*)>;
55
60 ActionMgr(DataContext& the_data);
61
65 virtual ~ActionMgr();
66
74 void RegisterLoopActionFactory(int loop_index, LoopActionFactory factory);
75
84
92 void RegisterLoopCloseActionFactory(int loop_index, LoopCloseActionFactory factory);
93
102
109 void CreateActions(rad::Application& appl) override;
110
116 void CreateActivities(rad::Application& appl) override;
117
118 ActionMgr(const ActionMgr&) = delete;
119 ActionMgr& operator=(const ActionMgr&) = delete;
120
121 private:
122 DataContext& m_data;
123 std::map<int, LoopActionFactory> m_loop_action_factories;
124 std::map<int, LoopSuspendedActionFactory> m_loop_suspended_factories;
125 std::map<int, LoopCloseActionFactory> m_loop_close_factories;
126 std::map<int, LoopExecuteActivityFactory> m_loop_activity_factories;
127 std::shared_ptr<LoopCompletionHandler> m_completion_handler;
128
130 BaseLoopActions* CreateLoopAction(int loop_index, const std::string& name,
131 rad::Application& appl);
132
133 // Note: CreateLoopSuspendedAction is public for testing purposes
135 public:
136 BaseLoopSuspendedActions* CreateLoopSuspendedAction(int loop_index, const std::string& name,
137 rad::Application& appl);
138
139 // Note: CreateLoopCloseAction is public for testing purposes
141 BaseLoopCloseActions* CreateLoopCloseAction(int loop_index, const std::string& name,
142 rad::Application& appl);
143
144 // Note: CreateLoopExecuteActivity is public for testing purposes
146 public:
147 BaseLoopExecuteActivity* CreateLoopExecuteActivity(int loop_index, const std::string& name,
148 rad::SMAdapter& sm);
149};
150
151} // namespace ifw::slm
152
153#endif // IFWSLM_ACTION_MGR_HPP
ActionMgr & operator=(const ActionMgr &)=delete
Disable copy constructor.
virtual ~ActionMgr()
Definition actionMgr.cpp:36
void CreateActivities(rad::Application &appl) override
Definition actionMgr.cpp:288
std::function< BaseLoopExecuteActivity *( const std::string &, rad::SMAdapter &, DataContext &, int, LoopCompletionHandler *)> LoopExecuteActivityFactory
Definition actionMgr.hpp:53
ActionMgr(DataContext &the_data)
Definition actionMgr.cpp:31
std::function< BaseLoopActions *( const std::string &, rad::Application &, rad::ConfigurableActionMgr &, DataContext &, int, std::shared_ptr< LoopCompletionHandler >)> LoopActionFactory
Definition actionMgr.hpp:42
BaseLoopCloseActions * CreateLoopCloseAction(int loop_index, const std::string &name, rad::Application &appl)
Definition actionMgr.cpp:182
void CreateActions(rad::Application &appl) override
Definition actionMgr.cpp:210
void RegisterLoopActionFactory(int loop_index, LoopActionFactory factory)
Definition actionMgr.cpp:40
void RegisterLoopCloseActionFactory(int loop_index, LoopCloseActionFactory factory)
Definition actionMgr.cpp:50
BaseLoopExecuteActivity * CreateLoopExecuteActivity(int loop_index, const std::string &name, rad::SMAdapter &sm)
Definition actionMgr.cpp:60
void RegisterLoopExecuteActivityFactory(int loop_index, LoopExecuteActivityFactory factory)
Definition actionMgr.cpp:55
void RegisterLoopSuspendedActionFactory(int loop_index, LoopSuspendedActionFactory factory)
Definition actionMgr.cpp:45
std::function< BaseLoopCloseActions *( const std::string &, rad::Application &, rad::ConfigurableActionMgr &, DataContext &, int, std::shared_ptr< LoopCompletionHandler >)> LoopCloseActionFactory
Definition actionMgr.hpp:48
BaseLoopSuspendedActions * CreateLoopSuspendedAction(int loop_index, const std::string &name, rad::Application &appl)
Definition actionMgr.cpp:83
std::function< BaseLoopSuspendedActions *( const std::string &, rad::Application &, rad::ConfigurableActionMgr &, DataContext &, int, std::shared_ptr< LoopCompletionHandler >)> LoopSuspendedActionFactory
Definition actionMgr.hpp:45
ActionMgr(const ActionMgr &)=delete
Definition baseLoopActions.hpp:38
Definition baseLoopActions.hpp:299
Definition baseLoopActions.hpp:120
Definition baseLoopActions.hpp:203
Definition dataContext.hpp:29
Interface for handling loop completion events.
Definition loopCompletionHandler.hpp:32
Definition testActionMgr.cpp:27
Test fixture for suspended actions.
Definition testSuspendedActions.cpp:43
Definition actionMgr.cpp:29