summaryrefslogtreecommitdiffstats
path: root/pym/portage/util
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2012-10-16 10:31:34 -0700
committerZac Medico <zmedico@gentoo.org>2012-10-16 10:31:34 -0700
commita13c6739cab86f196fbc8a220f0d238c3544bae9 (patch)
treeb86c83e833d2a975f9a1d6c7c16e477a5fac60f9 /pym/portage/util
parente9fd283aedf54e2effc73f4157524fe9a26993c0 (diff)
downloadportage-a13c6739cab86f196fbc8a220f0d238c3544bae9.tar.gz
portage-a13c6739cab86f196fbc8a220f0d238c3544bae9.tar.bz2
portage-a13c6739cab86f196fbc8a220f0d238c3544bae9.zip
PopenProcess: integrate PipeReader support
Diffstat (limited to 'pym/portage/util')
-rw-r--r--pym/portage/util/_async/PopenProcess.py16
1 files changed, 14 insertions, 2 deletions
diff --git a/pym/portage/util/_async/PopenProcess.py b/pym/portage/util/_async/PopenProcess.py
index 7c42c85b3..c3ae6e9db 100644
--- a/pym/portage/util/_async/PopenProcess.py
+++ b/pym/portage/util/_async/PopenProcess.py
@@ -5,11 +5,23 @@ from _emerge.SubProcess import SubProcess
class PopenProcess(SubProcess):
- __slots__ = ("proc",)
+ __slots__ = ("pipe_reader", "proc",)
def __init__(self, **kwargs):
SubProcess.__init__(self, **kwargs)
self.pid = self.proc.pid
+ self._registered = True
def _start(self):
- pass
+ if self.pipe_reader is not None:
+ self.pipe_reader.addExitListener(self._pipe_reader_exit)
+ self.pipe_reader.start()
+
+ def _pipe_reader_exit(self, pipe_reader):
+ self._reg_id = self.scheduler.child_watch_add(
+ self.pid, self._child_watch_cb)
+
+ def _child_watch_cb(self, pid, condition, user_data=None):
+ self._reg_id = None
+ self._waitpid_cb(pid, condition)
+ self.wait()