16a0ef6f5SAndrew Geissler #pragma once 26a0ef6f5SAndrew Geissler 30add0b79SAndrew Geissler #include "config.h" 40add0b79SAndrew Geissler 56a0ef6f5SAndrew Geissler #include "xyz/openbmc_project/Logging/ErrorBlocksTransition/server.hpp" 66a0ef6f5SAndrew Geissler 76a0ef6f5SAndrew Geissler #include <sdbusplus/bus.hpp> 86a0ef6f5SAndrew Geissler #include <sdbusplus/server/object.hpp> 90add0b79SAndrew Geissler #include <xyz/openbmc_project/Association/Definitions/server.hpp> 106a0ef6f5SAndrew Geissler 116a0ef6f5SAndrew Geissler namespace phosphor 126a0ef6f5SAndrew Geissler { 136a0ef6f5SAndrew Geissler namespace logging 146a0ef6f5SAndrew Geissler { 156a0ef6f5SAndrew Geissler 1645e83521SPatrick Williams using BlockIface = sdbusplus::server::object_t< 176ddbf69eSWilly Tu sdbusplus::server::xyz::openbmc_project::logging::ErrorBlocksTransition, 186ddbf69eSWilly Tu sdbusplus::server::xyz::openbmc_project::association::Definitions>; 190add0b79SAndrew Geissler 200add0b79SAndrew Geissler using AssociationList = 210add0b79SAndrew Geissler std::vector<std::tuple<std::string, std::string, std::string>>; 226a0ef6f5SAndrew Geissler 236a0ef6f5SAndrew Geissler /** @class Block 246a0ef6f5SAndrew Geissler * @brief OpenBMC logging Block implementation. 256a0ef6f5SAndrew Geissler * @details A concrete implementation for the 266a0ef6f5SAndrew Geissler * xyz.openbmc_project.Logging.ErrorBlocksTransition DBus API 276a0ef6f5SAndrew Geissler */ 286a0ef6f5SAndrew Geissler class Block : public BlockIface 296a0ef6f5SAndrew Geissler { 306a0ef6f5SAndrew Geissler public: 316a0ef6f5SAndrew Geissler Block() = delete; 326a0ef6f5SAndrew Geissler Block(const Block&) = delete; 336a0ef6f5SAndrew Geissler Block& operator=(const Block&) = delete; 346a0ef6f5SAndrew Geissler Block(Block&&) = delete; 356a0ef6f5SAndrew Geissler Block& operator=(Block&&) = delete; 366a0ef6f5SAndrew Geissler virtual ~Block() = default; 376a0ef6f5SAndrew Geissler 386a0ef6f5SAndrew Geissler /** @brief Constructor to put object onto bus at a dbus path. 396a0ef6f5SAndrew Geissler * @param[in] bus - Bus to attach to. 406a0ef6f5SAndrew Geissler * @param[in] path - Path to attach at. 416a0ef6f5SAndrew Geissler * @param[in] entryId - Distinct ID of the error. 426a0ef6f5SAndrew Geissler */ Block(sdbusplus::bus_t & bus,const std::string & path,uint32_t entryId)4345e83521SPatrick Williams Block(sdbusplus::bus_t& bus, const std::string& path, uint32_t entryId) : 440add0b79SAndrew Geissler BlockIface(bus, path.c_str()), entryId(entryId) 450add0b79SAndrew Geissler { 46*075c7923SPatrick Williams std::string entryPath{ 47*075c7923SPatrick Williams std::string(OBJ_ENTRY) + '/' + std::to_string(entryId)}; 48*075c7923SPatrick Williams AssociationList assoc{ 49*075c7923SPatrick Williams std::make_tuple(std::string{"blocking_error"}, 50*075c7923SPatrick Williams std::string{"blocking_obj"}, entryPath)}; 510add0b79SAndrew Geissler associations(std::move(assoc)); 520add0b79SAndrew Geissler }; 536a0ef6f5SAndrew Geissler 546a0ef6f5SAndrew Geissler uint32_t entryId; 556a0ef6f5SAndrew Geissler 566a0ef6f5SAndrew Geissler private: 576a0ef6f5SAndrew Geissler }; 586a0ef6f5SAndrew Geissler 596a0ef6f5SAndrew Geissler } // namespace logging 606a0ef6f5SAndrew Geissler } // namespace phosphor 61