expose watch callbacks

Allow watch class users to explicitly invoke the watch
callback.

Since watches and callbacks share a common pool of state
all watches must complete their initialization prior to
invoking their callback methods.

Change-Id: I62ebad64da88a145f3d5006b07c01381b0eb6728
Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com>
diff --git a/src/watch.hpp b/src/watch.hpp
index 1ba671d..e36af9c 100644
--- a/src/watch.hpp
+++ b/src/watch.hpp
@@ -15,7 +15,10 @@
  *  or initialization.  Typical implementations might register dbus
  *  callbacks or perform queries.
  *
- *  Watches of any type can be started.
+ *  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
 {
@@ -29,6 +32,10 @@
 
         /** @brief Start the watch. */
         virtual void start() = 0;
+
+        /** @brief Invoke the callback associated with the watch. */
+        virtual void callback() = 0;
+
 };
 
 } // namespace monitoring