1 #pragma once
2 
3 #include <sdbusplus/bus.hpp>
4 #include <sdbusplus/server/object.hpp>
5 #include <string>
6 #include <xyz/openbmc_project/Network/SystemConfiguration/server.hpp>
7 
8 namespace phosphor
9 {
10 namespace network
11 {
12 
13 using SystemConfigIntf =
14     sdbusplus::xyz::openbmc_project::Network::server::SystemConfiguration;
15 
16 using Iface = sdbusplus::server::object::object<SystemConfigIntf>;
17 
18 class Manager; // forward declaration of network manager.
19 
20 /** @class SystemConfiguration
21  *  @brief Network system configuration.
22  *  @details A concrete implementation for the
23  *  xyz.openbmc_project.Network.SystemConfiguration DBus API.
24  */
25 class SystemConfiguration : public Iface
26 {
27   public:
28     SystemConfiguration() = default;
29     SystemConfiguration(const SystemConfiguration&) = delete;
30     SystemConfiguration& operator=(const SystemConfiguration&) = delete;
31     SystemConfiguration(SystemConfiguration&&) = delete;
32     SystemConfiguration& operator=(SystemConfiguration&&) = delete;
33     virtual ~SystemConfiguration() = default;
34 
35     /** @brief Constructor to put object onto bus at a dbus path.
36      *  @param[in] bus - Bus to attach to.
37      *  @param[in] objPath - Path to attach at.
38      *  @param[in] parent - Parent object.
39      */
40     SystemConfiguration(sdbusplus::bus::bus& bus, const std::string& objPath);
41 
42     /** @brief set the hostname of the system.
43      *  @param[in] name - host name of the system.
44      */
45     std::string hostName(std::string name) override;
46 
47   private:
48     /** @brief get the hostname from the system by doing
49      *         dbus call to hostnamed service.
50      */
51     std::string getHostNameFromSystem() const;
52 
53     /** @brief Persistent sdbusplus DBus bus connection. */
54     sdbusplus::bus::bus& bus;
55 };
56 
57 } // namespace network
58 } // namespace phosphor
59