Throw runtime_error instead of MethodEror
As suggested, when error occurs in getService/getProperty, it means
runtime error, so the code is better to throw std::runtime_error instead
of a sdbusplus exception.
Tested: Build the code correctly.
Change-Id: Iddca72ac1fdd07ed6b731b6509eebbfa9d2579d3
Signed-off-by: Lei YU <mine260309@gmail.com>
diff --git a/Makefile.am b/Makefile.am
index 09e8807..fce04e0 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -4,13 +4,6 @@
noinst_LTLIBRARIES = libtimemanager.la
-generated_source = xyz/openbmc_project/Time/Internal/error.cpp
-
-BUILT_SOURCES = ${generated_source} \
- xyz/openbmc_project/Time/Internal/error.hpp
-
-CLEANFILES = ${BUILT_SOURCES}
-
libtimemanager_la_SOURCES = \
epoch_base.cpp \
bmc_epoch.cpp \
@@ -38,12 +31,4 @@
phosphor_timemanager_LDFLAGS = $(generic_ld_flags)
-xyz/openbmc_project/Time/Internal/error.hpp: ${top_srcdir}/xyz/openbmc_project/Time/Internal.errors.yaml
- @mkdir -p `dirname $@`
- $(SDBUSPLUSPLUS) -r $(top_srcdir) error exception-header xyz.openbmc_project.Time.Internal > $@
-
-xyz/openbmc_project/Time/Internal/error.cpp: ${top_srcdir}/xyz/openbmc_project/Time/Internal.errors.yaml
- @mkdir -p `dirname $@`
- $(SDBUSPLUSPLUS) -r $(top_srcdir) error exception-cpp xyz.openbmc_project.Time.Internal> $@
-
SUBDIRS = . test
diff --git a/elog-errors.hpp b/elog-errors.hpp
deleted file mode 100644
index aa8d581..0000000
--- a/elog-errors.hpp
+++ /dev/null
@@ -1,116 +0,0 @@
-// This file was autogenerated. Do not edit!
-// See elog-gen.py for more details
-#pragma once
-
-#include <string>
-#include <tuple>
-#include <type_traits>
-#include <sdbusplus/exception.hpp>
-#include <phosphor-logging/log.hpp>
-#include <phosphor-logging/elog.hpp>
-
-namespace sdbusplus
-{
-namespace xyz
-{
-namespace openbmc_project
-{
-namespace Time
-{
-namespace Internal
-{
-namespace Error
-{
- struct MethodError;
-} // namespace Error
-} // namespace Internal
-} // namespace Time
-} // namespace openbmc_project
-} // namespace xyz
-} // namespace sdbusplus
-
-
-namespace phosphor
-{
-
-namespace logging
-{
-
-namespace xyz
-{
-namespace openbmc_project
-{
-namespace Time
-{
-namespace Internal
-{
-namespace _MethodError
-{
-
-struct METHOD_NAME
-{
- static constexpr auto str = "METHOD_NAME=%s";
- static constexpr auto str_short = "METHOD_NAME";
- using type = std::tuple<std::decay_t<decltype(str)>,const char*>;
- explicit constexpr METHOD_NAME(const char* a) : _entry(entry(str, a)) {};
- type _entry;
-};
-struct PATH
-{
- static constexpr auto str = "PATH=%s";
- static constexpr auto str_short = "PATH";
- using type = std::tuple<std::decay_t<decltype(str)>,const char*>;
- explicit constexpr PATH(const char* a) : _entry(entry(str, a)) {};
- type _entry;
-};
-struct INTERFACE
-{
- static constexpr auto str = "INTERFACE=%s";
- static constexpr auto str_short = "INTERFACE";
- using type = std::tuple<std::decay_t<decltype(str)>,const char*>;
- explicit constexpr INTERFACE(const char* a) : _entry(entry(str, a)) {};
- type _entry;
-};
-struct MISC
-{
- static constexpr auto str = "MISC=%s";
- static constexpr auto str_short = "MISC";
- using type = std::tuple<std::decay_t<decltype(str)>,const char*>;
- explicit constexpr MISC(const char* a) : _entry(entry(str, a)) {};
- type _entry;
-};
-
-} // namespace _MethodError
-
-struct MethodError
-{
- static constexpr auto L = level::ERR;
- using METHOD_NAME = _MethodError::METHOD_NAME;
- using PATH = _MethodError::PATH;
- using INTERFACE = _MethodError::INTERFACE;
- using MISC = _MethodError::MISC;
- using metadata_types = std::tuple<METHOD_NAME, PATH, INTERFACE, MISC>;
-
-};
-
-} // namespace Internal
-} // namespace Time
-} // namespace openbmc_project
-} // namespace xyz
-
-
-namespace details
-{
-
-template <>
-struct map_exception_type<sdbusplus::xyz::openbmc_project::Time::Internal::Error::MethodError>
-{
- using type = xyz::openbmc_project::Time::Internal::MethodError;
-};
-
-}
-
-
-} // namespace logging
-
-} // namespace phosphor
diff --git a/utils.cpp b/utils.cpp
index 778487f..48bae22 100644
--- a/utils.cpp
+++ b/utils.cpp
@@ -1,9 +1,6 @@
#include "utils.hpp"
-#include <phosphor-logging/elog.hpp>
-#include <phosphor-logging/elog-errors.hpp>
#include <phosphor-logging/log.hpp>
-#include <xyz/openbmc_project/Common/error.hpp>
namespace phosphor
@@ -21,9 +18,6 @@
namespace utils
{
-using InvalidArgumentError =
- sdbusplus::xyz::openbmc_project::Common::Error::InvalidArgument;
-
using namespace phosphor::logging;
std::string getService(sdbusplus::bus::bus& bus,
@@ -36,32 +30,31 @@
"GetObject");
mapper.append(path, std::vector<std::string>({interface}));
- auto mapperResponseMsg = bus.call(mapper);
-
- if (mapperResponseMsg.is_method_error())
+ try
{
- using namespace xyz::openbmc_project::Time::Internal;
- elog<MethodErr>(MethodError::METHOD_NAME("GetObject"),
- MethodError::PATH(path),
- MethodError::INTERFACE(interface),
- MethodError::MISC({}));
- }
+ auto mapperResponseMsg = bus.call(mapper);
- std::vector<std::pair<std::string, std::vector<std::string>>>
- mapperResponse;
- mapperResponseMsg.read(mapperResponse);
- if (mapperResponse.empty())
+ std::vector<std::pair<std::string, std::vector<std::string>>>
+ mapperResponse;
+ mapperResponseMsg.read(mapperResponse);
+ if (mapperResponse.empty())
+ {
+ log<level::ERR>("Error reading mapper response");
+ throw std::runtime_error("Error reading mapper response");
+ }
+ if (mapperResponse.size() < 1){
+ return "";
+ }
+ return mapperResponse[0].first;
+ }
+ catch (const sdbusplus::exception::SdBusError& ex)
{
- using namespace xyz::openbmc_project::Time::Internal;
- elog<MethodErr>(MethodError::METHOD_NAME("GetObject"),
- MethodError::PATH(path),
- MethodError::INTERFACE(interface),
- MethodError::MISC("Error reading mapper response"));
+ log<level::ERR>("Mapper call failed",
+ entry("METHOD=%d", "GetObject"),
+ entry("PATH=%s", path),
+ entry("INTERFACE=%s", interface));
+ throw std::runtime_error("Mapper call failed");
}
- if (mapperResponse.size() < 1){
- return "";
- }
- return mapperResponse[0].first;
}
Mode strToMode(const std::string& mode)
diff --git a/utils.hpp b/utils.hpp
index 5d72155..ac71fba 100644
--- a/utils.hpp
+++ b/utils.hpp
@@ -1,10 +1,7 @@
#pragma once
-#include "elog-errors.hpp"
#include "types.hpp"
-#include "xyz/openbmc_project/Time/Internal/error.hpp"
-#include <phosphor-logging/elog.hpp>
#include <phosphor-logging/log.hpp>
#include <sdbusplus/bus.hpp>
@@ -18,8 +15,6 @@
{
using namespace phosphor::logging;
-using MethodErr =
- sdbusplus::xyz::openbmc_project::Time::Internal::Error::MethodError;
/** @brief Read data with type T from file
*
@@ -71,26 +66,26 @@
const char* interface,
const char* propertyName)
{
- sdbusplus::message::variant<T> value{};
auto method = bus.new_method_call(service,
path,
"org.freedesktop.DBus.Properties",
"Get");
method.append(interface, propertyName);
- auto reply = bus.call(method);
- if (reply)
+ try
{
+ sdbusplus::message::variant<T> value{};
+ auto reply = bus.call(method);
reply.read(value);
+ return value.template get<T>();
}
- else
+ catch (const sdbusplus::exception::SdBusError& ex)
{
- using namespace xyz::openbmc_project::Time::Internal;
- elog<MethodErr>(MethodError::METHOD_NAME("Get"),
- MethodError::PATH(path),
- MethodError::INTERFACE(interface),
- MethodError::MISC(propertyName));
+ log<level::ERR>("GetProperty call failed",
+ entry("PATH=%s", path),
+ entry("INTERFACE=%s", interface),
+ entry("PROPERTY=%s", propertyName));
+ throw std::runtime_error("GetProperty call failed");
}
- return value.template get<T>();
}
/** @brief Get service name from object path and interface
diff --git a/xyz/openbmc_project/Time/Internal.errors.yaml b/xyz/openbmc_project/Time/Internal.errors.yaml
deleted file mode 100644
index a2502ab..0000000
--- a/xyz/openbmc_project/Time/Internal.errors.yaml
+++ /dev/null
@@ -1,3 +0,0 @@
-#xyz.openbmc_project.Time.Internal.MethodError
-- name: MethodError
- description: Failed to invoke Dbus method
diff --git a/xyz/openbmc_project/Time/Internal.metadata.yaml b/xyz/openbmc_project/Time/Internal.metadata.yaml
deleted file mode 100644
index 0f16c11..0000000
--- a/xyz/openbmc_project/Time/Internal.metadata.yaml
+++ /dev/null
@@ -1,10 +0,0 @@
-- name: MethodError
- meta:
- - str: "METHOD_NAME=%s"
- type: string
- - str: "PATH=%s"
- type: string
- - str: "INTERFACE=%s"
- type: string
- - str: "MISC=%s"
- type: string