1*4a98e8feSDhruvaraj Subhashchandran #pragma once 2*4a98e8feSDhruvaraj Subhashchandran 3*4a98e8feSDhruvaraj Subhashchandran #include "dump_entry.hpp" 4*4a98e8feSDhruvaraj Subhashchandran #include "xyz/openbmc_project/Dump/Entry/BMC/server.hpp" 5*4a98e8feSDhruvaraj Subhashchandran #include "xyz/openbmc_project/Dump/Entry/server.hpp" 6*4a98e8feSDhruvaraj Subhashchandran #include "xyz/openbmc_project/Object/Delete/server.hpp" 7*4a98e8feSDhruvaraj Subhashchandran #include "xyz/openbmc_project/Time/EpochTime/server.hpp" 8*4a98e8feSDhruvaraj Subhashchandran 9*4a98e8feSDhruvaraj Subhashchandran #include <experimental/filesystem> 10*4a98e8feSDhruvaraj Subhashchandran #include <sdbusplus/bus.hpp> 11*4a98e8feSDhruvaraj Subhashchandran #include <sdbusplus/server/object.hpp> 12*4a98e8feSDhruvaraj Subhashchandran 13*4a98e8feSDhruvaraj Subhashchandran namespace phosphor 14*4a98e8feSDhruvaraj Subhashchandran { 15*4a98e8feSDhruvaraj Subhashchandran namespace dump 16*4a98e8feSDhruvaraj Subhashchandran { 17*4a98e8feSDhruvaraj Subhashchandran namespace bmc 18*4a98e8feSDhruvaraj Subhashchandran { 19*4a98e8feSDhruvaraj Subhashchandran template <typename T> 20*4a98e8feSDhruvaraj Subhashchandran using ServerObject = typename sdbusplus::server::object::object<T>; 21*4a98e8feSDhruvaraj Subhashchandran 22*4a98e8feSDhruvaraj Subhashchandran using EntryIfaces = sdbusplus::server::object::object< 23*4a98e8feSDhruvaraj Subhashchandran sdbusplus::xyz::openbmc_project::Dump::Entry::server::BMC>; 24*4a98e8feSDhruvaraj Subhashchandran 25*4a98e8feSDhruvaraj Subhashchandran namespace fs = std::experimental::filesystem; 26*4a98e8feSDhruvaraj Subhashchandran 27*4a98e8feSDhruvaraj Subhashchandran class Manager; 28*4a98e8feSDhruvaraj Subhashchandran 29*4a98e8feSDhruvaraj Subhashchandran /** @class Entry 30*4a98e8feSDhruvaraj Subhashchandran * @brief OpenBMC Dump Entry implementation. 31*4a98e8feSDhruvaraj Subhashchandran * @details A concrete implementation for the 32*4a98e8feSDhruvaraj Subhashchandran * xyz.openbmc_project.Dump.Entry DBus API 33*4a98e8feSDhruvaraj Subhashchandran */ 34*4a98e8feSDhruvaraj Subhashchandran class Entry : virtual public EntryIfaces, virtual public phosphor::dump::Entry 35*4a98e8feSDhruvaraj Subhashchandran { 36*4a98e8feSDhruvaraj Subhashchandran public: 37*4a98e8feSDhruvaraj Subhashchandran Entry() = delete; 38*4a98e8feSDhruvaraj Subhashchandran Entry(const Entry&) = delete; 39*4a98e8feSDhruvaraj Subhashchandran Entry& operator=(const Entry&) = delete; 40*4a98e8feSDhruvaraj Subhashchandran Entry(Entry&&) = delete; 41*4a98e8feSDhruvaraj Subhashchandran Entry& operator=(Entry&&) = delete; 42*4a98e8feSDhruvaraj Subhashchandran ~Entry() = default; 43*4a98e8feSDhruvaraj Subhashchandran 44*4a98e8feSDhruvaraj Subhashchandran /** @brief Constructor for the Dump Entry Object 45*4a98e8feSDhruvaraj Subhashchandran * @param[in] bus - Bus to attach to. 46*4a98e8feSDhruvaraj Subhashchandran * @param[in] objPath - Object path to attach to 47*4a98e8feSDhruvaraj Subhashchandran * @param[in] dumpId - Dump id. 48*4a98e8feSDhruvaraj Subhashchandran * @param[in] timeStamp - Dump creation timestamp 49*4a98e8feSDhruvaraj Subhashchandran * since the epoch. 50*4a98e8feSDhruvaraj Subhashchandran * @param[in] fileSize - Dump file size in bytes. 51*4a98e8feSDhruvaraj Subhashchandran * @param[in] file - Name of dump file. 52*4a98e8feSDhruvaraj Subhashchandran * @param[in] parent - The dump entry's parent. 53*4a98e8feSDhruvaraj Subhashchandran */ 54*4a98e8feSDhruvaraj Subhashchandran Entry(sdbusplus::bus::bus& bus, const std::string& objPath, uint32_t dumpId, 55*4a98e8feSDhruvaraj Subhashchandran uint64_t timeStamp, uint64_t fileSize, const fs::path& file, 56*4a98e8feSDhruvaraj Subhashchandran phosphor::dump::Manager& parent) : 57*4a98e8feSDhruvaraj Subhashchandran EntryIfaces(bus, objPath.c_str(), true), 58*4a98e8feSDhruvaraj Subhashchandran phosphor::dump::Entry(bus, objPath.c_str(), dumpId, timeStamp, fileSize, 59*4a98e8feSDhruvaraj Subhashchandran parent), 60*4a98e8feSDhruvaraj Subhashchandran file(file){}; 61*4a98e8feSDhruvaraj Subhashchandran 62*4a98e8feSDhruvaraj Subhashchandran /** @brief Delete this d-bus object. 63*4a98e8feSDhruvaraj Subhashchandran */ 64*4a98e8feSDhruvaraj Subhashchandran void delete_() override; 65*4a98e8feSDhruvaraj Subhashchandran 66*4a98e8feSDhruvaraj Subhashchandran private: 67*4a98e8feSDhruvaraj Subhashchandran /** @Dump file name */ 68*4a98e8feSDhruvaraj Subhashchandran fs::path file; 69*4a98e8feSDhruvaraj Subhashchandran }; 70*4a98e8feSDhruvaraj Subhashchandran 71*4a98e8feSDhruvaraj Subhashchandran } // namespace bmc 72*4a98e8feSDhruvaraj Subhashchandran } // namespace dump 73*4a98e8feSDhruvaraj Subhashchandran } // namespace phosphor 74