OLD | NEW |
| (Empty) |
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 | |
7 import time | |
8 | |
9 | |
10 class 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 GetElapsed(self): | |
30 """Returns the elapsed time of the watchdog.""" | |
31 return time.time() - self._start_time | |
32 | |
33 def GetRemaining(self): | |
34 """Returns the remaining time of the watchdog.""" | |
35 if self._timeout: | |
36 return self._timeout - self.GetElapsed() | |
37 else: | |
38 return None | |
39 | |
40 def IsTimedOut(self): | |
41 """Whether the watchdog has timed out. | |
42 | |
43 Returns: | |
44 True if the watchdog has timed out, False otherwise. | |
45 """ | |
46 remaining = self.GetRemaining() | |
47 return remaining is not None and remaining < 0 | |
OLD | NEW |