1d02153c9SJayanth Othayoth #pragma once 2d02153c9SJayanth Othayoth 3d02153c9SJayanth Othayoth #include <map> 4d02153c9SJayanth Othayoth 5d02153c9SJayanth Othayoth #include "dump_utils.hpp" 6d02153c9SJayanth Othayoth #include "watch.hpp" 7*bf6ec600SJayanth Othayoth #include "config.h" 8d02153c9SJayanth Othayoth 9d02153c9SJayanth Othayoth namespace phosphor 10d02153c9SJayanth Othayoth { 11d02153c9SJayanth Othayoth namespace dump 12d02153c9SJayanth Othayoth { 13d02153c9SJayanth Othayoth namespace core 14d02153c9SJayanth Othayoth { 15*bf6ec600SJayanth Othayoth using Watch = phosphor::dump::inotify::Watch; 16d02153c9SJayanth Othayoth using UserMap = phosphor::dump::inotify::UserMap; 17d02153c9SJayanth Othayoth 18*bf6ec600SJayanth Othayoth /** @class Manager 19*bf6ec600SJayanth Othayoth * @brief OpenBMC Core manager implementation. 20d02153c9SJayanth Othayoth */ 21*bf6ec600SJayanth Othayoth class Manager 22*bf6ec600SJayanth Othayoth { 23*bf6ec600SJayanth Othayoth public: 24*bf6ec600SJayanth Othayoth Manager() = delete; 25*bf6ec600SJayanth Othayoth Manager(const Manager&) = default; 26*bf6ec600SJayanth Othayoth Manager& operator=(const Manager&) = delete; 27*bf6ec600SJayanth Othayoth Manager(Manager&&) = delete; 28*bf6ec600SJayanth Othayoth Manager& operator=(Manager&&) = delete; 29*bf6ec600SJayanth Othayoth virtual ~Manager() = default; 30d02153c9SJayanth Othayoth 31*bf6ec600SJayanth Othayoth /** @brief Constructor to create core watch object. 32*bf6ec600SJayanth Othayoth * @param[in] event - Dump manager sd_event loop. 33*bf6ec600SJayanth Othayoth */ 34*bf6ec600SJayanth Othayoth Manager(const EventPtr& event) : 35*bf6ec600SJayanth Othayoth eventLoop(event.get()), 36*bf6ec600SJayanth Othayoth coreWatch(eventLoop, 37*bf6ec600SJayanth Othayoth IN_NONBLOCK, 38*bf6ec600SJayanth Othayoth IN_CLOSE_WRITE, 39*bf6ec600SJayanth Othayoth EPOLLIN, 40*bf6ec600SJayanth Othayoth CORE_FILE_DIR, 41*bf6ec600SJayanth Othayoth std::bind( 42*bf6ec600SJayanth Othayoth std::mem_fn( 43*bf6ec600SJayanth Othayoth &phosphor::dump::core::Manager::watchCallback), 44*bf6ec600SJayanth Othayoth this, std::placeholders::_1)) 45*bf6ec600SJayanth Othayoth {} 46*bf6ec600SJayanth Othayoth 47*bf6ec600SJayanth Othayoth private: 48d3273eadSJayanth Othayoth /** @brief Helper function for initiating dump request using 49d3273eadSJayanth Othayoth * D-bus internal create interface. 50d3273eadSJayanth Othayoth * @param [in] files - Core files list 51d3273eadSJayanth Othayoth */ 52d3273eadSJayanth Othayoth void createHelper(const std::vector<std::string>& files); 53d3273eadSJayanth Othayoth 54*bf6ec600SJayanth Othayoth 55*bf6ec600SJayanth Othayoth /** @brief Implementation of core watch call back 56*bf6ec600SJayanth Othayoth * @param [in] fileInfo - map of file info path:event 57*bf6ec600SJayanth Othayoth */ 58*bf6ec600SJayanth Othayoth void watchCallback(const UserMap& fileInfo); 59*bf6ec600SJayanth Othayoth 60*bf6ec600SJayanth Othayoth /** @brief sdbusplus Dump event loop */ 61*bf6ec600SJayanth Othayoth EventPtr eventLoop; 62*bf6ec600SJayanth Othayoth 63*bf6ec600SJayanth Othayoth /** @brief Core watch object */ 64*bf6ec600SJayanth Othayoth Watch coreWatch; 65*bf6ec600SJayanth Othayoth }; 66*bf6ec600SJayanth Othayoth 67d02153c9SJayanth Othayoth } // namepsace core 68d02153c9SJayanth Othayoth } // namespace dump 69d02153c9SJayanth Othayoth } // namespace phosphor 70