1 #pragma once
2 
3 #include "dump_manager.hpp"
4 #include "dump_utils.hpp"
5 #include "xyz/openbmc_project/Dump/NewDump/server.hpp"
6 
7 #include <sdbusplus/bus.hpp>
8 #include <sdbusplus/server/object.hpp>
9 #include <xyz/openbmc_project/Dump/Create/server.hpp>
10 
11 namespace phosphor
12 {
13 namespace dump
14 {
15 namespace system
16 {
17 
18 constexpr uint32_t INVALID_SOURCE_ID = 0xFFFFFFFF;
19 using NotifyIface = sdbusplus::server::object::object<
20     sdbusplus::xyz::openbmc_project::Dump::server::Create,
21     sdbusplus::xyz::openbmc_project::Dump::server::NewDump>;
22 
23 /** @class Manager
24  *  @brief System Dump  manager implementation.
25  *  @details A concrete implementation for the
26  *  xyz.openbmc_project.Dump.Notify DBus API
27  */
28 class Manager : virtual public NotifyIface,
29                 virtual public phosphor::dump::Manager
30 {
31   public:
32     Manager() = delete;
33     Manager(const Manager&) = default;
34     Manager& operator=(const Manager&) = delete;
35     Manager(Manager&&) = delete;
36     Manager& operator=(Manager&&) = delete;
37     virtual ~Manager() = default;
38 
39     /** @brief Constructor to put object onto bus at a dbus path.
40      *  @param[in] bus - Bus to attach to.
41      *  @param[in] event - Dump manager sd_event loop.
42      *  @param[in] path - Path to attach at.
43      *  @param[in] baseEntryPath - Base path of the dump entry.
44      */
45     Manager(sdbusplus::bus::bus& bus, const char* path,
46             const std::string& baseEntryPath) :
47         NotifyIface(bus, path),
48         phosphor::dump::Manager(bus, path, baseEntryPath)
49     {
50     }
51 
52     void restore() override
53     {
54         // TODO #2597  Implement the restore to restore the dump entries
55         // after the service restart.
56     }
57 
58     /** @brief Notify the system dump manager about creation of a new dump.
59      *  @param[in] dumpType - Type of the Dump.
60      *  @param[in] dumpId - Id from the source of the dump.
61      *  @param[in] size - Size of the dump.
62      */
63     void notify(NewDump::DumpType dumpType, uint32_t dumpId,
64                 uint64_t size) override;
65 
66     /** @brief Implementation for CreateDump
67      *  Method to create a new system dump entry when user
68      *  requests for a new system dump.
69      *
70      *  @return object_path - The path to the new dump entry.
71      */
72     sdbusplus::message::object_path createDump() override;
73 };
74 
75 } // namespace system
76 } // namespace dump
77 } // namespace phosphor
78