1 #pragma once 2 3 #include "dump_entry.hpp" 4 #include "xyz/openbmc_project/Collection/DeleteAll/server.hpp" 5 6 #include <sdbusplus/bus.hpp> 7 #include <sdbusplus/server/object.hpp> 8 9 #define CREATE_DUMP_MAX_PARAMS 2 10 11 namespace phosphor 12 { 13 namespace dump 14 { 15 16 using DumpCreateParams = 17 std::map<std::string, std::variant<std::string, uint64_t>>; 18 using Iface = sdbusplus::server::object_t< 19 sdbusplus::xyz::openbmc_project::Collection::server::DeleteAll>; 20 21 /** @class Manager 22 * @brief Dump manager base class. 23 * @details A concrete implementation for the 24 * xyz::openbmc_project::Collection::server::DeleteAll. 25 */ 26 class Manager : public Iface 27 { 28 friend class Entry; 29 30 public: 31 Manager() = delete; 32 Manager(const Manager&) = default; 33 Manager& operator=(const Manager&) = delete; 34 Manager(Manager&&) = delete; 35 Manager& operator=(Manager&&) = delete; 36 virtual ~Manager() = default; 37 38 /** @brief Constructor to put object onto bus at a dbus path. 39 * @param[in] bus - Bus to attach to. 40 * @param[in] event - Dump manager sd_event loop. 41 * @param[in] path - Path to attach at. 42 * @param[in] baseEntryPath - Base path of the dump entry. 43 */ Manager(sdbusplus::bus_t & bus,const char * path,const std::string & baseEntryPath)44 Manager(sdbusplus::bus_t& bus, const char* path, 45 const std::string& baseEntryPath) : 46 Iface(bus, path, Iface::action::defer_emit), bus(bus), lastEntryId(0), 47 baseEntryPath(baseEntryPath) 48 {} 49 50 /** @brief Construct dump d-bus objects from their persisted 51 * representations. 52 */ 53 virtual void restore() = 0; 54 55 protected: 56 /** @brief Erase specified entry d-bus object 57 * 58 * @param[in] entryId - unique identifier of the entry 59 */ 60 void erase(uint32_t entryId); 61 62 /** @brief Erase all BMC dump entries and Delete all Dump files 63 * from Permanent location 64 * 65 */ 66 void deleteAll() override; 67 68 /** @brief sdbusplus DBus bus connection. */ 69 sdbusplus::bus_t& bus; 70 71 /** @brief Dump Entry dbus objects map based on entry id */ 72 std::map<uint32_t, std::unique_ptr<Entry>> entries; 73 74 /** @brief Id of the last Dump entry */ 75 uint32_t lastEntryId; 76 77 /** @bried base object path for the entry object */ 78 std::string baseEntryPath; 79 }; 80 81 } // namespace dump 82 } // namespace phosphor 83