cpython: asyncio: Get rid of _try_connected().
http://hg.python.org/cpython/rev/3fe80ecba874 changeset: 88822:3fe80ecba874 user: Victor Stinner <victor.stinner@gmail.com> date: Wed Jan 29 14:22:56 2014 -0800 summary: asyncio: Get rid of _try_connected(). files: Lib/asyncio/base_subprocess.py | 32 +++++++++------------ 1 files changed, 14 insertions(+), 18 deletions(-) diff --git a/Lib/asyncio/base_subprocess.py b/Lib/asyncio/base_subprocess.py --- a/Lib/asyncio/base_subprocess.py +++ b/Lib/asyncio/base_subprocess.py @@ -75,19 +75,27 @@ proc = self._proc loop = self._loop if proc.stdin is not None: - transp, proto = yield from loop.connect_write_pipe( + _, pipe = yield from loop.connect_write_pipe( lambda: WriteSubprocessPipeProto(self, STDIN), proc.stdin) + self._pipes[STDIN] = pipe if proc.stdout is not None: - transp, proto = yield from loop.connect_read_pipe( + _, pipe = yield from loop.connect_read_pipe( lambda: ReadSubprocessPipeProto(self, STDOUT), proc.stdout) + self._pipes[STDOUT] = pipe if proc.stderr is not None: - transp, proto = yield from loop.connect_read_pipe( + _, pipe = yield from loop.connect_read_pipe( lambda: ReadSubprocessPipeProto(self, STDERR), proc.stderr) - if not self._pipes: - self._try_connected() + self._pipes[STDERR] = pipe + + assert self._pending_calls is not None + + self._loop.call_soon(self._protocol.connection_made, self) + for callback, data in self._pending_calls: + self._loop.call_soon(callback, *data) + self._pending_calls = None def _call(self, cb, *data): if self._pending_calls is not None: @@ -95,14 +103,6 @@ else: self._loop.call_soon(cb, *data) - def _try_connected(self): - assert self._pending_calls is not None - if all(p is not None and p.connected for p in self._pipes.values()): - self._loop.call_soon(self._protocol.connection_made, self) - for callback, data in self._pending_calls: - self._loop.call_soon(callback, *data) - self._pending_calls = None - def _pipe_connection_lost(self, fd, exc): self._call(self._protocol.pipe_connection_lost, fd, exc) self._try_finish() @@ -136,19 +136,15 @@ class WriteSubprocessPipeProto(protocols.BaseProtocol): - pipe = None def __init__(self, proc, fd): self.proc = proc self.fd = fd - self.connected = False + self.pipe = None self.disconnected = False - proc._pipes[fd] = self def connection_made(self, transport): - self.connected = True self.pipe = transport - self.proc._try_connected() def connection_lost(self, exc): self.disconnected = True -- Repository URL: http://hg.python.org/cpython
participants (1)
-
guido.van.rossum