| #pragma once | 
 |  | 
 | #include "config.h" | 
 |  | 
 | #include "xyz/openbmc_project/Logging/ErrorBlocksTransition/server.hpp" | 
 |  | 
 | #include <sdbusplus/bus.hpp> | 
 | #include <sdbusplus/server/object.hpp> | 
 | #include <xyz/openbmc_project/Association/Definitions/server.hpp> | 
 |  | 
 | namespace phosphor | 
 | { | 
 | namespace logging | 
 | { | 
 |  | 
 | using BlockIface = sdbusplus::server::object_t< | 
 |     sdbusplus::server::xyz::openbmc_project::logging::ErrorBlocksTransition, | 
 |     sdbusplus::server::xyz::openbmc_project::association::Definitions>; | 
 |  | 
 | using AssociationList = | 
 |     std::vector<std::tuple<std::string, std::string, std::string>>; | 
 |  | 
 | /** @class Block | 
 |  *  @brief OpenBMC logging Block implementation. | 
 |  *  @details A concrete implementation for the | 
 |  *  xyz.openbmc_project.Logging.ErrorBlocksTransition DBus API | 
 |  */ | 
 | class Block : public BlockIface | 
 | { | 
 |   public: | 
 |     Block() = delete; | 
 |     Block(const Block&) = delete; | 
 |     Block& operator=(const Block&) = delete; | 
 |     Block(Block&&) = delete; | 
 |     Block& operator=(Block&&) = delete; | 
 |     virtual ~Block() = default; | 
 |  | 
 |     /** @brief Constructor to put object onto bus at a dbus path. | 
 |      *  @param[in] bus - Bus to attach to. | 
 |      *  @param[in] path - Path to attach at. | 
 |      *  @param[in] entryId - Distinct ID of the error. | 
 |      */ | 
 |     Block(sdbusplus::bus_t& bus, const std::string& path, uint32_t entryId) : | 
 |         BlockIface(bus, path.c_str()), entryId(entryId) | 
 |     { | 
 |         std::string entryPath{ | 
 |             std::string(OBJ_ENTRY) + '/' + std::to_string(entryId)}; | 
 |         AssociationList assoc{ | 
 |             std::make_tuple(std::string{"blocking_error"}, | 
 |                             std::string{"blocking_obj"}, entryPath)}; | 
 |         associations(std::move(assoc)); | 
 |     }; | 
 |  | 
 |     uint32_t entryId; | 
 |  | 
 |   private: | 
 | }; | 
 |  | 
 | } // namespace logging | 
 | } // namespace phosphor |