From 5a39f77a17fa28911c87caea1e2903c059e7ec41 Mon Sep 17 00:00:00 2001 From: Patrick Williams Date: Fri, 20 Oct 2023 11:20:21 -0500 Subject: clang-format: copy latest and re-format clang-format-17 has some backwards incompatible changes that require additional settings for best compatibility and re-running the formatter. Copy the latest .clang-format from the docs repository and reformat the repository. Change-Id: I2f9540cf0d545a2da4d6289fc87b754f684bc9a7 Signed-off-by: Patrick Williams --- include/dbus_monitor.hpp | 229 +++++++++++++++++++++++------------------------ 1 file changed, 114 insertions(+), 115 deletions(-) (limited to 'include/dbus_monitor.hpp') diff --git a/include/dbus_monitor.hpp b/include/dbus_monitor.hpp index 26827172a4..25f0c7f772 100644 --- a/include/dbus_monitor.hpp +++ b/include/dbus_monitor.hpp @@ -114,141 +114,140 @@ inline void requestRoutes(App& app) .privileges({{"Login"}}) .websocket() .onopen([&](crow::websocket::Connection& conn) { - BMCWEB_LOG_DEBUG("Connection {} opened", logPtr(&conn)); - sessions.try_emplace(&conn); - }) + BMCWEB_LOG_DEBUG("Connection {} opened", logPtr(&conn)); + sessions.try_emplace(&conn); + }) .onclose([&](crow::websocket::Connection& conn, const std::string&) { - sessions.erase(&conn); - }) + sessions.erase(&conn); + }) .onmessage([&](crow::websocket::Connection& conn, const std::string& data, bool) { - const auto sessionPair = sessions.find(&conn); - if (sessionPair == sessions.end()) - { - conn.close("Internal error"); - } - DbusWebsocketSession& thisSession = sessionPair->second; - BMCWEB_LOG_DEBUG("Connection {} received {}", logPtr(&conn), data); - nlohmann::json j = nlohmann::json::parse(data, nullptr, false); - if (j.is_discarded()) - { - BMCWEB_LOG_ERROR("Unable to parse json data for monitor"); - conn.close("Unable to parse json request"); - return; - } - nlohmann::json::iterator interfaces = j.find("interfaces"); - if (interfaces != j.end()) + const auto sessionPair = sessions.find(&conn); + if (sessionPair == sessions.end()) + { + conn.close("Internal error"); + } + DbusWebsocketSession& thisSession = sessionPair->second; + BMCWEB_LOG_DEBUG("Connection {} received {}", logPtr(&conn), data); + nlohmann::json j = nlohmann::json::parse(data, nullptr, false); + if (j.is_discarded()) + { + BMCWEB_LOG_ERROR("Unable to parse json data for monitor"); + conn.close("Unable to parse json request"); + return; + } + nlohmann::json::iterator interfaces = j.find("interfaces"); + if (interfaces != j.end()) + { + thisSession.interfaces.reserve(interfaces->size()); + for (auto& interface : *interfaces) { - thisSession.interfaces.reserve(interfaces->size()); - for (auto& interface : *interfaces) + const std::string* str = + interface.get_ptr(); + if (str != nullptr) { - const std::string* str = - interface.get_ptr(); - if (str != nullptr) - { - thisSession.interfaces.insert(*str); - } + thisSession.interfaces.insert(*str); } } + } + + nlohmann::json::iterator paths = j.find("paths"); + if (paths == j.end()) + { + BMCWEB_LOG_ERROR("Unable to find paths in json data"); + conn.close("Unable to find paths in json data"); + return; + } - nlohmann::json::iterator paths = j.find("paths"); - if (paths == j.end()) + size_t interfaceCount = thisSession.interfaces.size(); + if (interfaceCount == 0) + { + interfaceCount = 1; + } + // Reserve our matches upfront. For each path there is 1 for + // interfacesAdded, and InterfaceCount number for + // PropertiesChanged + thisSession.matches.reserve(thisSession.matches.size() + + paths->size() * (1U + interfaceCount)); + + // These regexes derived on the rules here: + // https://dbus.freedesktop.org/doc/dbus-specification.html#message-protocol-names + static std::regex validPath("^/([A-Za-z0-9_]+/?)*$"); + static std::regex validInterface( + "^[A-Za-z_][A-Za-z0-9_]*(\\.[A-Za-z_][A-Za-z0-9_]*)+$"); + + for (const auto& thisPath : *paths) + { + const std::string* thisPathString = + thisPath.get_ptr(); + if (thisPathString == nullptr) { - BMCWEB_LOG_ERROR("Unable to find paths in json data"); - conn.close("Unable to find paths in json data"); + BMCWEB_LOG_ERROR("subscribe path isn't a string?"); + conn.close(); return; } - - size_t interfaceCount = thisSession.interfaces.size(); - if (interfaceCount == 0) + if (!std::regex_match(*thisPathString, validPath)) { - interfaceCount = 1; + BMCWEB_LOG_ERROR("Invalid path name {}", *thisPathString); + conn.close(); + return; } - // Reserve our matches upfront. For each path there is 1 for - // interfacesAdded, and InterfaceCount number for - // PropertiesChanged - thisSession.matches.reserve(thisSession.matches.size() + - paths->size() * (1U + interfaceCount)); - - // These regexes derived on the rules here: - // https://dbus.freedesktop.org/doc/dbus-specification.html#message-protocol-names - static std::regex validPath("^/([A-Za-z0-9_]+/?)*$"); - static std::regex validInterface( - "^[A-Za-z_][A-Za-z0-9_]*(\\.[A-Za-z_][A-Za-z0-9_]*)+$"); - - for (const auto& thisPath : *paths) + std::string propertiesMatchString = + ("type='signal'," + "interface='org.freedesktop.DBus.Properties'," + "path_namespace='" + + *thisPathString + + "'," + "member='PropertiesChanged'"); + // If interfaces weren't specified, add a single match for all + // interfaces + if (thisSession.interfaces.empty()) { - const std::string* thisPathString = - thisPath.get_ptr(); - if (thisPathString == nullptr) - { - BMCWEB_LOG_ERROR("subscribe path isn't a string?"); - conn.close(); - return; - } - if (!std::regex_match(*thisPathString, validPath)) - { - BMCWEB_LOG_ERROR("Invalid path name {}", *thisPathString); - conn.close(); - return; - } - std::string propertiesMatchString = - ("type='signal'," - "interface='org.freedesktop.DBus.Properties'," - "path_namespace='" + - *thisPathString + - "'," - "member='PropertiesChanged'"); - // If interfaces weren't specified, add a single match for all - // interfaces - if (thisSession.interfaces.empty()) - { - BMCWEB_LOG_DEBUG("Creating match {}", - propertiesMatchString); + BMCWEB_LOG_DEBUG("Creating match {}", propertiesMatchString); - thisSession.matches.emplace_back( - std::make_unique( - *crow::connections::systemBus, - propertiesMatchString, onPropertyUpdate, &conn)); - } - else + thisSession.matches.emplace_back( + std::make_unique( + *crow::connections::systemBus, propertiesMatchString, + onPropertyUpdate, &conn)); + } + else + { + // If interfaces were specified, add a match for each + // interface + for (const std::string& interface : thisSession.interfaces) { - // If interfaces were specified, add a match for each - // interface - for (const std::string& interface : thisSession.interfaces) + if (!std::regex_match(interface, validInterface)) { - if (!std::regex_match(interface, validInterface)) - { - BMCWEB_LOG_ERROR("Invalid interface name {}", - interface); - conn.close(); - return; - } - std::string ifaceMatchString = propertiesMatchString; - ifaceMatchString += ",arg0='"; - ifaceMatchString += interface; - ifaceMatchString += "'"; - BMCWEB_LOG_DEBUG("Creating match {}", ifaceMatchString); - thisSession.matches.emplace_back( - std::make_unique( - *crow::connections::systemBus, ifaceMatchString, - onPropertyUpdate, &conn)); + BMCWEB_LOG_ERROR("Invalid interface name {}", + interface); + conn.close(); + return; } + std::string ifaceMatchString = propertiesMatchString; + ifaceMatchString += ",arg0='"; + ifaceMatchString += interface; + ifaceMatchString += "'"; + BMCWEB_LOG_DEBUG("Creating match {}", ifaceMatchString); + thisSession.matches.emplace_back( + std::make_unique( + *crow::connections::systemBus, ifaceMatchString, + onPropertyUpdate, &conn)); } - std::string objectManagerMatchString = - ("type='signal'," - "interface='org.freedesktop.DBus.ObjectManager'," - "path_namespace='" + - *thisPathString + - "'," - "member='InterfacesAdded'"); - BMCWEB_LOG_DEBUG("Creating match {}", objectManagerMatchString); - thisSession.matches.emplace_back( - std::make_unique( - *crow::connections::systemBus, objectManagerMatchString, - onPropertyUpdate, &conn)); } - }); + std::string objectManagerMatchString = + ("type='signal'," + "interface='org.freedesktop.DBus.ObjectManager'," + "path_namespace='" + + *thisPathString + + "'," + "member='InterfacesAdded'"); + BMCWEB_LOG_DEBUG("Creating match {}", objectManagerMatchString); + thisSession.matches.emplace_back( + std::make_unique( + *crow::connections::systemBus, objectManagerMatchString, + onPropertyUpdate, &conn)); + } + }); } } // namespace dbus_monitor } // namespace crow -- cgit v1.2.3