(Merge 3.4) asyncio: Move loop attribute to _FlowControlMixin

Move the _loop attribute from the constructor of _SelectorTransport,
_ProactorBasePipeTransport and _UnixWritePipeTransport classes to the
constructor of the _FlowControlMixin class.

Add also an assertion to explicit that the parent class must ensure that the
loop is defined (not None)
This commit is contained in:
Victor Stinner 2014-11-05 15:27:54 +01:00
commit 5239caf835
5 changed files with 8 additions and 8 deletions

View File

@ -21,9 +21,8 @@ class _ProactorBasePipeTransport(transports._FlowControlMixin,
def __init__(self, loop, sock, protocol, waiter=None, def __init__(self, loop, sock, protocol, waiter=None,
extra=None, server=None): extra=None, server=None):
super().__init__(extra) super().__init__(extra, loop)
self._set_extra(sock) self._set_extra(sock)
self._loop = loop
self._sock = sock self._sock = sock
self._protocol = protocol self._protocol = protocol
self._server = server self._server = server

View File

@ -447,7 +447,7 @@ class _SelectorTransport(transports._FlowControlMixin,
_buffer_factory = bytearray # Constructs initial value for self._buffer. _buffer_factory = bytearray # Constructs initial value for self._buffer.
def __init__(self, loop, sock, protocol, extra, server=None): def __init__(self, loop, sock, protocol, extra, server=None):
super().__init__(extra) super().__init__(extra, loop)
self._extra['socket'] = sock self._extra['socket'] = sock
self._extra['sockname'] = sock.getsockname() self._extra['sockname'] = sock.getsockname()
if 'peername' not in self._extra: if 'peername' not in self._extra:
@ -455,7 +455,6 @@ class _SelectorTransport(transports._FlowControlMixin,
self._extra['peername'] = sock.getpeername() self._extra['peername'] = sock.getpeername()
except socket.error: except socket.error:
self._extra['peername'] = None self._extra['peername'] = None
self._loop = loop
self._sock = sock self._sock = sock
self._sock_fd = sock.fileno() self._sock_fd = sock.fileno()
self._protocol = protocol self._protocol = protocol

View File

@ -238,8 +238,10 @@ class _FlowControlMixin(Transport):
resume_writing() may be called. resume_writing() may be called.
""" """
def __init__(self, extra=None): def __init__(self, extra=None, loop=None):
super().__init__(extra) super().__init__(extra)
assert loop is not None
self._loop = loop
self._protocol_paused = False self._protocol_paused = False
self._set_write_buffer_limits() self._set_write_buffer_limits()

View File

@ -369,9 +369,8 @@ class _UnixWritePipeTransport(transports._FlowControlMixin,
transports.WriteTransport): transports.WriteTransport):
def __init__(self, loop, pipe, protocol, waiter=None, extra=None): def __init__(self, loop, pipe, protocol, waiter=None, extra=None):
super().__init__(extra) super().__init__(extra, loop)
self._extra['pipe'] = pipe self._extra['pipe'] = pipe
self._loop = loop
self._pipe = pipe self._pipe = pipe
self._fileno = pipe.fileno() self._fileno = pipe.fileno()
mode = os.fstat(self._fileno).st_mode mode = os.fstat(self._fileno).st_mode

View File

@ -69,7 +69,8 @@ class TransportTests(unittest.TestCase):
def get_write_buffer_size(self): def get_write_buffer_size(self):
return 512 return 512
transport = MyTransport() loop = mock.Mock()
transport = MyTransport(loop=loop)
transport._protocol = mock.Mock() transport._protocol = mock.Mock()
self.assertFalse(transport._protocol_paused) self.assertFalse(transport._protocol_paused)