1 #pragma once 2 3 #include "config.h" 4 5 #include "xyz/openbmc_project/Logging/ErrorBlocksTransition/server.hpp" 6 7 #include <sdbusplus/bus.hpp> 8 #include <sdbusplus/server/object.hpp> 9 #include <xyz/openbmc_project/Association/Definitions/server.hpp> 10 11 namespace phosphor 12 { 13 namespace logging 14 { 15 16 using BlockIface = sdbusplus::server::object_t< 17 sdbusplus::server::xyz::openbmc_project::logging::ErrorBlocksTransition, 18 sdbusplus::server::xyz::openbmc_project::association::Definitions>; 19 20 using AssociationList = 21 std::vector<std::tuple<std::string, std::string, std::string>>; 22 23 /** @class Block 24 * @brief OpenBMC logging Block implementation. 25 * @details A concrete implementation for the 26 * xyz.openbmc_project.Logging.ErrorBlocksTransition DBus API 27 */ 28 class Block : public BlockIface 29 { 30 public: 31 Block() = delete; 32 Block(const Block&) = delete; 33 Block& operator=(const Block&) = delete; 34 Block(Block&&) = delete; 35 Block& operator=(Block&&) = delete; 36 virtual ~Block() = default; 37 38 /** @brief Constructor to put object onto bus at a dbus path. 39 * @param[in] bus - Bus to attach to. 40 * @param[in] path - Path to attach at. 41 * @param[in] entryId - Distinct ID of the error. 42 */ 43 Block(sdbusplus::bus_t& bus, const std::string& path, uint32_t entryId) : 44 BlockIface(bus, path.c_str()), entryId(entryId) 45 { 46 std::string entryPath{std::string(OBJ_ENTRY) + '/' + 47 std::to_string(entryId)}; 48 AssociationList assoc{std::make_tuple(std::string{"blocking_error"}, 49 std::string{"blocking_obj"}, 50 entryPath)}; 51 associations(std::move(assoc)); 52 }; 53 54 uint32_t entryId; 55 56 private: 57 }; 58 59 } // namespace logging 60 } // namespace phosphor 61