blob: ef63c8949b7bc690349117c83694fdb501df3c98 [file] [log] [blame]
Edward A. James636577f2017-10-06 10:53:55 -05001#pragma once
2
3#include "occ_errors.hpp"
4namespace open_power
5{
6namespace occ
7{
8
9class Manager;
10
11/** @class Presence
12 * @brief Monitors the number of OCCs present
13 */
14class Presence : public Error
15{
Gunnar Mills94df8c92018-09-14 14:50:03 -050016 public:
17 Presence() = delete;
18 Presence(const Presence&) = delete;
19 Presence& operator=(const Presence&) = delete;
20 Presence(Presence&&) = default;
21 Presence& operator=(Presence&&) = default;
Edward A. James636577f2017-10-06 10:53:55 -050022
Gunnar Mills94df8c92018-09-14 14:50:03 -050023 /** @brief Constructs the Presence object
24 *
25 * @param[in] event - Reference to sd_event unique_ptr
26 * @param[in] file - File used by driver to communicate errors
27 * @param[in] mgr - OCC manager instance
28 * @param[in] callBack - Optional function callback on error condition
29 */
30 Presence(EventPtr& event, const fs::path& file, const Manager& mgr,
Eddie James9789e712022-05-25 15:43:40 -050031 std::function<void(int)> callBack = nullptr) :
Gunnar Mills94df8c92018-09-14 14:50:03 -050032 Error(event, file, callBack),
33 manager(mgr)
34 {
35 // Nothing to do here.
36 }
Edward A. James636577f2017-10-06 10:53:55 -050037
Gunnar Mills94df8c92018-09-14 14:50:03 -050038 private:
39 /** Store the manager instance to enable getting number of OCCs */
40 const Manager& manager;
Edward A. James636577f2017-10-06 10:53:55 -050041
Gunnar Mills94df8c92018-09-14 14:50:03 -050042 /** @brief When the error event is received, analyzes it
43 * and makes a callback to error handler if the
44 * content denotes an error condition
45 */
46 void analyzeEvent() override;
Edward A. James636577f2017-10-06 10:53:55 -050047};
48
49} // namespace occ
50} // namespace open_power