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 ) id 1Q0gzH-0004Rf-AY for garchives@archives.gentoo.org; Fri, 18 Mar 2011 21:13:36 +0000 Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 9AD4DE05BE; Fri, 18 Mar 2011 21:12:28 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) by pigeon.gentoo.org (Postfix) with ESMTP id 5A18AE05BE for ; Fri, 18 Mar 2011 21:12:28 +0000 (UTC) Received: from pelican.gentoo.org (unknown [66.219.59.40]) (using TLSv1 with cipher ADH-CAMELLIA256-SHA (256/256 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id D630C1B40DE for ; Fri, 18 Mar 2011 21:12:27 +0000 (UTC) Received: from localhost.localdomain (localhost [127.0.0.1]) by pelican.gentoo.org (Postfix) with ESMTP id 44C2D80073 for ; Fri, 18 Mar 2011 21:12:27 +0000 (UTC) From: "Zac Medico" To: gentoo-commits@lists.gentoo.org Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Zac Medico" Message-ID: <5c1e74b2d9a68eb97557c76859bcdc74675d03d7.zmedico@gentoo> Subject: [gentoo-commits] proj/portage:2.1.9 commit in: pym/_emerge/ X-VCS-Repository: proj/portage X-VCS-Files: pym/_emerge/AsynchronousLock.py pym/_emerge/AsynchronousTask.py pym/_emerge/CompositeTask.py pym/_emerge/FifoIpcDaemon.py pym/_emerge/PipeReader.py pym/_emerge/SubProcess.py pym/_emerge/TaskSequence.py X-VCS-Directories: pym/_emerge/ X-VCS-Committer: zmedico X-VCS-Committer-Name: Zac Medico X-VCS-Revision: 5c1e74b2d9a68eb97557c76859bcdc74675d03d7 Date: Fri, 18 Mar 2011 21:12:27 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: quoted-printable X-Archives-Salt: X-Archives-Hash: a43e92231f4eb89a0e4217ee1fe81654 commit: 5c1e74b2d9a68eb97557c76859bcdc74675d03d7 Author: Zac Medico gentoo org> AuthorDate: Thu Mar 17 05:36:33 2011 +0000 Commit: Zac Medico gentoo org> CommitDate: Fri Mar 18 19:49:35 2011 +0000 URL: http://git.overlays.gentoo.org/gitweb/?p=3Dproj/portage.git;a= =3Dcommit;h=3D5c1e74b2 AsynchronousTask: add _cancel template method --- pym/_emerge/AsynchronousLock.py | 4 ++++ pym/_emerge/AsynchronousTask.py | 15 ++++++++++++--- pym/_emerge/CompositeTask.py | 4 +--- pym/_emerge/FifoIpcDaemon.py | 4 +--- pym/_emerge/PipeReader.py | 4 +--- pym/_emerge/SubProcess.py | 4 +--- pym/_emerge/TaskSequence.py | 3 +-- 7 files changed, 21 insertions(+), 17 deletions(-) diff --git a/pym/_emerge/AsynchronousLock.py b/pym/_emerge/AsynchronousLo= ck.py index c47a207..6e0a1ac 100644 --- a/pym/_emerge/AsynchronousLock.py +++ b/pym/_emerge/AsynchronousLock.py @@ -198,6 +198,10 @@ class _LockProcess(AbstractPollTask): raise AssertionError('lock process failed with returncode %s' \ % (proc.returncode,)) =20 + def _cancel(self): + if self._proc is not None: + self._proc.cancel() + def _wait(self): if self.returncode is not None: return self.returncode diff --git a/pym/_emerge/AsynchronousTask.py b/pym/_emerge/AsynchronousTa= sk.py index 1918b83..de00800 100644 --- a/pym/_emerge/AsynchronousTask.py +++ b/pym/_emerge/AsynchronousTask.py @@ -1,4 +1,4 @@ -# Copyright 1999-2009 Gentoo Foundation +# Copyright 1999-2011 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 =20 from _emerge.SlotObject import SlotObject @@ -45,8 +45,17 @@ class AsynchronousTask(SlotObject): return self.returncode =20 def cancel(self): - self.cancelled =3D True - self.wait() + if not self.cancelled: + self.cancelled =3D True + self._cancel() + self.wait() + + def _cancel(self): + """ + Subclasses should implement this, as a template method + to be called by AsynchronousTask.cancel(). + """ + pass =20 def addStartListener(self, f): """ diff --git a/pym/_emerge/CompositeTask.py b/pym/_emerge/CompositeTask.py index 8e8f084..edc0768 100644 --- a/pym/_emerge/CompositeTask.py +++ b/pym/_emerge/CompositeTask.py @@ -13,15 +13,13 @@ class CompositeTask(AsynchronousTask): def isAlive(self): return self._current_task is not None =20 - def cancel(self): - self.cancelled =3D True + def _cancel(self): if self._current_task is not None: if self._current_task is self._TASK_QUEUED: self.returncode =3D 1 self._current_task =3D None else: self._current_task.cancel() - AsynchronousTask.cancel(self) =20 def _poll(self): """ diff --git a/pym/_emerge/FifoIpcDaemon.py b/pym/_emerge/FifoIpcDaemon.py index c31508a..a716dac 100644 --- a/pym/_emerge/FifoIpcDaemon.py +++ b/pym/_emerge/FifoIpcDaemon.py @@ -43,12 +43,10 @@ class FifoIpcDaemon(AbstractPollTask): def isAlive(self): return self._registered =20 - def cancel(self): + def _cancel(self): if self.returncode is None: self.returncode =3D 1 - self.cancelled =3D True self._unregister() - AbstractPollTask.cancel(self) =20 def _wait(self): if self.returncode is not None: diff --git a/pym/_emerge/PipeReader.py b/pym/_emerge/PipeReader.py index 061921a..375c98f 100644 --- a/pym/_emerge/PipeReader.py +++ b/pym/_emerge/PipeReader.py @@ -32,11 +32,9 @@ class PipeReader(AbstractPollTask): def isAlive(self): return self._registered =20 - def cancel(self): + def _cancel(self): if self.returncode is None: self.returncode =3D 1 - self.cancelled =3D True - AbstractPollTask.cancel(self) =20 def _wait(self): if self.returncode is not None: diff --git a/pym/_emerge/SubProcess.py b/pym/_emerge/SubProcess.py index 16c71fe..115af80 100644 --- a/pym/_emerge/SubProcess.py +++ b/pym/_emerge/SubProcess.py @@ -41,15 +41,13 @@ class SubProcess(AbstractPollTask): self.wait() return self.returncode =20 - def cancel(self): + def _cancel(self): if self.isAlive(): try: os.kill(self.pid, signal.SIGTERM) except OSError as e: if e.errno !=3D errno.ESRCH: raise - del e - AbstractPollTask.cancel(self) =20 def isAlive(self): return self.pid is not None and \ diff --git a/pym/_emerge/TaskSequence.py b/pym/_emerge/TaskSequence.py index 7a1bd5a..1233c99 100644 --- a/pym/_emerge/TaskSequence.py +++ b/pym/_emerge/TaskSequence.py @@ -25,9 +25,8 @@ class TaskSequence(CompositeTask): def _start(self): self._start_next_task() =20 - def cancel(self): + def _cancel(self): self._task_queue.clear() - CompositeTask.cancel(self) =20 def _start_next_task(self): self._start_task(self._task_queue.popleft(),