mirror of
https://github.com/python/cpython.git
synced 2025-08-01 23:53:15 +00:00
asyncio: Add set_protocol / get_protocol methods to Transports
This commit is contained in:
parent
06e18a7c24
commit
a05a6ef1ca
7 changed files with 45 additions and 0 deletions
|
@ -87,6 +87,12 @@ class BaseSubprocessTransport(transports.SubprocessTransport):
|
||||||
def _start(self, args, shell, stdin, stdout, stderr, bufsize, **kwargs):
|
def _start(self, args, shell, stdin, stdout, stderr, bufsize, **kwargs):
|
||||||
raise NotImplementedError
|
raise NotImplementedError
|
||||||
|
|
||||||
|
def set_protocol(self, protocol):
|
||||||
|
self._protocol = protocol
|
||||||
|
|
||||||
|
def get_protocol(self):
|
||||||
|
return self._protocol
|
||||||
|
|
||||||
def is_closing(self):
|
def is_closing(self):
|
||||||
return self._closed
|
return self._closed
|
||||||
|
|
||||||
|
|
|
@ -66,6 +66,12 @@ class _ProactorBasePipeTransport(transports._FlowControlMixin,
|
||||||
def _set_extra(self, sock):
|
def _set_extra(self, sock):
|
||||||
self._extra['pipe'] = sock
|
self._extra['pipe'] = sock
|
||||||
|
|
||||||
|
def set_protocol(self, protocol):
|
||||||
|
self._protocol = protocol
|
||||||
|
|
||||||
|
def get_protocol(self):
|
||||||
|
return self._protocol
|
||||||
|
|
||||||
def is_closing(self):
|
def is_closing(self):
|
||||||
return self._closing
|
return self._closing
|
||||||
|
|
||||||
|
|
|
@ -560,6 +560,12 @@ class _SelectorTransport(transports._FlowControlMixin,
|
||||||
def abort(self):
|
def abort(self):
|
||||||
self._force_close(None)
|
self._force_close(None)
|
||||||
|
|
||||||
|
def set_protocol(self, protocol):
|
||||||
|
self._protocol = protocol
|
||||||
|
|
||||||
|
def get_protocol(self):
|
||||||
|
return self._protocol
|
||||||
|
|
||||||
def is_closing(self):
|
def is_closing(self):
|
||||||
return self._closing
|
return self._closing
|
||||||
|
|
||||||
|
|
|
@ -305,6 +305,12 @@ class _SSLProtocolTransport(transports._FlowControlMixin,
|
||||||
"""Get optional transport information."""
|
"""Get optional transport information."""
|
||||||
return self._ssl_protocol._get_extra_info(name, default)
|
return self._ssl_protocol._get_extra_info(name, default)
|
||||||
|
|
||||||
|
def set_protocol(self, protocol):
|
||||||
|
self._app_protocol = protocol
|
||||||
|
|
||||||
|
def get_protocol(self):
|
||||||
|
return self._app_protocol
|
||||||
|
|
||||||
def is_closing(self):
|
def is_closing(self):
|
||||||
return self._closed
|
return self._closed
|
||||||
|
|
||||||
|
|
|
@ -33,6 +33,14 @@ class BaseTransport:
|
||||||
"""
|
"""
|
||||||
raise NotImplementedError
|
raise NotImplementedError
|
||||||
|
|
||||||
|
def set_protocol(self, protocol):
|
||||||
|
"""Set a new protocol."""
|
||||||
|
raise NotImplementedError
|
||||||
|
|
||||||
|
def get_protocol(self):
|
||||||
|
"""Return the current protocol."""
|
||||||
|
raise NotImplementedError
|
||||||
|
|
||||||
|
|
||||||
class ReadTransport(BaseTransport):
|
class ReadTransport(BaseTransport):
|
||||||
"""Interface for read-only transports."""
|
"""Interface for read-only transports."""
|
||||||
|
|
|
@ -374,6 +374,12 @@ class _UnixReadPipeTransport(transports.ReadTransport):
|
||||||
def resume_reading(self):
|
def resume_reading(self):
|
||||||
self._loop.add_reader(self._fileno, self._read_ready)
|
self._loop.add_reader(self._fileno, self._read_ready)
|
||||||
|
|
||||||
|
def set_protocol(self, protocol):
|
||||||
|
self._protocol = protocol
|
||||||
|
|
||||||
|
def get_protocol(self):
|
||||||
|
return self._protocol
|
||||||
|
|
||||||
def is_closing(self):
|
def is_closing(self):
|
||||||
return self._closing
|
return self._closing
|
||||||
|
|
||||||
|
@ -570,6 +576,12 @@ class _UnixWritePipeTransport(transports._FlowControlMixin,
|
||||||
self._loop.remove_reader(self._fileno)
|
self._loop.remove_reader(self._fileno)
|
||||||
self._loop.call_soon(self._call_connection_lost, None)
|
self._loop.call_soon(self._call_connection_lost, None)
|
||||||
|
|
||||||
|
def set_protocol(self, protocol):
|
||||||
|
self._protocol = protocol
|
||||||
|
|
||||||
|
def get_protocol(self):
|
||||||
|
return self._protocol
|
||||||
|
|
||||||
def is_closing(self):
|
def is_closing(self):
|
||||||
return self._closing
|
return self._closing
|
||||||
|
|
||||||
|
|
|
@ -25,6 +25,7 @@ class SslProtoHandshakeTests(test_utils.TestCase):
|
||||||
sslcontext = test_utils.dummy_ssl_context()
|
sslcontext = test_utils.dummy_ssl_context()
|
||||||
app_proto = asyncio.Protocol()
|
app_proto = asyncio.Protocol()
|
||||||
proto = sslproto.SSLProtocol(self.loop, app_proto, sslcontext, waiter)
|
proto = sslproto.SSLProtocol(self.loop, app_proto, sslcontext, waiter)
|
||||||
|
self.assertIs(proto._app_transport.get_protocol(), app_proto)
|
||||||
self.addCleanup(proto._app_transport.close)
|
self.addCleanup(proto._app_transport.close)
|
||||||
return proto
|
return proto
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue