xref: /openbmc/phosphor-dbus-monitor/src/watch.hpp (revision a45e086dc57f51efb882bf864e78fe678238deea)
1 #pragma once
2 
3 #include "data_types.hpp"
4 
5 namespace phosphor
6 {
7 namespace dbus
8 {
9 namespace monitoring
10 {
11 
12 /** @class Watch
13  *  @brief Watch interface.
14  *
15  *  The start method is invoked by main() on all watches of any type
16  *  at application startup, to allow watches to perform custom setup
17  *  or initialization.  Typical implementations might register dbus
18  *  callbacks or perform queries.
19  *
20  *  The callback method is invoked by main() on all watches of any
21  *  type at application startup, after all watches have performed
22  *  their setup.  Typical implementations will forward the call
23  *  to their associated callback.
24  */
25 class Watch
26 {
27     public:
28         Watch() = default;
29         Watch(const Watch&) = default;
30         Watch(Watch&&) = default;
31         Watch& operator=(const Watch&) = default;
32         Watch& operator=(Watch&&) = default;
33         virtual ~Watch() = default;
34 
35         /** @brief Start the watch. */
36         virtual void start() = 0;
37 
38         /** @brief Invoke the callback associated with the watch. */
39         virtual void callback(Context ctx) = 0;
40 
41 };
42 
43 } // namespace monitoring
44 } // namespace dbus
45 } // namespace phosphor
46