blob: 1d25e6c2bee0bba26441f7354b64c00d028c8e1d [file] [log] [blame]
#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