blob: e36af9c4faf04bdf0dc439765a60b52c488cd0a0 [file] [log] [blame]
#pragma once
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() = 0;
};
} // namespace monitoring
} // namespace dbus
} // namespace phosphor