rad  4.0.0
trsHealth.hpp
Go to the documentation of this file.
1 
9 #ifndef RAD_TRSHEALTH_HPP
10 #define RAD_TRSHEALTH_HPP
11 
12 #include <rad/anyEvent.hpp>
13 #include <rad/smAdapter.hpp>
14 
15 #include <memory>
16 
17 #include <boost/asio.hpp>
18 
19 #include <ptpmon/client.hpp>
20 
21 namespace rad {
22 
24  static constexpr char const* ID = "TrsEvents.HealthBad";
25  using payload_t = std::string;
26 };
28 
30  static constexpr char const* ID = "TrsEvents.HealthGood";
31  using payload_t = std::string;
32 };
34 
38 class TrsHealth : protected ptpmon::StatusNotifier {
39  public:
47  explicit TrsHealth(
48  boost::asio::io_context& ioc,
49  SMAdapter& sm,
50  const std::string_view path = ptpmon::DEFAULT_SOCKET_PATH);
51 
52  virtual ~TrsHealth();
53 
54  TrsHealth(const TrsHealth&) = delete;
55  TrsHealth& operator=(const TrsHealth&) = delete;
56 
57  TrsHealth(TrsHealth&&) = default;
58  TrsHealth& operator=(TrsHealth&&) = default;
59 
61  const ptpmon::StatusMessage& GetStatus() const;
62 
64  void Enable();
65 
67  void Disable();
68 
69  protected:
70  void Notify(const ptpmon::StatusMessage& status) override;
71 
72  private:
74  SMAdapter& m_sm;
75 
77  ptpmon::StatusMessage m_status;
78 
80  std::unique_ptr<ptpmon::Client> m_client;
81 
82  bool m_enabled;
83 };
84 
85 } // namespace rad
86 
87 
88 #endif // RAD_TRSHEALTH_HPP
rad::TrsHealthGoodEventTrait
Definition: trsHealth.hpp:29
rad::SMAdapter
Definition: smAdapter.hpp:60
rad::TrsHealth::Enable
void Enable()
Enable TRS health status notification.
Definition: trsHealth.cpp:50
rad::TrsHealthGoodEventTrait::payload_t
std::string payload_t
Definition: trsHealth.hpp:31
rad::TrsHealth::TrsHealth
TrsHealth(boost::asio::io_context &ioc, SMAdapter &sm, const std::string_view path=ptpmon::DEFAULT_SOCKET_PATH)
Register callbacks and start connecting to the ptpmond socket.
Definition: trsHealth.cpp:21
rad::TrsHealthGoodEventTrait::ID
static constexpr char const * ID
Definition: trsHealth.hpp:30
rad::TrsHealthBadEventTrait
Definition: trsHealth.hpp:23
anyEvent.hpp
AnyEvent class header file.
rad::TrsHealth::TrsHealth
TrsHealth(const TrsHealth &)=delete
rad::TrsHealth::TrsHealth
TrsHealth(TrsHealth &&)=default
smAdapter.hpp
SMAdapter class header file.
rad::TrsHealth::operator=
TrsHealth & operator=(const TrsHealth &)=delete
rad::TrsHealthBadEventTrait::ID
static constexpr char const * ID
Definition: trsHealth.hpp:24
rad::TrsHealth::Disable
void Disable()
Disable TRS health status notification.
Definition: trsHealth.cpp:55
rad::TrsHealthBadEventTrait::payload_t
std::string payload_t
Definition: trsHealth.hpp:25
rad::TrsHealth::~TrsHealth
virtual ~TrsHealth()
Definition: trsHealth.cpp:41
rad
Definition: oldbAdapter.hpp:26
rad::TrsHealth::GetStatus
const ptpmon::StatusMessage & GetStatus() const
Retrieve the most recent status.
Definition: trsHealth.cpp:45
rad::TrsHealth
Adapter for ptpmond's TRS Health status to the state machine.
Definition: trsHealth.hpp:38
rad::EventT
Definition: anyEvent.hpp:93
rad::TrsHealth::operator=
TrsHealth & operator=(TrsHealth &&)=default
rad::TrsHealth::Notify
void Notify(const ptpmon::StatusMessage &status) override
Definition: trsHealth.cpp:60