diff options
author | Zac Medico <zmedico@gentoo.org> | 2012-10-16 10:31:34 -0700 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2012-10-16 10:31:34 -0700 |
commit | a13c6739cab86f196fbc8a220f0d238c3544bae9 (patch) | |
tree | b86c83e833d2a975f9a1d6c7c16e477a5fac60f9 /pym/portage/util | |
parent | e9fd283aedf54e2effc73f4157524fe9a26993c0 (diff) | |
download | portage-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.py | 16 |
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() |