From: "Zac Medico" <zmedico@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] proj/portage:2.1.9 commit in: pym/_emerge/
Date: Fri, 18 Mar 2011 21:12:27 +0000 (UTC) [thread overview]
Message-ID: <5c1e74b2d9a68eb97557c76859bcdc74675d03d7.zmedico@gentoo> (raw)
commit: 5c1e74b2d9a68eb97557c76859bcdc74675d03d7
Author: Zac Medico <zmedico <AT> gentoo <DOT> org>
AuthorDate: Thu Mar 17 05:36:33 2011 +0000
Commit: Zac Medico <zmedico <AT> gentoo <DOT> org>
CommitDate: Fri Mar 18 19:49:35 2011 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/portage.git;a=commit;h=5c1e74b2
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/AsynchronousLock.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,))
+ 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/AsynchronousTask.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
from _emerge.SlotObject import SlotObject
@@ -45,8 +45,17 @@ class AsynchronousTask(SlotObject):
return self.returncode
def cancel(self):
- self.cancelled = True
- self.wait()
+ if not self.cancelled:
+ self.cancelled = True
+ self._cancel()
+ self.wait()
+
+ def _cancel(self):
+ """
+ Subclasses should implement this, as a template method
+ to be called by AsynchronousTask.cancel().
+ """
+ pass
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
- def cancel(self):
- self.cancelled = True
+ def _cancel(self):
if self._current_task is not None:
if self._current_task is self._TASK_QUEUED:
self.returncode = 1
self._current_task = None
else:
self._current_task.cancel()
- AsynchronousTask.cancel(self)
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
- def cancel(self):
+ def _cancel(self):
if self.returncode is None:
self.returncode = 1
- self.cancelled = True
self._unregister()
- AbstractPollTask.cancel(self)
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
- def cancel(self):
+ def _cancel(self):
if self.returncode is None:
self.returncode = 1
- self.cancelled = True
- AbstractPollTask.cancel(self)
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
- def cancel(self):
+ def _cancel(self):
if self.isAlive():
try:
os.kill(self.pid, signal.SIGTERM)
except OSError as e:
if e.errno != errno.ESRCH:
raise
- del e
- AbstractPollTask.cancel(self)
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()
- def cancel(self):
+ def _cancel(self):
self._task_queue.clear()
- CompositeTask.cancel(self)
def _start_next_task(self):
self._start_task(self._task_queue.popleft(),
next reply other threads:[~2011-03-18 21:13 UTC|newest]
Thread overview: 136+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-03-18 21:12 Zac Medico [this message]
-- strict thread matches above, loose matches on Subject: below --
2011-05-27 3:36 [gentoo-commits] proj/portage:2.1.9 commit in: pym/_emerge/ Zac Medico
2011-05-27 1:26 Zac Medico
2011-05-27 0:40 Zac Medico
2011-05-26 22:34 Zac Medico
2011-05-26 21:37 Zac Medico
2011-05-26 13:04 Zac Medico
2011-05-26 12:52 Zac Medico
2011-05-26 12:26 Zac Medico
2011-05-26 12:05 Zac Medico
2011-05-26 6:18 Zac Medico
2011-05-26 6:18 Zac Medico
2011-05-26 6:18 Zac Medico
2011-05-26 6:18 Zac Medico
2011-05-26 6:18 Zac Medico
2011-05-26 6:18 Zac Medico
2011-05-26 6:18 Zac Medico
2011-05-26 6:18 Zac Medico
2011-05-26 6:18 Zac Medico
2011-05-26 6:18 Zac Medico
2011-05-26 6:18 Zac Medico
2011-05-26 6:18 Zac Medico
2011-05-26 6:18 Zac Medico
2011-05-26 6:18 Zac Medico
2011-05-26 6:18 Zac Medico
2011-05-26 6:18 Zac Medico
2011-05-26 6:18 Zac Medico
2011-05-26 6:18 Zac Medico
2011-05-26 6:18 Zac Medico
2011-05-26 6:18 Zac Medico
2011-05-26 6:18 Zac Medico
2011-05-26 6:18 Zac Medico
2011-05-26 6:18 Zac Medico
2011-05-26 6:18 Zac Medico
2011-05-26 6:18 Zac Medico
2011-05-26 6:18 Zac Medico
2011-05-26 6:18 Zac Medico
2011-05-26 6:18 Zac Medico
2011-05-12 5:24 Zac Medico
2011-05-12 5:24 Zac Medico
2011-05-12 5:24 Zac Medico
2011-05-12 5:24 Zac Medico
2011-05-12 5:24 Zac Medico
2011-05-12 5:24 Zac Medico
2011-05-12 5:24 Zac Medico
2011-05-12 5:24 Zac Medico
2011-05-08 20:50 Zac Medico
2011-05-08 20:50 Zac Medico
2011-05-08 20:50 Zac Medico
2011-05-08 20:50 Zac Medico
2011-05-08 20:50 Zac Medico
2011-05-05 18:12 Zac Medico
2011-05-05 16:01 Zac Medico
2011-05-04 20:03 Zac Medico
2011-05-04 20:03 Zac Medico
2011-05-04 20:03 Zac Medico
2011-05-04 20:03 Zac Medico
2011-05-04 20:03 Zac Medico
2011-05-04 20:03 Zac Medico
2011-05-04 20:03 Zac Medico
2011-05-04 20:03 Zac Medico
2011-05-04 20:03 Zac Medico
2011-05-04 20:03 Zac Medico
2011-05-04 20:03 Zac Medico
2011-05-04 20:03 Zac Medico
2011-05-04 20:03 Zac Medico
2011-05-04 20:03 Zac Medico
2011-04-13 7:52 Zac Medico
2011-04-13 7:52 Zac Medico
2011-04-13 7:52 Zac Medico
2011-04-13 7:52 Zac Medico
2011-03-26 19:31 Zac Medico
2011-03-26 19:31 Zac Medico
2011-03-26 19:31 Zac Medico
2011-03-26 19:31 Zac Medico
2011-03-26 19:31 Zac Medico
2011-03-26 19:31 Zac Medico
2011-03-26 19:31 Zac Medico
2011-03-26 19:31 Zac Medico
2011-03-26 19:31 Zac Medico
2011-03-26 19:31 Zac Medico
2011-03-26 19:31 Zac Medico
2011-03-18 21:12 Zac Medico
2011-03-18 21:12 Zac Medico
2011-03-18 21:12 Zac Medico
2011-03-18 21:12 Zac Medico
2011-03-18 21:12 Zac Medico
2011-03-18 21:12 Zac Medico
2011-03-18 21:12 Zac Medico
2011-03-18 21:12 Zac Medico
2011-03-18 21:12 Zac Medico
2011-03-14 16:24 Zac Medico
2011-03-14 16:24 Zac Medico
2011-03-14 16:24 Zac Medico
2011-03-14 16:24 Zac Medico
2011-03-14 16:24 Zac Medico
2011-03-14 16:24 Zac Medico
2011-03-14 16:24 Zac Medico
2011-03-14 16:24 Zac Medico
2011-03-01 21:54 Zac Medico
2011-03-01 20:55 Zac Medico
2011-03-01 20:55 Zac Medico
2011-03-01 20:55 Zac Medico
2011-02-22 17:41 Zac Medico
2011-02-22 3:16 Zac Medico
2011-02-22 3:14 Zac Medico
2011-02-22 3:14 Zac Medico
2011-02-22 3:14 Zac Medico
2011-02-22 3:14 Zac Medico
2011-02-22 3:14 Zac Medico
2011-02-22 3:14 Zac Medico
2011-02-20 0:04 Zac Medico
2011-02-20 0:04 Zac Medico
2011-02-20 0:04 Zac Medico
2011-02-20 0:04 Zac Medico
2011-02-20 0:04 Zac Medico
2011-02-20 0:04 Zac Medico
2011-02-14 17:02 Zac Medico
2011-02-14 16:45 Zac Medico
2011-02-14 16:35 Zac Medico
2011-02-14 16:04 Zac Medico
2011-02-14 7:49 Zac Medico
2011-02-14 7:49 Zac Medico
2011-02-14 7:49 Zac Medico
2011-02-14 7:49 Zac Medico
2011-02-14 7:49 Zac Medico
2011-02-14 5:04 Zac Medico
2011-02-14 4:31 Zac Medico
2011-02-14 4:31 Zac Medico
2011-02-14 4:31 Zac Medico
2011-02-14 4:31 Zac Medico
2011-02-14 4:31 Zac Medico
2011-02-08 20:48 Zac Medico
2011-02-05 3:37 Zac Medico
2011-02-04 17:47 zmedico
2011-02-04 15:57 zmedico
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=5c1e74b2d9a68eb97557c76859bcdc74675d03d7.zmedico@gentoo \
--to=zmedico@gentoo.org \
--cc=gentoo-commits@lists.gentoo.org \
--cc=gentoo-dev@lists.gentoo.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox