1636577f4SEdward A. James #pragma once 2636577f4SEdward A. James 3636577f4SEdward A. James #include "occ_errors.hpp" 4636577f4SEdward A. James namespace open_power 5636577f4SEdward A. James { 6636577f4SEdward A. James namespace occ 7636577f4SEdward A. James { 8636577f4SEdward A. James 9636577f4SEdward A. James class Manager; 10636577f4SEdward A. James 11636577f4SEdward A. James /** @class Presence 12636577f4SEdward A. James * @brief Monitors the number of OCCs present 13636577f4SEdward A. James */ 14636577f4SEdward A. James class Presence : public Error 15636577f4SEdward A. James { 16636577f4SEdward A. James public: 17636577f4SEdward A. James Presence() = delete; 18636577f4SEdward A. James Presence(const Presence&) = delete; 19636577f4SEdward A. James Presence& operator=(const Presence&) = delete; 20636577f4SEdward A. James Presence(Presence&&) = default; 21636577f4SEdward A. James Presence& operator=(Presence&&) = default; 22636577f4SEdward A. James 23636577f4SEdward A. James /** @brief Constructs the Presence object 24636577f4SEdward A. James * 25636577f4SEdward A. James * @param[in] event - Reference to sd_event unique_ptr 26636577f4SEdward A. James * @param[in] file - File used by driver to communicate errors 27636577f4SEdward A. James * @param[in] mgr - OCC manager instance 28636577f4SEdward A. James * @param[in] callBack - Optional function callback on error condition 29636577f4SEdward A. James */ Presence(EventPtr & event,const fs::path & file,const Manager & mgr,std::function<void (int)> callBack=nullptr)3094df8c90SGunnar Mills Presence(EventPtr& event, const fs::path& file, const Manager& mgr, 319789e71fSEddie James std::function<void(int)> callBack = nullptr) : 32*d7542c83SPatrick Williams Error(event, file, callBack), manager(mgr) 33636577f4SEdward A. James { 34636577f4SEdward A. James // Nothing to do here. 35636577f4SEdward A. James } 36636577f4SEdward A. James 37636577f4SEdward A. James private: 38636577f4SEdward A. James /** Store the manager instance to enable getting number of OCCs */ 39636577f4SEdward A. James const Manager& manager; 40636577f4SEdward A. James 41636577f4SEdward A. James /** @brief When the error event is received, analyzes it 42636577f4SEdward A. James * and makes a callback to error handler if the 43636577f4SEdward A. James * content denotes an error condition 44636577f4SEdward A. James */ 45636577f4SEdward A. James void analyzeEvent() override; 46636577f4SEdward A. James }; 47636577f4SEdward A. James 48636577f4SEdward A. James } // namespace occ 49636577f4SEdward A. James } // namespace open_power 50