diff options
author | Zac Medico <zmedico@gentoo.org> | 2008-07-06 03:44:25 +0000 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2008-07-06 03:44:25 +0000 |
commit | f7484e2a422d48c13f511f0ba09d60cdc37081e4 (patch) | |
tree | 170b403b9e57e101f322b77998d973d570b066ba | |
parent | 3b0dc8e06d9d8a736ec977d635cc9d3971e1f890 (diff) | |
download | portage-f7484e2a422d48c13f511f0ba09d60cdc37081e4.tar.gz portage-f7484e2a422d48c13f511f0ba09d60cdc37081e4.tar.bz2 portage-f7484e2a422d48c13f511f0ba09d60cdc37081e4.zip |
Split out a CompositeTask._start_task() for subclasses to use as a generic
way to start a task.
svn path=/main/trunk/; revision=10952
-rw-r--r-- | pym/_emerge/__init__.py | 27 |
1 files changed, 17 insertions, 10 deletions
diff --git a/pym/_emerge/__init__.py b/pym/_emerge/__init__.py index ab098297f..046a2c568 100644 --- a/pym/_emerge/__init__.py +++ b/pym/_emerge/__init__.py @@ -1565,6 +1565,19 @@ class CompositeTask(AsynchronousTask): self._current_task = None self.returncode = task.returncode + def _start_task(self, task, exit_handler): + """ + Register exit handler for the given task, set it + as self._current_task, and call task.start(). + + Subclasses can use this as a generic way to start + a task. + + """ + task.addExitListener(exit_handler) + self._current_task = task + task.start() + class TaskSequence(CompositeTask): """ A collection of tasks that executes sequentially. Each task @@ -1589,10 +1602,8 @@ class TaskSequence(CompositeTask): CompositeTask.cancel(self) def _start_next_task(self): - self._current_task = self._task_queue.popleft() - task = self._current_task - task.addExitListener(self._task_exit_handler) - task.start() + self._start_task(self._task_queue.popleft(), + self._task_exit_handler) def _task_exit_handler(self, task): if self._default_exit(task) == os.EX_OK and \ @@ -2006,9 +2017,7 @@ class EbuildExecuter(CompositeTask): phase = "clean" clean_phase = EbuildPhase(pkg=pkg, phase=phase, scheduler=scheduler, settings=settings, tree=tree) - clean_phase.addExitListener(self._clean_phase_exit) - self._current_task = clean_phase - clean_phase.start() + self._start_task(clean_phase, self._clean_phase_exit) def _clean_phase_exit(self, clean_phase): @@ -2037,9 +2046,7 @@ class EbuildExecuter(CompositeTask): pkg=pkg, phase=phase, scheduler=scheduler, settings=settings, tree=tree)) - ebuild_phases.addExitListener(self._final_exit) - self._current_task = ebuild_phases - ebuild_phases.start() + self._start_task(ebuild_phases, self._final_exit) class EbuildPhase(SubProcess): |