ifw-slm 0.1.2
 
Loading...
Searching...
No Matches
cmdsImpl.hpp
Go to the documentation of this file.
1#ifndef IFWSLM_CMDS_IMPL_HPP
2#define IFWSLM_CMDS_IMPL_HPP
3
4#include "events.rad.hpp"
5#include <rad/exceptions.hpp>
6#include <rad/smAdapter.hpp>
7#include <Ifwslmif.hpp>
8
9namespace ifw::slm {
10
11class SecondaryLoopManagerCmdsImpl : public ifwslmif::AsyncSecondaryLoopManagerCmds {
12public:
13 explicit SecondaryLoopManagerCmdsImpl(rad::SMAdapter& sm) : m_sm(sm) {
14 RAD_TRACE(GetLogger());
15 }
16
18 RAD_TRACE(GetLogger());
19 }
20
21private:
22 template<typename EventType>
23 elt::mal::future<std::string> PostLoopCommand(
24 const elt::mal::shared_vector<const int32_t>& loops) {
25 RAD_TRACE(GetLogger());
26 std::array<int32_t, 9> arr;
27 for (size_t i = 0; i < arr.size(); ++i) {
28 arr[i] = loops[i];
29 }
30 auto ev = std::make_shared<EventType>(arr);
31 m_sm.PostEvent(ev);
32 return ev->GetPayload().GetReplyFuture();
33 }
34
35public:
36 virtual elt::mal::future<std::string> CloseLoop(const elt::mal::shared_vector<const int32_t>& loops) override {
37 return PostLoopCommand<Events::CloseLoop>(loops);
38 }
39
40 virtual elt::mal::future<std::string> OpenLoop(const elt::mal::shared_vector<const int32_t>& loops) override {
41 return PostLoopCommand<Events::OpenLoop>(loops);
42 }
43
44 virtual elt::mal::future<std::string> ResumeLoop(const elt::mal::shared_vector<const int32_t>& loops) override {
45 return PostLoopCommand<Events::ResumeLoop>(loops);
46 }
47
48 virtual elt::mal::future<std::string> SuspendLoop(const elt::mal::shared_vector<const int32_t>& loops) override {
49 return PostLoopCommand<Events::SuspendLoop>(loops);
50 }
51
52 virtual elt::mal::future<std::string> RunSlm() override {
53 RAD_TRACE(GetLogger());
54 auto ev = std::make_shared<Events::RunSlm>();
55 m_sm.PostEvent(ev);
56 return ev->GetPayload().GetReplyFuture();
57 }
58
59 virtual elt::mal::future<std::string> StopSlm() override {
60 RAD_TRACE(GetLogger());
61 auto ev = std::make_shared<Events::StopSlm>();
62 m_sm.PostEvent(ev);
63 return ev->GetPayload().GetReplyFuture();
64 }
65
66private:
67 rad::SMAdapter& m_sm;
68};
69
70} // namespace ifw::slm
71#endif // IFWSLM_CMDS_IMPL_HPP
SecondaryLoopManagerCmdsImpl(rad::SMAdapter &sm)
Definition cmdsImpl.hpp:13
virtual elt::mal::future< std::string > CloseLoop(const elt::mal::shared_vector< const int32_t > &loops) override
Definition cmdsImpl.hpp:36
virtual elt::mal::future< std::string > StopSlm() override
Definition cmdsImpl.hpp:59
virtual elt::mal::future< std::string > SuspendLoop(const elt::mal::shared_vector< const int32_t > &loops) override
Definition cmdsImpl.hpp:48
virtual ~SecondaryLoopManagerCmdsImpl()
Definition cmdsImpl.hpp:17
virtual elt::mal::future< std::string > ResumeLoop(const elt::mal::shared_vector< const int32_t > &loops) override
Definition cmdsImpl.hpp:44
virtual elt::mal::future< std::string > RunSlm() override
Definition cmdsImpl.hpp:52
virtual elt::mal::future< std::string > OpenLoop(const elt::mal::shared_vector< const int32_t > &loops) override
Definition cmdsImpl.hpp:40
Definition actionMgr.cpp:29
log4cplus::Logger & GetLogger()
Definition logger.cpp:14