8#ifndef SUP_SYSSUP_COMMON_SUBSYS_HPP
9#define SUP_SYSSUP_COMMON_SUBSYS_HPP
11#include <boost/signals2.hpp>
12#include <boost/bimap.hpp>
13#include <boost/assign.hpp>
18#include <ifw/core/utils/bat/logger.hpp>
21#include <mal/utility/LoadMal.hpp>
22#include <mal/rr/qos/ReplyTime.hpp>
103 template <
typename INTERFACE>
115 const int timeout = 5000,
116 const std::optional<elt::mal::Mal::Properties> mal_properties = {})
117 : m_client(), m_uri(uri), m_timeout(timeout) {
119 m_client = elt::mal::CiiFactory::getInstance().getClient<INTERFACE>(
121 {std::make_shared<elt::mal::rr::qos::ReplyTime>(std::chrono::milliseconds(m_timeout))},
122 mal_properties ? *mal_properties : elt::mal::Mal::Properties());
123 }
catch (std::exception& e) {
124 LOG4CPLUS_ERROR(ifw::core::utils::bat::GetAppLogger(),
"Problems creating MAL client "
125 <<
" error: " << e.what());
132 const int timeout = 5000,
133 const std::optional<elt::mal::Mal::Properties> mal_properties = {}) {
136 m_client = elt::mal::CiiFactory::getInstance().getClient<INTERFACE>(
138 {std::make_shared<elt::mal::rr::qos::ReplyTime>(std::chrono::milliseconds(m_timeout))},
139 mal_properties ? *mal_properties : elt::mal::Mal::Properties());
140 }
catch (std::exception& e) {
141 LOG4CPLUS_ERROR(ifw::core::utils::bat::GetAppLogger(),
"Problems creating MAL client "
142 <<
" error: " << e.what());
162 std::shared_ptr<INTERFACE> m_client;
176 struct Subsys : Factory<Subsys, const std::string, Config&, DataContext&>,
236 virtual void Ignore(rad::AnyEvent
const& last_event) ;
245 virtual void StopIgn(rad::AnyEvent
const& last_event) ;
254 virtual void SubsysReset(rad::AnyEvent
const& last_event) ;
263 virtual void SubsysInit(rad::AnyEvent
const& last_event) ;
272 virtual void SubsysEnable(rad::AnyEvent
const& last_event) ;
281 virtual void SubsysDisable(rad::AnyEvent
const& last_event) ;
287 void Subscribe(UpdateHandler::slot_type handler);
358 void UpdateDb(std::vector<std::string> attr_vector);
373 void GetPrefix(
const std::vector<std::string> prefix_list, std::string& prefix);
382 log4cplus::Logger m_logger;
Definition config.hpp:162
Definition dataContext.hpp:66
Dispatcher(const elt::mal::Uri &uri, const int timeout=5000, const std::optional< elt::mal::Mal::Properties > mal_properties={})
Definition subsys.hpp:114
Dispatcher & operator=(const Dispatcher &)=delete
Dispatcher(const Dispatcher &)=delete
std::shared_ptr< INTERFACE > & GetInterface()
Definition subsys.hpp:153
void Update(const elt::mal::Uri &uri, const int timeout=5000, const std::optional< elt::mal::Mal::Properties > mal_properties={})
Definition subsys.hpp:131
Definition iSubsys.hpp:27
ActionMgr class source file.
Definition actionMgr.cpp:30
constexpr auto KEY_STATUS_SUBSYS_CONNECTION
Definition subsys.hpp:27
StateEnum
Definition states.hpp:61
SubstateEnum
Definition states.hpp:67
The SubsysData struct.
Definition subsys.hpp:38
State::SubstateEnum GetSubstate() const
GetSubstate.
void SetState(const std::string state)
SetState.
ConnectionEnum
Definition subsys.hpp:41
@ CONNECTED
Definition subsys.hpp:41
@ NOT_CONNECTED
Definition subsys.hpp:42
std::string GetConnectionStr() const
GetConnectionStr.
void SetConnection(const SubsysData::ConnectionEnum connection)
SetConnection.
const std::map< ConnectionEnum, std::string > ConnectionMap
Definition subsys.hpp:45
void SetSubstate(const std::string subtate)
SetSubstate.
State::StateEnum GetState() const
GetState.
ConnectionEnum GetConnection() const
GetConnection.
virtual void SubsysEnable(rad::AnyEvent const &last_event)
Executes a hardware enable command.
Definition subsys.cpp:80
void SetIgnore(bool flag)
SetIgnore.
Definition subsys.cpp:115
std::string GetDataSubstateStr() const
Get actual subtate as string.
Definition subsys.cpp:135
virtual bool IsOperational() const
Check if subsys is Operational.
Definition subsys.cpp:98
State::StateEnum GetDataState() const
Get actual state as a enumeration.
Definition subsys.cpp:123
std::string GetDataConnectionStr() const
Get actual connection as string.
Definition subsys.cpp:139
virtual ~Subsys()
Default destructor.
Definition subsys.cpp:22
boost::signals2::signal< void()> UpdateHandler
Definition subsys.hpp:180
virtual void SubsysDisable(rad::AnyEvent const &last_event)
Executes a hardware disable command.
Definition subsys.cpp:84
virtual bool IsNotReady() const
Check if subsys is Standby/NotReady.
Definition subsys.cpp:88
virtual void Ignore(rad::AnyEvent const &last_event)
Executes a Ignore.
Definition subsys.cpp:64
void SetDataState(const std::string state)
Set actual subsystem state.
Definition subsys.cpp:143
virtual void StopIgn(rad::AnyEvent const &last_event)
Executes a StopIgn.
Definition subsys.cpp:68
virtual bool IsReady() const
Check if subsys is Standby/Ready.
Definition subsys.cpp:93
void Subscribe(UpdateHandler::slot_type handler)
Implements a notification for updates in the subsystem status.
Definition subsys.cpp:159
void UpdateDb(std::vector< std::string > attr_vector)
Update subsys database.
Definition subsys.cpp:112
State::SubstateEnum GetDataSubstate() const
Get actual subtate as a enumeration.
Definition subsys.cpp:131
UpdateHandler m_signal
notification signal.
Definition subsys.hpp:377
std::string GetDataStateStr() const
Get actual state as string.
Definition subsys.cpp:127
Subsys(Key)
Subsys abstract class constructor.
Definition subsys.cpp:19
SubsysData::ConnectionEnum GetDataConnection() const
Get actual connection as enumeration.
Definition subsys.cpp:155
virtual void CheckSubsysFailure() const
Check if subsys is in failure state.
Definition subsys.cpp:103
void GetPrefix(const std::vector< std::string > prefix_list, std::string &prefix)
Get prefix for writing attributes to the DB.
Definition subsys.cpp:119
void SetDataConnection(const SubsysData::ConnectionEnum connection)
Set actual connection state.
Definition subsys.cpp:151
virtual void SubsysReset(rad::AnyEvent const &last_event)
Executes a hardware reset command.
Definition subsys.cpp:72
void SetDataSubstate(const std::string subtate)
Set actual subsystem substate.
Definition subsys.cpp:147
virtual bool IsDisabling() const
Check if subsys is disablig.
Definition subsys.cpp:107
virtual void SubsysInit(rad::AnyEvent const &last_event)
Executes a hardware init command.
Definition subsys.cpp:76