Use sdbusplus object wrapper
Use sdbusplus::server::object::object to wrap interfaces. This is
the preferred way to ensure created objects emit freedesktop
ObjectManager signals.
Resolves openbmc/openbmc#756
Change-Id: Ia57057e0227ed92bef77f28e42942194f5e802f3
Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com>
diff --git a/generated.mako.cpp b/generated.mako.cpp
index b772bb7..e1925a2 100644
--- a/generated.mako.cpp
+++ b/generated.mako.cpp
@@ -24,7 +24,8 @@
{
"${i}",
details::interface::holder::Holder<
- sdbusplus::${interface_type(i)}>::make,
+ details::ServerObject<
+ sdbusplus::${interface_type(i)}>>::make,
},
% endfor
};
diff --git a/manager.cpp b/manager.cpp
index 77d5990..c62c288 100644
--- a/manager.cpp
+++ b/manager.cpp
@@ -54,7 +54,7 @@
const char *busname,
const char *root,
const char *iface) :
- sdbusplus::server::xyz::openbmc_project::Inventory::Manager(bus, root),
+ details::ServerObject<details::ManagerIface>(bus, root),
_shutdown(false),
_root(root),
_bus(std::move(bus)),
diff --git a/manager.hpp b/manager.hpp
index b254719..31ced21 100644
--- a/manager.hpp
+++ b/manager.hpp
@@ -78,6 +78,13 @@
} // namespace holder
} // namespace interface
+
+template <typename T>
+using ServerObject = typename sdbusplus::server::object::object<T>;
+
+using ManagerIface =
+ sdbusplus::server::xyz::openbmc_project::Inventory::Manager;
+
} // namespace details
/** @class Manager
@@ -87,7 +94,7 @@
* DBus API.
*/
class Manager final :
- public sdbusplus::server::xyz::openbmc_project::Inventory::Manager
+ public details::ServerObject<details::ManagerIface>
{
public:
Manager() = delete;