From mboxrd@z Thu Jan  1 00:00:00 1970
Received: from pigeon.gentoo.org ([208.92.234.80] helo=lists.gentoo.org)
	by finch.gentoo.org with esmtp (Exim 4.60)
	(envelope-from <gentoo-commits+bounces-424781-garchives=archives.gentoo.org@lists.gentoo.org>)
	id 1RuyJJ-0001PT-5y
	for garchives@archives.gentoo.org; Wed, 08 Feb 2012 03:35:09 +0000
Received: from pigeon.gentoo.org (localhost [127.0.0.1])
	by pigeon.gentoo.org (Postfix) with SMTP id 759AAE0761;
	Wed,  8 Feb 2012 03:35:00 +0000 (UTC)
Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183])
	by pigeon.gentoo.org (Postfix) with ESMTP id 0086AE0761
	for <gentoo-commits@lists.gentoo.org>; Wed,  8 Feb 2012 03:34:59 +0000 (UTC)
Received: from pelican.gentoo.org (unknown [66.219.59.40])
	(using TLSv1 with cipher AECDH-AES256-SHA (256/256 bits))
	(No client certificate requested)
	by smtp.gentoo.org (Postfix) with ESMTPS id 3E23E1B402F
	for <gentoo-commits@lists.gentoo.org>; Wed,  8 Feb 2012 03:34:59 +0000 (UTC)
Received: from localhost.localdomain (localhost [127.0.0.1])
	by pelican.gentoo.org (Postfix) with ESMTP id 8661F80043
	for <gentoo-commits@lists.gentoo.org>; Wed,  8 Feb 2012 03:34:58 +0000 (UTC)
From: "Zac Medico" <zmedico@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Content-type: text/plain; charset=UTF-8
Reply-To: gentoo-dev@lists.gentoo.org, "Zac Medico" <zmedico@gentoo.org>
Message-ID: <334c911923af24a7a7d977b28b24a09686e9906d.zmedico@gentoo>
Subject: [gentoo-commits] proj/portage:master commit in: pym/_emerge/
X-VCS-Repository: proj/portage
X-VCS-Files: pym/_emerge/PollScheduler.py pym/_emerge/Scheduler.py
X-VCS-Directories: pym/_emerge/
X-VCS-Committer: zmedico
X-VCS-Committer-Name: Zac Medico
X-VCS-Revision: 334c911923af24a7a7d977b28b24a09686e9906d
Date: Wed,  8 Feb 2012 03:34:58 +0000 (UTC)
Precedence: bulk
List-Post: <mailto:gentoo-commits@lists.gentoo.org>
List-Help: <mailto:gentoo-commits+help@lists.gentoo.org>
List-Unsubscribe: <mailto:gentoo-commits+unsubscribe@lists.gentoo.org>
List-Subscribe: <mailto:gentoo-commits+subscribe@lists.gentoo.org>
List-Id: Gentoo Linux mail <gentoo-commits.gentoo.org>
X-BeenThere: gentoo-commits@lists.gentoo.org
Content-Transfer-Encoding: quoted-printable
X-Archives-Salt: 9843ba14-bf75-4698-b41d-da7899256c2a
X-Archives-Hash: 0a4e7a9250df92d9abb4407961b18c5f

commit:     334c911923af24a7a7d977b28b24a09686e9906d
Author:     Zac Medico <zmedico <AT> gentoo <DOT> org>
AuthorDate: Wed Feb  8 03:21:58 2012 +0000
Commit:     Zac Medico <zmedico <AT> gentoo <DOT> org>
CommitDate: Wed Feb  8 03:34:16 2012 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=3Dproj/portage.git;a=
=3Dcommit;h=3D334c9119

PollScheduler: add iteration method

---
 pym/_emerge/PollScheduler.py |   33 ++++++++++++++++++++++++---------
 pym/_emerge/Scheduler.py     |    6 +++---
 2 files changed, 27 insertions(+), 12 deletions(-)

