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