| Marri Devender Rao | 70aafbb | 2018-04-12 01:11:48 -0500 | [diff] [blame] | 1 | #pragma once | 
|  | 2 | #include "callback.hpp" | 
|  | 3 |  | 
|  | 4 | namespace phosphor | 
|  | 5 | { | 
|  | 6 | namespace dbus | 
|  | 7 | { | 
|  | 8 | namespace monitoring | 
|  | 9 | { | 
|  | 10 | /** @class Trap | 
|  | 11 | *  @brief Raises SNMP trap | 
|  | 12 | */ | 
|  | 13 | class 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 | */ | 
|  | 25 | virtual void trap(sdbusplus::message::message& msg) const = 0; | 
|  | 26 | }; | 
|  | 27 |  | 
|  | 28 | /** @class ErrorTrap | 
|  | 29 | *  @brief Sends SNMP trap for the elog error | 
|  | 30 | */ | 
|  | 31 | class 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 | */ | 
|  | 44 | void trap(sdbusplus::message::message& msg) const override; | 
|  | 45 | }; | 
|  | 46 |  | 
|  | 47 | /** @class SNMPTrap | 
|  | 48 | *  @brief SNMP trap callback implementation. | 
|  | 49 | */ | 
| Patrick Venture | 3d6d318 | 2018-08-31 09:33:09 -0700 | [diff] [blame] | 50 | template <typename T> | 
|  | 51 | class SNMPTrap : public Callback | 
| Marri Devender Rao | 70aafbb | 2018-04-12 01:11:48 -0500 | [diff] [blame] | 52 | { | 
|  | 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; | 
|  | 59 | SNMPTrap() : Callback() | 
|  | 60 | { | 
|  | 61 | } | 
|  | 62 |  | 
|  | 63 | /** @brief Callback interface implementation. | 
|  | 64 | *  @param[in] ctc - context. | 
|  | 65 | */ | 
|  | 66 | void operator()(Context ctx) | 
|  | 67 | { | 
|  | 68 | } | 
|  | 69 |  | 
|  | 70 | /** @brief Callback interface implementation. | 
|  | 71 | *  @param[in] ctc - context. | 
|  | 72 | *  @param[in] msg - sdbus message. | 
|  | 73 | */ | 
|  | 74 | void operator()(Context ctx, sdbusplus::message::message& msg) | 
|  | 75 | { | 
|  | 76 | event.trap(msg); | 
|  | 77 | } | 
|  | 78 |  | 
|  | 79 | private: | 
|  | 80 | T event; | 
|  | 81 | }; | 
|  | 82 |  | 
|  | 83 | } // namespace monitoring | 
|  | 84 | } // namespace dbus | 
|  | 85 | } // namespace phosphor |