From 9679d43ea9a0d2ed89c8eb88851eee838a3e767c Mon Sep 17 00:00:00 2001 From: Gunnar Mills Date: Thu, 3 Aug 2017 15:54:43 -0500 Subject: Create new Elog class Created new Elog callback, which will create an error log. This is just the base, more to come. Change-Id: I50c12c8bff0942b5cb027e38d0cc8691e8a241b4 Signed-off-by: Gunnar Mills --- src/elog.hpp | 69 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 src/elog.hpp (limited to 'src/elog.hpp') diff --git a/src/elog.hpp b/src/elog.hpp new file mode 100644 index 0000000..f138b0b --- /dev/null +++ b/src/elog.hpp @@ -0,0 +1,69 @@ +#pragma once +#include +#include +#include "callback.hpp" +#include + +namespace phosphor +{ +namespace dbus +{ +namespace monitoring +{ + +/** @class ElogBase + * @brief Elog callback implementation. + * + * The elog callback logs the elog and + * elog metadata. + */ +class ElogBase : public Callback +{ + public: + ElogBase(const ElogBase&) = delete; + ElogBase(ElogBase&&) = default; + ElogBase& operator=(const ElogBase&) = delete; + ElogBase& operator=(ElogBase&&) = default; + virtual ~ElogBase() = default; + ElogBase() : + Callback(){} + + /** @brief Callback interface implementation. */ + void operator()() override; + + private: + /** @brief Delegate type specific calls to subclasses. */ + virtual void log() const = 0; +}; + + +/** @class Elog + * @brief C++ type specific logic for the elog callback. + * + * @tparam T - Error log type + */ +template +class Elog : public ElogBase +{ + public: + Elog(const Elog&) = delete; + Elog(Elog&&) = default; + Elog& operator=(const Elog&) = delete; + Elog& operator=(Elog&&) = default; + ~Elog() = default; + Elog() : + ElogBase() {} + + private: + /** @brief elog interface implementation. */ + void log() const override + { + + using namespace phosphor::logging; + report(); + } +}; + +} // namespace monitoring +} // namespace dbus +} // namespace phosphor -- cgit v1.2.1