diff --git a/pym/_emerge/PollScheduler.py b/pym/_emerge/PollScheduler.py
index ab18f0d..9ddcd96 100644
--- a/pym/_emerge/PollScheduler.py
+++ b/pym/_emerge/PollScheduler.py
@@ -1,4 +1,4 @@
-# Copyright 1999-2011 Gentoo Foundation
+# Copyright 1999-2012 Gentoo Foundation
 # Distributed under the terms of the GNU General Public License v2
=20
 import gzip
@@ -24,7 +24,7 @@ from _emerge.PollSelectAdapter import PollSelectAdapter
 class PollScheduler(object):
=20
 	class _sched_iface_class(SlotObject):
-		__slots__ =3D ("idle_add", "io_add_watch",
+		__slots__ =3D ("idle_add", "io_add_watch", "iteration",
 			"output", "register", "schedule",
 			"source_remove", "timeout_add", "unregister")
=20
@@ -59,6 +59,7 @@ class PollScheduler(object):
 		self.sched_iface =3D self._sched_iface_class(
 			idle_add=3Dself._idle_add,
 			io_add_watch=3Dself._register,
+			iteration=3Dself._iteration,
 			output=3Dself._task_output,
 			register=3Dself._register,
 			schedule=3Dself._schedule_wait,
@@ -268,14 +269,24 @@ class PollScheduler(object):
 		if not event_handled:
 			raise AssertionError("tight loop")
=20
-	def _schedule_yield(self):
+	def _iteration(self, *args):
 		"""
-		Schedule for a short period of time chosen by the scheduler based
-		on internal state. Synchronous tasks should call this periodically
-		in order to allow the scheduler to service pending poll events. The
-		scheduler will call poll() exactly once, without blocking, and any
-		resulting poll events will be serviced.
+		Like glib.MainContext.iteration(), runs a single iteration.
+		@type may_block: bool
+		@param may_block: if True the call may block waiting for an event
+			(default is True).
+		@rtype: bool
+		@return: True if events were dispatched.
 		"""
+
+		may_block =3D True
+
+		if args:
+			if len(args) > 1:
+				raise TypeError(
+					"expected at most 1 argument (%s given)" % len(args))
+			may_block =3D args[0]
+
 		event_handlers =3D self._poll_event_handlers
 		events_handled =3D 0
=20
@@ -283,7 +294,11 @@ class PollScheduler(object):
 			return bool(events_handled)
=20
 		if not self._poll_event_queue:
-			self._poll(0)
+			if may_block:
+				timeout =3D 0
+			else:
+				timeout =3D None
+			self._poll(timeout=3Dtimeout)
=20
 		try:
 			while event_handlers and self._poll_event_queue:

diff --git a/pym/_emerge/Scheduler.py b/pym/_emerge/Scheduler.py
index b6b6586..e22ef46 100644
--- a/pym/_emerge/Scheduler.py
+++ b/pym/_emerge/Scheduler.py
@@ -1,4 +1,4 @@
-# Copyright 1999-2011 Gentoo Foundation
+# Copyright 1999-2012 Gentoo Foundation
 # Distributed under the terms of the GNU General Public License v2
=20
 from __future__ import print_function
@@ -81,7 +81,7 @@ class Scheduler(PollScheduler):
=20
 	class _iface_class(PollScheduler._sched_iface_class):
 		__slots__ =3D ("fetch",
-			"scheduleSetup", "scheduleUnpack", "scheduleYield")
+			"scheduleSetup", "scheduleUnpack")
=20
 	class _fetch_iface_class(SlotObject):
 		__slots__ =3D ("log_file", "schedule")
@@ -221,11 +221,11 @@ class Scheduler(PollScheduler):
 			fetch=3Dfetch_iface, output=3Dself._task_output,
 			idle_add=3Dself._idle_add,
 			io_add_watch=3Dself._register,
+			iteration=3Dself._iteration,
 			register=3Dself._register,
 			schedule=3Dself._schedule_wait,
 			scheduleSetup=3Dself._schedule_setup,
 			scheduleUnpack=3Dself._schedule_unpack,
-			scheduleYield=3Dself._schedule_yield,
 			source_remove=3Dself._unregister,
 			timeout_add=3Dself._timeout_add,
 			unregister=3Dself._unregister)