summaryrefslogtreecommitdiff
path: root/include/redfish_v1.hpp
diff options
context:
space:
mode:
authorEd Tanous <ed.tanous@intel.com>2018-04-12 22:17:20 +0300
committerEd Tanous <ed.tanous@intel.com>2018-06-29 21:11:20 +0300
commitaa2e59c10280ca4819926905e77a076bdb72a03f (patch)
treeda6549670170adddb92459cea40ce4c05fe8d213 /include/redfish_v1.hpp
parent274fad5ad0e7634d9ed3e174695136e674688e0c (diff)
downloadbmcweb-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.hpp29
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