9 #ifndef SUP_SYSSUP_COMMON_SUBSYS_HPP
10 #define SUP_SYSSUP_COMMON_SUBSYS_HPP
12 #include <boost/signals2.hpp>
13 #include <boost/bimap.hpp>
14 #include <boost/assign.hpp>
19 #include <utils/bat/logger.hpp>
22 #include <mal/utility/LoadMal.hpp>
23 #include <mal/rr/qos/ReplyTime.hpp>
106 template <
typename INTERFACE>
118 const int timeout = 5000,
119 const std::optional<elt::mal::Mal::Properties> mal_properties = {})
120 : m_client(), m_uri(uri), m_timeout(timeout) {
122 m_client = elt::mal::CiiFactory::getInstance().getClient<INTERFACE>(
124 {std::make_shared<elt::mal::rr::qos::ReplyTime>(std::chrono::milliseconds(m_timeout))},
125 mal_properties ? *mal_properties : elt::mal::Mal::Properties());
126 }
catch (std::exception& e) {
127 LOG4CPLUS_ERROR(utils::bat::GetAppLogger(),
"Problems creating MAL client "
128 <<
" error: " << e.what());
135 const int timeout = 5000,
136 const std::optional<elt::mal::Mal::Properties> mal_properties = {}) {
139 m_client = elt::mal::CiiFactory::getInstance().getClient<INTERFACE>(
141 {std::make_shared<elt::mal::rr::qos::ReplyTime>(std::chrono::milliseconds(m_timeout))},
142 mal_properties ? *mal_properties : elt::mal::Mal::Properties());
143 }
catch (std::exception& e) {
144 LOG4CPLUS_ERROR(utils::bat::GetAppLogger(),
"Problems creating MAL client "
145 <<
" error: " << e.what());
165 std::shared_ptr<INTERFACE> m_client;
239 virtual void Ignore(rad::AnyEvent
const& last_event) ;
248 virtual void StopIgn(rad::AnyEvent
const& last_event) ;
257 virtual void SubsysReset(rad::AnyEvent
const& last_event) ;
266 virtual void SubsysInit(rad::AnyEvent
const& last_event) ;
275 virtual void SubsysEnable(rad::AnyEvent
const& last_event) ;
284 virtual void SubsysDisable(rad::AnyEvent
const& last_event) ;
290 void Subscribe(UpdateHandler::slot_type handler);
361 void UpdateDb(std::vector<std::string> attr_vector);
376 void GetPrefix(
const std::vector<std::string> prefix_list, std::string& prefix);
385 log4cplus::Logger m_logger;
391 #include "subsys.ipp"
Definition: config.hpp:162
Definition: dataContext.hpp:68
Definition: subsys.hpp:107
Dispatcher(const elt::mal::Uri &uri, const int timeout=5000, const std::optional< elt::mal::Mal::Properties > mal_properties={})
Definition: subsys.hpp:117
Dispatcher(const Dispatcher &)=delete
std::shared_ptr< INTERFACE > & GetInterface()
Definition: subsys.hpp:156
void Update(const elt::mal::Uri &uri, const int timeout=5000, const std::optional< elt::mal::Mal::Properties > mal_properties={})
Definition: subsys.hpp:134
Dispatcher & operator=(const Dispatcher &)=delete
Definition: subsysFactory.hpp:34
Definition: iSubsys.hpp:32
Subsys interface class header file.
Definition: actionMgr.cpp:31
constexpr auto KEY_STATUS_SUBSYS_CONNECTION
Definition: subsys.hpp:29
StateEnum
Definition: states.hpp:56
SubstateEnum
Definition: states.hpp:62
The SubsysData struct.
Definition: subsys.hpp:41
std::string GetConnectionStr() const
GetConnectionStr.
ConnectionEnum GetConnection() const
GetConnection.
State::StateEnum GetState() const
GetState.
ConnectionEnum
Definition: subsys.hpp:44
void SetState(const std::string state)
SetState.
void SetConnection(const SubsysData::ConnectionEnum connection)
SetConnection.
void SetSubstate(const std::string subtate)
SetSubstate.
const std::map< ConnectionEnum, std::string > ConnectionMap
Definition: subsys.hpp:48
State::SubstateEnum GetSubstate() const
GetSubstate.
Definition: subsys.hpp:180
virtual bool IsDisabling() const
Check if subsys is disablig.
Definition: subsys.cpp:137
virtual void SubsysDisable(rad::AnyEvent const &last_event)
Executes a hardware disable command.
Definition: subsys.cpp:107
void Subscribe(UpdateHandler::slot_type handler)
Implements a notification for updates in the subsystem status.
Definition: subsys.cpp:208
SubsysData::ConnectionEnum GetDataConnection() const
Get actual connection as enumeration.
Definition: subsys.cpp:203
std::string GetDataSubstateStr() const
Get actual subtate as string.
Definition: subsys.cpp:178
virtual bool IsNotReady() const
Check if subsys is Standby/NotReady.
Definition: subsys.cpp:113
State::SubstateEnum GetDataSubstate() const
Get actual subtate as a enumeration.
Definition: subsys.cpp:174
virtual void StopIgn(rad::AnyEvent const &last_event)
Executes a StopIgn.
Definition: subsys.cpp:79
virtual void CheckSubsysFailure() const
Check if subsys is in failure state.
Definition: subsys.cpp:131
Subsys(Key)
Subsys abstract class constructor.
Definition: subsys.cpp:23
void SetIgnore(bool flag)
SetIgnore.
Definition: subsys.cpp:150
void SetDataConnection(const SubsysData::ConnectionEnum connection)
Set actual connection state.
Definition: subsys.cpp:198
virtual void SubsysInit(rad::AnyEvent const &last_event)
Executes a hardware init command.
Definition: subsys.cpp:93
virtual void SubsysReset(rad::AnyEvent const &last_event)
Executes a hardware reset command.
Definition: subsys.cpp:86
void UpdateDb(std::vector< std::string > attr_vector)
Update subsys database.
Definition: subsys.cpp:145
State::StateEnum GetDataState() const
Get actual state as a enumeration.
Definition: subsys.cpp:165
virtual ~Subsys()
Default destructor.
Definition: subsys.cpp:28
UpdateHandler m_signal
notification signal.
Definition: subsys.hpp:380
virtual void Ignore(rad::AnyEvent const &last_event)
Executes a Ignore.
Definition: subsys.cpp:72
void GetPrefix(const std::vector< std::string > prefix_list, std::string &prefix)
Get prefix for writing attributes to the DB.
Definition: subsys.cpp:158
boost::signals2::signal< void()> UpdateHandler
Definition: subsys.hpp:183
std::string GetDataConnectionStr() const
Get actual connection as string.
Definition: subsys.cpp:183
virtual bool IsReady() const
Check if subsys is Standby/Ready.
Definition: subsys.cpp:119
virtual void SubsysEnable(rad::AnyEvent const &last_event)
Executes a hardware enable command.
Definition: subsys.cpp:100
void SetDataState(const std::string state)
Set actual subsystem state.
Definition: subsys.cpp:188
std::string GetDataStateStr() const
Get actual state as string.
Definition: subsys.cpp:168
void SetDataSubstate(const std::string subtate)
Set actual subsystem substate.
Definition: subsys.cpp:193
virtual bool IsOperational() const
Check if subsys is Operational.
Definition: subsys.cpp:125
SubsysFactory class header file.