#pragma once #include "dump_entry.hpp" #include "xyz/openbmc_project/Collection/DeleteAll/server.hpp" #include #include #define CREATE_DUMP_MAX_PARAMS 2 namespace phosphor { namespace dump { using DumpCreateParams = std::map>; using Iface = sdbusplus::server::object_t< sdbusplus::xyz::openbmc_project::Collection::server::DeleteAll>; /** @class Manager * @brief Dump manager base class. * @details A concrete implementation for the * xyz::openbmc_project::Collection::server::DeleteAll. */ class Manager : public Iface { friend class Entry; public: Manager() = delete; Manager(const Manager&) = delete; Manager& operator=(const Manager&) = delete; Manager(Manager&&) = delete; Manager& operator=(Manager&&) = delete; virtual ~Manager() = default; /** @brief Constructor to put object onto bus at a dbus path. * @param[in] bus - Bus to attach to. * @param[in] event - Dump manager sd_event loop. * @param[in] path - Path to attach at. * @param[in] baseEntryPath - Base path of the dump entry. */ Manager(sdbusplus::bus_t& bus, const char* path, const std::string& baseEntryPath) : Iface(bus, path, Iface::action::defer_emit), bus(bus), lastEntryId(0), baseEntryPath(baseEntryPath) {} /** @brief Construct dump d-bus objects from their persisted * representations. */ virtual void restore() = 0; protected: /** @brief Erase specified entry d-bus object * * @param[in] entryId - unique identifier of the entry */ void erase(uint32_t entryId); /** @brief Erase all BMC dump entries and Delete all Dump files * from Permanent location * */ void deleteAll() override; /** @brief sdbusplus DBus bus connection. */ sdbusplus::bus_t& bus; /** @brief Dump Entry dbus objects map based on entry id */ std::map> entries; /** @brief Id of the last Dump entry */ uint32_t lastEntryId; /** @bried base object path for the entry object */ std::string baseEntryPath; }; } // namespace dump } // namespace phosphor