diff options
author | Brad Bishop <bradleyb@fuzziesquirrel.com> | 2017-01-31 22:24:27 -0500 |
---|---|---|
committer | Brad Bishop <bradleyb@fuzziesquirrel.com> | 2017-02-14 08:12:00 -0500 |
commit | 0237971c1e8cd102e2035f92f8e794b8e6711b2d (patch) | |
tree | a3a8648f86bde5a61013d1fb2197a548d6d092f8 | |
parent | 12f8a3c8d0725cde677fb183454f2075df54f31e (diff) | |
download | phosphor-inventory-manager-0237971c1e8cd102e2035f92f8e794b8e6711b2d.tar.gz phosphor-inventory-manager-0237971c1e8cd102e2035f92f8e794b8e6711b2d.zip |
Add interface exception class
Add an exception class for interface errors.
Change-Id: I8409e345ff5dd5cf3744b1c2ef9501199bbadfee
Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com>
-rw-r--r-- | Makefile.am | 1 | ||||
-rw-r--r-- | errors.cpp | 35 | ||||
-rw-r--r-- | errors.hpp | 51 |
3 files changed, 87 insertions, 0 deletions
diff --git a/Makefile.am b/Makefile.am index b684c4a..572a994 100644 --- a/Makefile.am +++ b/Makefile.am @@ -14,6 +14,7 @@ phosphor_inventory_CFLAGS = $(SDBUSPLUS_CFLAGS) libmanagercommon_la_SOURCES = \ events.cpp \ + errors.cpp \ manager.cpp libmanagercommon_la_LIBADD = $(SDBUSPLUS_LIBS) $(PHOSPHOR_DBUS_INTERFACES_LIBS) libmanagercommon_la_CFLAGS = $(SDBUSPLUS_CFLAGS) $(PHOSPHOR_DBUS_INTERACES_CFLAGS) diff --git a/errors.cpp b/errors.cpp new file mode 100644 index 0000000..af02d5b --- /dev/null +++ b/errors.cpp @@ -0,0 +1,35 @@ +/** + * Copyright © 2017 IBM Corporation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#include <log.hpp> +#include "errors.hpp" + +namespace phosphor +{ +namespace inventory +{ +namespace manager +{ +void InterfaceError::log() const +{ + logging::log<logging::level::ERR>( + what(), + phosphor::logging::entry("INTERFACE=%s", interface)); +} +} // namespace manager +} // namespace inventory +} // namespace phosphor + +// vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4 diff --git a/errors.hpp b/errors.hpp new file mode 100644 index 0000000..1fa4492 --- /dev/null +++ b/errors.hpp @@ -0,0 +1,51 @@ +#pragma once + +#include <stdexcept> + +namespace phosphor +{ +namespace inventory +{ +namespace manager +{ + +// TODO: Use proper error generation techniques +// https://github.com/openbmc/openbmc/issues/1125 + +/** @class InterfaceError + * @brief Exception class for unrecognized interfaces. + */ +class InterfaceError final : public std::invalid_argument +{ + public: + ~InterfaceError() = default; + InterfaceError() = delete; + InterfaceError(const InterfaceError&) = delete; + InterfaceError(InterfaceError&&) = default; + InterfaceError& operator=(const InterfaceError&) = delete; + InterfaceError& operator=(InterfaceError&&) = default; + + /** @brief Construct an interface error. + * + * @param[in] msg - The message to be returned by what(). + * @param[in] iface - The failing interface name. + */ + InterfaceError( + const char* msg, + const std::string& iface) : + std::invalid_argument(msg), + interface(iface) {} + + /** @brief Log the exception message to the systemd journal. */ + void log() const; + + private: + + std::string interface; +}; + +} // namespace manager +} // namespace inventory +} // namespace phosphor + +// vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4 |