From c1283ae8472dbd4e2c3593b76b7600ac72640b80 Mon Sep 17 00:00:00 2001 From: Brad Bishop Date: Sat, 20 May 2017 21:42:38 -0400 Subject: Add support for callbacks Callbacks are the response in the PDM 'trigger->response' model. Add general support for implementing callbacks and implement a log to systemd journal using that framework. Signed-off-by: Brad Bishop Change-Id: I8bead5368ee5472a02b47e8bba9e9df3a1f346bc --- src/callback.hpp | 57 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 src/callback.hpp (limited to 'src/callback.hpp') diff --git a/src/callback.hpp b/src/callback.hpp new file mode 100644 index 0000000..d7a678c --- /dev/null +++ b/src/callback.hpp @@ -0,0 +1,57 @@ +#pragma once + +#include "data_types.hpp" + +namespace phosphor +{ +namespace dbus +{ +namespace monitoring +{ + +/** @class Callback + * @brief Callback interface. + * + * Callbacks of any type can be run. + */ +class Callback +{ + public: + Callback() = default; + Callback(const Callback&) = delete; + Callback(Callback&&) = default; + Callback& operator=(const Callback&) = delete; + Callback& operator=(Callback&&) = default; + virtual ~Callback() = default; + + /** @brief Run the callback. */ + virtual void operator()() = 0; +}; + +/** @class IndexedCallback + * @brief Callback with an index. + */ +class IndexedCallback : public Callback +{ + public: + IndexedCallback() = delete; + IndexedCallback(const IndexedCallback&) = delete; + IndexedCallback(IndexedCallback&&) = default; + IndexedCallback& operator=(const IndexedCallback&) = delete; + IndexedCallback& operator=(IndexedCallback&&) = default; + virtual ~IndexedCallback() = default; + explicit IndexedCallback(const PropertyIndex& callbackIndex) + : Callback(), index(callbackIndex) {} + + /** @brief Run the callback. */ + virtual void operator()() override = 0; + + protected: + + /** @brief Property names and their associated storage. */ + const PropertyIndex& index; +}; + +} // namespace monitoring +} // namespace dbus +} // namespace phosphor -- cgit v1.2.1