blob: b6de8de499ce79b896491b01aac6c371fd37fd8b [file] [log] [blame]
Matthew Barthb86374d2017-04-12 10:57:19 -05001#pragma once
2
3#include "data_types.hpp"
4
5namespace phosphor
6{
7namespace dbus
8{
9namespace monitoring
10{
11
12class Event : public std::vector<Condition>
13{
14 public:
15 enum class Trigger
16 {
17 START,
18 SIGNAL
19 };
20
21 Event() = delete;
22 Event(const Event&) = delete;
23 Event(Event&&) = delete;
24 Event& operator=(const Event&) = delete;
25 Event& operator=(Event&&) = delete;
26 virtual ~Event() = default;
27
28 Event(const std::vector<Condition>& conditions,
29 Trigger t) :
30 std::vector<Condition>(conditions),
31 trigger(t)
32 {
33 // Nothing to do here
34 }
35
36 Trigger trigger;
37};
38
39class StartEvent : public Event
40{
41 public:
42 StartEvent() = delete;
43 StartEvent(const StartEvent&) = delete;
44 StartEvent(StartEvent&&) = delete;
45 StartEvent& operator=(const StartEvent&) = delete;
46 StartEvent& operator=(StartEvent&&) = delete;
47 ~StartEvent() = default;
48
49 explicit StartEvent(const std::vector<Condition>& conditions) :
50 Event(conditions, Trigger::START)
51 {
52 // Nothing to do here
53 }
54};
55
56class SignalEvent : public Event
57{
58 public:
59 SignalEvent() = delete;
60 SignalEvent(const SignalEvent&) = delete;
61 SignalEvent(SignalEvent&&) = delete;
62 SignalEvent& operator=(const SignalEvent&) = delete;
63 SignalEvent& operator=(SignalEvent&&) = delete;
64 ~SignalEvent() = default;
65
66 SignalEvent(const char* signature,
67 const std::vector<Condition>& conditions) :
68 Event(conditions, Trigger::SIGNAL),
69 signature(signature)
70 {
71 // Nothing to do here
72 }
73
74 const char* signature;
75};
76
77} // namespace monitoring
78} // namespace dbus
79} // namespace phosphor