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