blob: 6f07550e0d1f0f4df5c34c76f78f1811276eb868 [file] [log] [blame]
Marri Devender Rao70aafbb2018-04-12 01:11:48 -05001#pragma once
2#include "callback.hpp"
3
4namespace phosphor
5{
6namespace dbus
7{
8namespace monitoring
9{
10/** @class Trap
11 * @brief Raises SNMP trap
12 */
13class Trap
14{
15 public:
16 Trap() = default;
17 Trap(const Trap&) = delete;
18 Trap(Trap&&) = default;
19 Trap& operator=(const Trap&) = delete;
20 Trap& operator=(Trap&&) = default;
21 virtual ~Trap() = default;
22 /** @brief Raise SNMP trap by parsing the sdbus message.
23 * @param[in] msg - sdbus message.
24 */
Patrick Williams413a4852022-07-22 19:26:52 -050025 virtual void trap(sdbusplus::message_t& msg) const = 0;
Marri Devender Rao70aafbb2018-04-12 01:11:48 -050026};
27
28/** @class ErrorTrap
29 * @brief Sends SNMP trap for the elog error
30 */
31class ErrorTrap : public Trap
32{
33 public:
34 ErrorTrap() = default;
35 ErrorTrap(const ErrorTrap&) = delete;
36 ErrorTrap(ErrorTrap&&) = default;
37 ErrorTrap& operator=(const ErrorTrap&) = delete;
38 ErrorTrap& operator=(ErrorTrap&&) = default;
39 ~ErrorTrap() = default;
40
41 /** @brief Raise SNMP trap by parsing the sdbus message.
42 * @param[in] msg - sdbus message.
43 */
Patrick Williams413a4852022-07-22 19:26:52 -050044 void trap(sdbusplus::message_t& msg) const override;
Marri Devender Rao70aafbb2018-04-12 01:11:48 -050045};
46
47/** @class SNMPTrap
48 * @brief SNMP trap callback implementation.
49 */
Patrick Venture3d6d3182018-08-31 09:33:09 -070050template <typename T>
51class SNMPTrap : public Callback
Marri Devender Rao70aafbb2018-04-12 01:11:48 -050052{
53 public:
54 SNMPTrap(const SNMPTrap&) = delete;
55 SNMPTrap(SNMPTrap&&) = default;
56 SNMPTrap& operator=(const SNMPTrap&) = delete;
57 SNMPTrap& operator=(SNMPTrap&&) = default;
58 virtual ~SNMPTrap() = default;
Patrick Williamsc5fe26a2023-05-10 07:50:25 -050059 SNMPTrap() : Callback() {}
Marri Devender Rao70aafbb2018-04-12 01:11:48 -050060
61 /** @brief Callback interface implementation.
62 * @param[in] ctc - context.
63 */
Patrick Williamsc5fe26a2023-05-10 07:50:25 -050064 void operator()(Context /* ctx */) override {}
Marri Devender Rao70aafbb2018-04-12 01:11:48 -050065
66 /** @brief Callback interface implementation.
67 * @param[in] ctc - context.
68 * @param[in] msg - sdbus message.
69 */
Patrick Williams413a4852022-07-22 19:26:52 -050070 void operator()(Context /* ctx */, sdbusplus::message_t& msg) override
Marri Devender Rao70aafbb2018-04-12 01:11:48 -050071 {
72 event.trap(msg);
73 }
74
75 private:
76 T event;
77};
78
79} // namespace monitoring
80} // namespace dbus
81} // namespace phosphor