blob: 4935ed0c718f55eff90c3aa994f87425f8e855e5 [file] [log] [blame]
Dhruvaraj Subhashchandran62337a92020-11-22 21:24:30 -06001#pragma once
2
3#include "dump_manager.hpp"
4#include "xyz/openbmc_project/Dump/NewDump/server.hpp"
5
6#include <com/ibm/Dump/Create/server.hpp>
7#include <sdbusplus/bus.hpp>
8#include <sdbusplus/server/object.hpp>
9#include <xyz/openbmc_project/Dump/Create/server.hpp>
10
Dhruvaraj Subhashchandran341d6832021-01-15 06:28:04 -060011namespace openpower
Dhruvaraj Subhashchandran62337a92020-11-22 21:24:30 -060012{
13namespace dump
14{
15namespace resource
16{
17
18constexpr uint32_t INVALID_SOURCE_ID = 0xFFFFFFFF;
Patrick Williams9b18bf22022-07-22 19:26:55 -050019using NotifyIface = sdbusplus::server::object_t<
Dhruvaraj Subhashchandran62337a92020-11-22 21:24:30 -060020 sdbusplus::xyz::openbmc_project::Dump::server::Create,
21 sdbusplus::com::ibm::Dump::server::Create,
22 sdbusplus::xyz::openbmc_project::Dump::server::NewDump>;
23
24/** @class Manager
25 * @brief Resource Dump manager implementation.
26 * @details A concrete implementation for the
27 * xyz.openbmc_project.Dump.Notify and
28 * xyz.openbmc_project.Dump.Create DBus APIs
29 */
Jayanth Othayoth0af74a52021-04-08 03:55:21 -050030class Manager :
31 virtual public NotifyIface,
32 virtual public phosphor::dump::Manager
Dhruvaraj Subhashchandran62337a92020-11-22 21:24:30 -060033{
34 public:
35 Manager() = delete;
36 Manager(const Manager&) = default;
37 Manager& operator=(const Manager&) = delete;
38 Manager(Manager&&) = delete;
39 Manager& operator=(Manager&&) = delete;
40 virtual ~Manager() = default;
41
42 /** @brief Constructor to put object onto bus at a dbus path.
43 * @param[in] bus - Bus to attach to.
44 * @param[in] path - Path to attach at.
45 * @param[in] baseEntryPath - Base path of the dump entry.
46 */
Patrick Williams9b18bf22022-07-22 19:26:55 -050047 Manager(sdbusplus::bus_t& bus, const char* path,
Dhruvaraj Subhashchandran62337a92020-11-22 21:24:30 -060048 const std::string& baseEntryPath) :
49 NotifyIface(bus, path),
50 phosphor::dump::Manager(bus, path, baseEntryPath)
Jayanth Othayoth0af74a52021-04-08 03:55:21 -050051 {}
Dhruvaraj Subhashchandran62337a92020-11-22 21:24:30 -060052
53 void restore() override
54 {
55 // TODO #2597 Implement the restore to restore the dump entries
56 // after the service restart.
57 }
58
59 /** @brief Notify the resource dump manager about creation of a new dump.
60 * @param[in] dumpId - Id from the source of the dump.
61 * @param[in] size - Size of the dump.
62 */
63 void notify(uint32_t dumpId, uint64_t size) override;
64
65 /** @brief Implementation for CreateDump
66 * Method to create Dump.
67 *
68 * @return object_path - The object path of the new entry.
69 */
70 sdbusplus::message::object_path
Dhruvaraj Subhashchandranddc33662021-07-19 09:28:42 -050071 createDump(phosphor::dump::DumpCreateParams params) override;
Dhruvaraj Subhashchandran62337a92020-11-22 21:24:30 -060072};
73
74} // namespace resource
75} // namespace dump
Dhruvaraj Subhashchandran341d6832021-01-15 06:28:04 -060076} // namespace openpower