#pragma once #include "xyz/openbmc_project/Network/Client/server.hpp" #include "xyz/openbmc_project/Object/Delete/server.hpp" #include #include #include #include namespace phosphor { namespace network { namespace snmp { class ConfManager; using Ifaces = sdbusplus::server::object::object< sdbusplus::xyz::openbmc_project::Network::server::Client, sdbusplus::xyz::openbmc_project::Object::server::Delete>; using Id = size_t; /** @class Client * @brief represents the snmp client configuration * @details A concrete implementation for the * xyz.openbmc_project.Network.Client Dbus interface. */ class Client : public Ifaces { public: Client() = delete; Client(const Client&) = delete; Client& operator=(const Client&) = delete; Client(Client&&) = delete; Client& operator=(Client&&) = delete; virtual ~Client() = default; /** @brief Constructor to put object onto bus at a dbus path. * @param[in] bus - Bus to attach to. * @param[in] objPath - Path to attach at. * @param[in] parent - Parent D-bus Object. * @param[in] address - IPaddress/Hostname. * @param[in] port - network port. */ Client(sdbusplus::bus::bus& bus, const char* objPath, ConfManager& parent, const std::string& address, uint16_t port); /** @brief Constructor to put object onto bus at a dbus path. * @param[in] bus - Bus to attach to. * @param[in] objPath - Path to attach at. * @param[in] parent - Parent D-bus Object. */ Client(sdbusplus::bus::bus& bus, const char* objPath, ConfManager& parent) : Ifaces(bus, objPath, Ifaces::action::defer_emit), id(std::stol(std::filesystem::path(objPath).filename())), parent(parent) {} /** @brief Update the address of the object. * * @param[in] value - IP address * * @return On success the updated IP address */ std::string address(std::string value) override; /** @brief Update the port * * @param[in] value - port number * * @return On success the updated port number */ uint16_t port(uint16_t value) override; using sdbusplus::xyz::openbmc_project::Network::server::Client::address; using sdbusplus::xyz::openbmc_project::Network::server::Client::port; /** @brief Delete this d-bus object. */ void delete_() override; private: /** Client ID. */ Id id; /** @brief Parent D-Bus Object. */ ConfManager& parent; }; } // namespace snmp } // namespace network } // namespace phosphor