blob: 321dacb69ad89a27f440dc5cfebafe868010cf2c [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{
16 public:
17 Presence() = delete;
18 Presence(const Presence&) = delete;
19 Presence& operator=(const Presence&) = delete;
20 Presence(Presence&&) = default;
21 Presence& operator=(Presence&&) = default;
22
23 /** @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,
31 const fs::path& file,
32 const Manager& mgr,
33 std::function<void()> callBack = nullptr) :
34 Error(event, file, callBack),
35 manager(mgr)
36 {
37 // Nothing to do here.
38 }
39
40 private:
41 /** Store the manager instance to enable getting number of OCCs */
42 const Manager& manager;
43
44 /** @brief When the error event is received, analyzes it
45 * and makes a callback to error handler if the
46 * content denotes an error condition
47 */
48 void analyzeEvent() override;
49};
50
51} // namespace occ
52} // namespace open_power