summaryrefslogtreecommitdiffstats
path: root/src/watch.hpp
blob: 9c97b9ec34dc1e44ec106e681dc8ee48b03f3197 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#pragma once

#include "data_types.hpp"

namespace phosphor
{
namespace dbus
{
namespace monitoring
{

/** @class Watch
 *  @brief Watch interface.
 *
 *  The start method is invoked by main() on all watches of any type
 *  at application startup, to allow watches to perform custom setup
 *  or initialization.  Typical implementations might register dbus
 *  callbacks or perform queries.
 *
 *  The callback method is invoked by main() on all watches of any
 *  type at application startup, after all watches have performed
 *  their setup.  Typical implementations will forward the call
 *  to their associated callback.
 */
class Watch
{
  public:
    Watch() = default;
    Watch(const Watch&) = default;
    Watch(Watch&&) = default;
    Watch& operator=(const Watch&) = default;
    Watch& operator=(Watch&&) = default;
    virtual ~Watch() = default;

    /** @brief Start the watch. */
    virtual void start() = 0;

    /** @brief Invoke the callback associated with the watch. */
    virtual void callback(Context ctx) = 0;
};

} // namespace monitoring
} // namespace dbus
} // namespace phosphor
OpenPOWER on IntegriCloud