From c02b0e535a4cfe4dc0a3c3d07124b8dfa5d4f9a5 Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Tue, 7 Feb 2012 21:03:32 -0800 Subject: QueueScheduler: tweak timeout handling --- pym/_emerge/QueueScheduler.py | 27 ++++++++++++++------------- 1 file 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): """ -- cgit v1.2.3-1-g7c22