1 #pragma once
2 
3 #include "occ_errors.hpp"
4 namespace open_power
5 {
6 namespace occ
7 {
8 
9 class Manager;
10 
11 /** @class Presence
12  *  @brief Monitors the number of OCCs present
13  */
14 class 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, const fs::path& file, const Manager& mgr,
31              std::function<void(bool)> callBack = nullptr) :
32         Error(event, file, callBack),
33         manager(mgr)
34     {
35         // Nothing to do here.
36     }
37 
38   private:
39     /** Store the manager instance to enable getting number of OCCs */
40     const Manager& manager;
41 
42     /** @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;
47 };
48 
49 } // namespace occ
50 } // namespace open_power
51