# Class Uq_engines.watchdog

    class watchdog : float -> 'a #engine -> [unit] engine

A watchdog engine checks whether the argument engine makes progress, and if there is no progress for the passed number of seconds, the engine is aborted, and the watchdog state changes to ``Error Watchdog_timeout`.

The current implementation is not very exact, and it may take a little longer than the passed period of inactivity until the watchdog recognizes inactivity.

If the argument engine terminates, the watchdog changes its state to ``Done ()`

Important note: The watchdog assumes that the ``Working` state of the target engine really counts events that indicate progress. This does not work for:

- `poll_process_engine`: there is no way to check whether a subprocess makes progress
- `connector`: It is usually not possible to reflect the progress on packet level
- `listener`: It is usually not possible to reflect the progress on packet level