diff options
author | Zac Medico <zmedico@gentoo.org> | 2012-02-07 21:03:32 -0800 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2012-02-07 22:08:45 -0800 |
commit | c02b0e535a4cfe4dc0a3c3d07124b8dfa5d4f9a5 (patch) | |
tree | 5839602f294e457d32e0284ac43ad1a75a89f4d7 | |
parent | 618ad1f92b6f768e5cc2f783cd1756ffe65b3fef (diff) | |
download | portage-c02b0e535a4cfe4dc0a3c3d07124b8dfa5d4f9a5.tar.gz portage-c02b0e535a4cfe4dc0a3c3d07124b8dfa5d4f9a5.tar.bz2 portage-c02b0e535a4cfe4dc0a3c3d07124b8dfa5d4f9a5.zip |
QueueScheduler: tweak timeout handling
-rw-r--r-- | pym/_emerge/QueueScheduler.py | 27 |
1 files changed, 14 insertions, 13 deletions
diff --git a/pym/_emerge/QueueScheduler.py b/pym/_emerge/QueueScheduler.py index 91a2831f6..e115ba1aa 100644 --- a/pym/_emerge/QueueScheduler.py +++ b/pym/_emerge/QueueScheduler.py @@ -1,8 +1,6 @@ -# Copyright 1999-2011 Gentoo Foundation +# Copyright 1999-2012 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 -import time - from _emerge.PollScheduler import PollScheduler class QueueScheduler(PollScheduler): @@ -36,25 +34,28 @@ class QueueScheduler(PollScheduler): def run(self, timeout=None): - timeout_id = None + timeout_callback = None if timeout is not None: def timeout_callback(): - raise StopIteration() - timeout_id = self._timeout_add(timeout, timeout_callback) + timeout_callback.timed_out = True + return False + timeout_callback.timed_out = False + timeout_callback.timeout_id = self._timeout_add( + timeout, timeout_callback) try: - while self._schedule(): + while not (timeout_callback is not None and + timeout_callback.timed_out) and self._schedule(): self._iteration() - while self._running_job_count(): + while not (timeout_callback is not None and + timeout_callback.timed_out) and self._running_job_count(): self._iteration() - except StopIteration: - pass - - if timeout_id is not None: - self._unregister(timeout_id) + finally: + if timeout_callback is not None: + self._unregister(timeout_callback.timeout_id) def _schedule_tasks(self): """ |