| #pragma once |
| #include "xyz/openbmc_project/Network/Client/server.hpp" |
| #include "xyz/openbmc_project/Object/Delete/server.hpp" |
| |
| #include <sdbusplus/bus.hpp> |
| #include <sdbusplus/server/object.hpp> |
| |
| #include <filesystem> |
| #include <string> |
| |
| 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 |