| OLD | NEW |
| 1 # Copyright 2013 The Chromium Authors. All rights reserved. | 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 | 2 # Use of this source code is governed by a BSD-style license that can be |
| 3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
| 4 | 4 |
| 5 """Thread and ThreadGroup that reraise exceptions on the main thread.""" | 5 """Thread and ThreadGroup that reraise exceptions on the main thread.""" |
| 6 # pylint: disable=W0212 | 6 # pylint: disable=W0212 |
| 7 | 7 |
| 8 import logging | 8 import logging |
| 9 import sys | 9 import sys |
| 10 import threading | 10 import threading |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 67 def GetReturnValue(self): | 67 def GetReturnValue(self): |
| 68 """Reraise exception if present, otherwise get the return value.""" | 68 """Reraise exception if present, otherwise get the return value.""" |
| 69 self.ReraiseIfException() | 69 self.ReraiseIfException() |
| 70 return self._ret | 70 return self._ret |
| 71 | 71 |
| 72 #override | 72 #override |
| 73 def run(self): | 73 def run(self): |
| 74 """Overrides Thread.run() to add support for reraising exceptions.""" | 74 """Overrides Thread.run() to add support for reraising exceptions.""" |
| 75 try: | 75 try: |
| 76 self._ret = self._func(*self._args, **self._kwargs) | 76 self._ret = self._func(*self._args, **self._kwargs) |
| 77 except: | 77 except: # pylint: disable=W0702 |
| 78 self._exc_info = sys.exc_info() | 78 self._exc_info = sys.exc_info() |
| 79 raise | |
| 80 | 79 |
| 81 | 80 |
| 82 class ReraiserThreadGroup(object): | 81 class ReraiserThreadGroup(object): |
| 83 """A group of ReraiserThread objects.""" | 82 """A group of ReraiserThread objects.""" |
| 84 | 83 |
| 85 def __init__(self, threads=None): | 84 def __init__(self, threads=None): |
| 86 """Initialize thread group. | 85 """Initialize thread group. |
| 87 | 86 |
| 88 Args: | 87 Args: |
| 89 threads: a list of ReraiserThread objects; defaults to empty. | 88 threads: a list of ReraiserThread objects; defaults to empty. |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 148 def GetAllReturnValues(self, watcher=watchdog_timer.WatchdogTimer(None)): | 147 def GetAllReturnValues(self, watcher=watchdog_timer.WatchdogTimer(None)): |
| 149 """Get all return values, joining all threads if necessary. | 148 """Get all return values, joining all threads if necessary. |
| 150 | 149 |
| 151 Args: | 150 Args: |
| 152 watcher: same as in |JoinAll|. Only used if threads are alive. | 151 watcher: same as in |JoinAll|. Only used if threads are alive. |
| 153 """ | 152 """ |
| 154 if any([t.isAlive() for t in self._threads]): | 153 if any([t.isAlive() for t in self._threads]): |
| 155 self.JoinAll(watcher) | 154 self.JoinAll(watcher) |
| 156 return [t.GetReturnValue() for t in self._threads] | 155 return [t.GetReturnValue() for t in self._threads] |
| 157 | 156 |
| OLD | NEW |