Go to the documentation of this file.
9 #ifndef SUP_SYSSUP_COMMON_SUBSYS_FACADE_HPP_
10 #define SUP_SYSSUP_COMMON_SUBSYS_FACADE_HPP_
16 #include <type_traits>
19 #include <rad/smAdapter.hpp>
20 #include <rad/topicPub.hpp>
21 #include <rad/anyEvent.hpp>
22 #include <rad/activity.hpp>
23 #include <rad/mal/utils.hpp>
27 #include <sup/syssup/common/events.rad.hpp>
34 std::ostream&
operator<<(
typename std::enable_if<std::is_enum<T>::value, std::ostream>::
type& stream,
const T& e)
44 template<
typename EVENT_TYPE>
47 using Request = std::optional<typename EVENT_TYPE::payload_t>;
53 void ReplyOk(std::string req_id, std::string msg);
124 void Init(rad::SMAdapter& sm, rad::ThreadActivity* activity);
133 void Enable(rad::SMAdapter& sm, rad::ThreadActivity* activity);
146 void Disable(rad::SMAdapter& sm, rad::ThreadActivity* activity);
159 void Recover(rad::SMAdapter& sm, rad::ThreadActivity* activity);
184 void Setup(
const std::any& payload);
196 virtual void Reset();
226 template<
typename EVENT_TYPE,
typename OBJECT>
272 virtual void EstimateState(std::vector<State::StateEnum>& states,
273 std::vector<State::SubstateEnum>& substates);
298 std::string substate);
324 void AddSubsys(std::unique_ptr<Subsys> subsys);
360 template <
typename Iterator,
typename EVENT_DONE,
typename EVENT_ERR,
typename EVENT_TOUT>
361 void ManageReply(Iterator& vec, rad::ThreadActivity* activity,
362 int wait_time_msecs,
bool reply_on_success =
true);
365 bool CheckSubsysName(
const std::string& subsys)
const;
367 std::vector<std::unique_ptr<Subsys> > m_subsyss;
368 std::vector<std::string> m_subsys_names;
369 boost::asio::io_service m_ios;
370 rad::SMAdapter& m_sm;
372 log4cplus::Logger m_logger;
386 #include "subsysFacade.ipp"
388 #endif // SUP_SYSSUP_COMMON_SUBSYS_FACADE_HPP_
const int GetNumSubsys()
Get the number of subsystems.
Definition: subsysFacade.cpp:351
void InsertRequest(RequestPair pair)
void SetSubsystemSubstate(std::string name, std::string substate)
Set the subsystem substate.
Definition: subsysFacade.cpp:415
Definition: dataContext.hpp:68
std::optional< typename EVENT_TYPE::payload_t > Request
Definition: subsysFacade.hpp:47
SingleReplier< Events::SubsysReset > m_reset_replier
Definition: subsysFacade.hpp:378
void ClearSubsys()
Empty internal subsys map.
Definition: subsysFacade.cpp:345
Subsys class header file.
SingleReplier< Events::SubsysEnable > m_enable_replier
Definition: subsysFacade.hpp:376
void Connect()
Connect.
Definition: subsysFacade.cpp:59
virtual void Reset()
Reset subsystems.
Definition: subsysFacade.cpp:316
void DisableAccess()
Disable Access for all subsystems.
Definition: subsysFacade.cpp:588
std::pair< std::string, Request > RequestPair
Definition: subsysFacade.hpp:49
Definition: subsysFacade.hpp:69
void ReplyError(std::string req_id, std::string msg)
virtual void Stop()
Abort all subsystems managed by the devmgr.
Definition: subsysFacade.cpp:294
type
Definition: supsimcli.py:30
Definition: iSubsys.hpp:32
void SubsysCommand(scxml4cpp::Context *c, OBJECT &obj)
Forward request to an specific subsystem.
std::map< std::string, Request > RequestMap
Definition: subsysFacade.hpp:48
Definition: subsysFacade.hpp:45
void SetSubsystemConnectionState(std::string name, SubsysData::ConnectionEnum connection)
Get subsystem connection state.
Definition: subsysFacade.cpp:386
void GetSubsystemStatus(const std::string &payload, std::string &buffer)
Get subsystem status.
Definition: subsysFacade.cpp:423
void AddSubsys(std::unique_ptr< Subsys > subsys)
Add a subsystems instance to be managed by the facade.
Definition: subsysFacade.cpp:339
Definition: actionMgr.cpp:32
void Disable(rad::SMAdapter &sm, rad::ThreadActivity *activity)
Disable all subsystems managed by the Supervisor.
Definition: subsysFacade.cpp:265
SingleReplier< Events::SubsysDisable > m_disable_replier
Definition: subsysFacade.hpp:377
virtual ~SubsysFacade()
~SubsysFacade
Definition: subsysFacade.cpp:55
ConnectionEnum
Definition: subsys.hpp:44
SubsysFacade(rad::SMAdapter &sm, DataContext &data_ctx)
Definition: subsysFacade.cpp:46
void Recover(rad::SMAdapter &sm, rad::ThreadActivity *activity)
Recover all subsystems managed by the Supervisor.
Definition: subsysFacade.cpp:255
void Enable(rad::SMAdapter &sm, rad::ThreadActivity *activity)
Enable all subsystems managed by the Supervisor.
Definition: subsysFacade.cpp:181
virtual void EstimateState(std::vector< State::StateEnum > &states, std::vector< State::SubstateEnum > &substates)
EstimateState.
Definition: subsysFacade.cpp:484
std::ostream & operator<<(typename std::enable_if< std::is_enum< T >::value, std::ostream >::type &stream, const T &e)
Definition: subsysFacade.hpp:34
std::string GetSubsysNames()
Get list of subsystems managed by the Supervisor.
Definition: subsysFacade.cpp:372
void StartMonitoring()
StartMonitoring.
Definition: subsysFacade.cpp:136
SingleReplier< Events::SubsysInit > m_init_replier
Definition: subsysFacade.hpp:375
void Init(rad::SMAdapter &sm, rad::ThreadActivity *activity)
Init all subsystems managed by the Supervisor.
Definition: subsysFacade.cpp:145
void ReplyOk(std::string req_id, std::string msg)
void Setup(const std::any &payload)
Executes a setup message.
Definition: subsysFacade.cpp:597
void SetSubsystemState(std::string name, std::string state)
Set the subsystem state.
Definition: subsysFacade.cpp:395
void UpdateHandler()
Triggers the update of the estimated state/substate.
Definition: subsysFacade.cpp:461
RequestMap m_req_map
Definition: subsysFacade.hpp:56
void SetSubsystemStates(std::string name, std::string state, std::string substate)
Set the subsystem states: state and substate.
Definition: subsysFacade.cpp:403
void UpdateConfiguration()
Triggers the update of the subsystem configuration.
Definition: subsysFacade.cpp:438