• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Copyright 2013 The Chromium Authors. All rights reserved.
2# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4
5"""WatchdogTimer timeout objects."""
6
7import time
8
9
10class WatchdogTimer(object):
11  """A resetable timeout-based watchdog.
12
13  This object is threadsafe.
14  """
15
16  def __init__(self, timeout):
17    """Initializes the watchdog.
18
19    Args:
20      timeout: The timeout in seconds. If timeout is None it will never timeout.
21    """
22    self._start_time = time.time()
23    self._timeout = timeout
24
25  def Reset(self):
26    """Resets the timeout countdown."""
27    self._start_time = time.time()
28
29  def IsTimedOut(self):
30    """Whether the watchdog has timed out.
31
32    Returns:
33      True if the watchdog has timed out, False otherwise.
34    """
35    if self._timeout is None:
36      return False
37    return time.time() - self._start_time > self._timeout
38