diff options
author | Ed Tanous <ed.tanous@intel.com> | 2018-04-12 22:17:20 +0300 |
---|---|---|
committer | Ed Tanous <ed.tanous@intel.com> | 2018-06-29 21:11:20 +0300 |
commit | aa2e59c10280ca4819926905e77a076bdb72a03f (patch) | |
tree | da6549670170adddb92459cea40ce4c05fe8d213 /include/redfish_v1.hpp | |
parent | 274fad5ad0e7634d9ed3e174695136e674688e0c (diff) | |
download | bmcweb-aa2e59c10280ca4819926905e77a076bdb72a03f.tar.xz |
Move bmcweb over to sdbusplus
This patchset moves bmcweb from using boost-dbus over entirely to
sdbusplus. This has some nice improvements in performance (about 30%
of CPU cycles saved in dbus transactions), as well as makes this
project manuver closer to the upstream way of thinking.
Changes to bmcweb are largely ceremonial, and fall into a few
categories:
1. Moves async_method_call instances to the new format, and deletes any
use of the "endpoint" object in leiu of the sdbusplus style interface
2. sdbus object_path object doesn't allow access to the string
directly, so code that uses it moves to explicit casts.
3. The mapbox variant, while attempting to recreate boost::variant,
misses a T* get<T*>() method implementation, which allows using variant
without exceptions. Currently, there is an overload for
mapbox::get_ptr implementation which replecates the functionality.
Tested by: Booting the bmcweb on a target, iterating through redfish
basic phosphor-webui usage, and websockets usage
Change-Id: I2d95882908d6eb6dba00b9219a221dd96449ca7b
Signed-off-by: Ed Tanous <ed.tanous@intel.com>
Diffstat (limited to 'include/redfish_v1.hpp')
-rw-r--r-- | include/redfish_v1.hpp | 29 |
1 files changed, 15 insertions, 14 deletions
diff --git a/include/redfish_v1.hpp b/include/redfish_v1.hpp index c28208dbe5..03b905158c 100644 --- a/include/redfish_v1.hpp +++ b/include/redfish_v1.hpp @@ -1,10 +1,6 @@ #pragma once -#include <dbus/connection.hpp> -#include <dbus/endpoint.hpp> -#include <dbus/filter.hpp> -#include <dbus/match.hpp> -#include <dbus/message.hpp> +#include <dbus_singleton.hpp> #include <persistent_data_middleware.hpp> #include <token_authorization_middleware.hpp> #include <fstream> @@ -43,10 +39,13 @@ std::string execute_process(const char* cmd) { return result; } +// GetManagedObjects unpack type. Observe that variant has only one bool type, +// because we don't actually use the values it provides using ManagedObjectType = std::vector<std::pair< - dbus::object_path, boost::container::flat_map< - std::string, boost::container::flat_map< - std::string, dbus::dbus_variant>>>>; + sdbusplus::message::object_path, + boost::container::flat_map< + std::string, boost::container::flat_map< + std::string, sdbusplus::message::variant<bool>>>>>; template <typename... Middlewares> void request_routes(Crow<Middlewares...>& app) { @@ -79,7 +78,8 @@ void request_routes(Crow<Middlewares...>& app) { nlohmann::json member_array = nlohmann::json::array(); int user_index = 0; for (auto& user : users) { - const std::string& path = user.first.value; + const std::string& path = + static_cast<std::string>(user.first); std::size_t last_index = path.rfind("/"); if (last_index == std::string::npos) { last_index = 0; @@ -94,8 +94,8 @@ void request_routes(Crow<Middlewares...>& app) { } res.end(); }, - {"xyz.openbmc_project.User.Manager", "/xyz/openbmc_project/user", - "org.freedesktop.DBus.ObjectManager", "GetManagedObjects"}); + "xyz.openbmc_project.User.Manager", "/xyz/openbmc_project/user", + "org.freedesktop.DBus.ObjectManager", "GetManagedObjects"); }); CROW_ROUTE(app, "/redfish/v1/AccountService/Accounts/<str>/") @@ -110,7 +110,8 @@ void request_routes(Crow<Middlewares...>& app) { res.code = 500; } else { for (auto& user : users) { - const std::string& path = user.first.value; + const std::string& path = + static_cast<std::string>(user.first); std::size_t last_index = path.rfind("/"); if (last_index == std::string::npos) { last_index = 0; @@ -145,8 +146,8 @@ void request_routes(Crow<Middlewares...>& app) { } res.end(); }, - {"xyz.openbmc_project.User.Manager", "/xyz/openbmc_project/user", - "org.freedesktop.DBus.ObjectManager", "GetManagedObjects"}); + "xyz.openbmc_project.User.Manager", "/xyz/openbmc_project/user", + "org.freedesktop.DBus.ObjectManager", "GetManagedObjects"); }); } } // namespace redfish |