[Python-checkins] cpython: asyncio: Get rid of _try_connected().

guido.van.rossum python-checkins at python.org
Wed Jan 29 23:41:55 CET 2014


http://hg.python.org/cpython/rev/3fe80ecba874
changeset: 88822:3fe80ecba874
user: Victor Stinner <victor.stinner at 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


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /