From 232f5298dbc62f178b2c23aa474479ea2386b5d9 Mon Sep 17 00:00:00 2001 From: Tom Joseph Date: Fri, 7 Jul 2017 20:14:02 +0530 Subject: Add API to Read the DBUS logging entry object paths Change-Id: Ib1a9693dea5fa614fe3e4952f32778d8dde225d4 Signed-off-by: Tom Joseph --- selutility.cpp | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) (limited to 'selutility.cpp') diff --git a/selutility.cpp b/selutility.cpp index 3f9d9ab..f52d51e 100644 --- a/selutility.cpp +++ b/selutility.cpp @@ -1,5 +1,6 @@ #include #include +#include #include #include "host-ipmid/ipmid-api.h" #include "xyz/openbmc_project/Common/error.hpp" @@ -214,6 +215,43 @@ std::chrono::seconds getEntryTimeStamp(const std::string& objPath) return std::chrono::duration_cast(chronoTimeStamp); } +void readLoggingObjectPaths(ObjectPaths& paths) +{ + sdbusplus::bus::bus bus{ipmid_get_sd_bus_connection()}; + auto depth = 0; + paths.clear(); + + auto mapperCall = bus.new_method_call(mapperBusName, + mapperObjPath, + mapperIntf, + "GetSubTreePaths"); + mapperCall.append(logBasePath); + mapperCall.append(depth); + mapperCall.append(ObjectPaths({logEntryIntf})); + + auto reply = bus.call(mapperCall); + if (reply.is_method_error()) + { + log("Error in reading logging entry object paths"); + } + else + { + reply.read(paths); + + std::sort(paths.begin(), paths.end(), [](const std::string& a, + const std::string& b) + { + namespace fs = std::experimental::filesystem; + fs::path pathA(a); + fs::path pathB(b); + auto idA = std::stoul(pathA.filename().string()); + auto idB = std::stoul(pathB.filename().string()); + + return idA < idB; + }); + } +} + } // namespace sel } // namespace ipmi -- cgit v1.2.1