rad 6.2.0
Loading...
Searching...
No Matches
application.hpp
Go to the documentation of this file.
1
9#ifndef RAD_APPLICATION_HPP
10#define RAD_APPLICATION_HPP
11
12//#include <lsv/app/events.rad.hpp>
13//#include <lsv/app/stdCmds.rad.hpp>
14//#include <lsv/app/stdCmdsImpl.hpp>
15//#include <lsv/app/lsvCmdsImpl.hpp>
16
17#include <rad/smAdapter.hpp>
18#include <rad/dataContext.hpp>
20#include <rad/mal/replier.hpp>
21#include <rad/mal/utils.hpp>
22
23#include <scxml4cpp/Context.h>
25
26#include <boost/asio.hpp>
27
28#include <string>
29#include <memory>
30
31namespace rad {
32
49 public:
56 Application(const std::string& name, rad::DataContext& data);
57
61 ~Application() override;
62
74 virtual bool Config(int argc, char* argv[]);
75
91 virtual void Init(rad::ConfigurableActionMgr& action_mgr);
92
110 virtual bool Init(int argc, char* argv[], rad::ConfigurableActionMgr& action_mgr);
111
129 void RegisterMalDds(const elt::mal::Mal::Properties& mal_properties);
130
143 [[deprecated("use RegisterMalDds(const elt::mal::Mal::Properties&)")]]
144 virtual void RegisterMalDds();
145
154 virtual void Run();
155
159 void StopEventLoop();
160
164 inline const std::string& GetName() const { return m_name; }
165
169 inline rad::DataContext& GetDataContext() { return m_data; }
170
174 inline boost::asio::io_context& GetEventLoop() { return m_ioc; }
175
179 inline std::shared_ptr<elt::mal::Mal> GetMalInstance() { return m_mal_zpb_instance; }
180
184 inline std::shared_ptr<elt::mal::Mal> GetMalDdsInstance() { return m_mal_dds_instance; }
185
198 void CreateReplier(const std::string& uri);
199
208 template<typename IF, typename IF_IMPL>
209 void RegisterService(const std::string& name, std::shared_ptr<IF_IMPL> if_impl);
210
211
212 Application(const Application&) = delete;
214
215 private:
216 std::string m_name;
217 log4cplus::Logger m_logger;
218 rad::DataContext& m_data;
219 std::shared_ptr<elt::mal::Mal> m_mal_zpb_instance;
220 std::shared_ptr<elt::mal::Mal> m_mal_dds_instance;
221 boost::asio::io_context m_ioc;
222 scxml4cpp::EventQueue m_external_events;
223 scxml4cpp::Context m_state_machine_ctx;
224 std::unique_ptr<rad::cii::Replier> m_mal_replier;
225};
226
227template<typename IF, typename IF_IMPL>
228void Application::RegisterService(const std::string& name, std::shared_ptr<IF_IMPL> if_impl) {
229
230 if (m_mal_replier == nullptr) {
231 return;
232 }
233
234 m_mal_replier->RegisterService<IF>(name, if_impl);
235}
236
237
238} // namespace rad
239
240#endif // RAD_APPLICATION_HPP
Context header.
EventQueue header.
DataContext class header file.
Definition application.hpp:48
void CreateReplier(const std::string &uri)
Definition application.cpp:254
void StopEventLoop()
Definition application.cpp:244
std::shared_ptr< elt::mal::Mal > GetMalDdsInstance()
Definition application.hpp:184
virtual void Run()
Definition application.cpp:236
virtual void Init(rad::ConfigurableActionMgr &action_mgr)
Definition application.cpp:71
void RegisterService(const std::string &name, std::shared_ptr< IF_IMPL > if_impl)
Definition application.hpp:228
Application(const std::string &name, rad::DataContext &data)
Definition application.cpp:18
virtual void RegisterMalDds()
Definition application.cpp:186
rad::DataContext & GetDataContext()
Definition application.hpp:169
std::shared_ptr< elt::mal::Mal > GetMalInstance()
Definition application.hpp:179
Application & operator=(const Application &)=delete
Disable copy constructor.
boost::asio::io_context & GetEventLoop()
Definition application.hpp:174
const std::string & GetName() const
Definition application.hpp:164
virtual bool Config(int argc, char *argv[])
Definition application.cpp:39
~Application() override
Definition application.cpp:34
Application(const Application &)=delete
Definition configurableActionMgr.hpp:30
Definition dataContext.hpp:22
Definition smAdapter.hpp:60
Definition Context.h:58
Definition EventQueue.h:55
ConfigurableActionMgr class header file.
Utils class header file.
Definition actionsApp.cpp:23
Replier class header file.
SMAdapter class header file.