Add item group monitoring data type framework
Include supported data types for item groups:
--Start event trigger
--Signal event trigger
--A countAtOrAbove condition
--A log_error action
Change-Id: I1ae5ba60e4d9c06155885d52d98a44b31fd73207
Signed-off-by: Matthew Barth <msbarth@us.ibm.com>
diff --git a/src/events.hpp b/src/events.hpp
new file mode 100644
index 0000000..b6de8de
--- /dev/null
+++ b/src/events.hpp
@@ -0,0 +1,79 @@
+#pragma once
+
+#include "data_types.hpp"
+
+namespace phosphor
+{
+namespace dbus
+{
+namespace monitoring
+{
+
+class Event : public std::vector<Condition>
+{
+ public:
+ enum class Trigger
+ {
+ START,
+ SIGNAL
+ };
+
+ Event() = delete;
+ Event(const Event&) = delete;
+ Event(Event&&) = delete;
+ Event& operator=(const Event&) = delete;
+ Event& operator=(Event&&) = delete;
+ virtual ~Event() = default;
+
+ Event(const std::vector<Condition>& conditions,
+ Trigger t) :
+ std::vector<Condition>(conditions),
+ trigger(t)
+ {
+ // Nothing to do here
+ }
+
+ Trigger trigger;
+};
+
+class StartEvent : public Event
+{
+ public:
+ StartEvent() = delete;
+ StartEvent(const StartEvent&) = delete;
+ StartEvent(StartEvent&&) = delete;
+ StartEvent& operator=(const StartEvent&) = delete;
+ StartEvent& operator=(StartEvent&&) = delete;
+ ~StartEvent() = default;
+
+ explicit StartEvent(const std::vector<Condition>& conditions) :
+ Event(conditions, Trigger::START)
+ {
+ // Nothing to do here
+ }
+};
+
+class SignalEvent : public Event
+{
+ public:
+ SignalEvent() = delete;
+ SignalEvent(const SignalEvent&) = delete;
+ SignalEvent(SignalEvent&&) = delete;
+ SignalEvent& operator=(const SignalEvent&) = delete;
+ SignalEvent& operator=(SignalEvent&&) = delete;
+ ~SignalEvent() = default;
+
+ SignalEvent(const char* signature,
+ const std::vector<Condition>& conditions) :
+ Event(conditions, Trigger::SIGNAL),
+ signature(signature)
+ {
+ // Nothing to do here
+ }
+
+ const char* signature;
+};
+
+} // namespace monitoring
+} // namespace dbus
+} // namespace phosphor