xref: /openbmc/phosphor-debug-collector/bmc_dump_entry.hpp (revision 4a98e8fe86a2423145dea5ac5edc2d5f6ccd2ebc)
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