Esempio n. 1
0
    def open_connection(self, host=None, port=None, *,
                        limit=None, **kwds):
        """A wrapper for create_connection() returning a (reader, writer) pair.

        The reader returned is a StreamReader instance; the writer is a
        StreamWriter instance.

        The arguments are all the usual arguments to create_connection()
        except protocol_factory; most common are positional host and port,
        with various optional keyword arguments following.

        Additional optional keyword arguments are loop (to set the event loop
        instance to use) and limit (to set the buffer limit passed to the
        StreamReader).

        (If you want to customize the StreamReader and/or
        StreamReaderProtocol classes, just copy the code -- there's
        really nothing special here except some convenience.)
        """
        if not limit:
            limit = asyncio.streams._DEFAULT_LIMIT  # type: ignore
        reader = asyncio.streams.StreamReader(limit=limit, loop=self.loop)
        protocol = asyncio.streams.StreamReaderProtocol(reader, loop=self.loop)
        sock = self._open_mock_socket(host, port)
        transport = _SelectorSocketTransport(self.loop, sock, protocol)
        writer = asyncio.streams.StreamWriter(transport, protocol, reader, self.loop)
        return reader, writer   # type: ignore
Esempio n. 2
0
 def socket_transport(self, waiter=None):
     transport = _SelectorSocketTransport(self.loop,
                                          self.sock,
                                          self.protocol,
                                          waiter=waiter)
     self.addCleanup(close_transport, transport)
     return transport
Esempio n. 3
0
 def _make_socket_transport(self,
                            sock,
                            protocol,
                            waiter=None,
                            *,
                            extra=None,
                            server=None):
     return selector_events._SelectorSocketTransport(
         self, sock, protocol, waiter, extra, server)
Esempio n. 4
0
    async def add_client(self, socket):
        if not self.is_bound.done():
            raise AssertionError("Server not running")

        limit = asyncio.streams._DEFAULT_LIMIT
        reader = asyncio.streams.StreamReader(limit=limit, loop=self.loop)
        protocol = asyncio.streams.StreamReaderProtocol(reader, loop=self.loop)
        transport = _SelectorSocketTransport(self.loop, socket, protocol)
        writer = asyncio.streams.StreamWriter(transport, protocol, reader, self.loop)
        await self.client_connected_cb(reader, writer)
Esempio n. 5
0
 def socket_transport(self, waiter=None):
     transport = _SelectorSocketTransport(self.loop, self.sock,
                                          self.protocol, waiter=waiter)
     self.addCleanup(close_transport, transport)
     return transport
Esempio n. 6
0
 def _make_socket_transport(self, sock, protocol, waiter=None, *, extra=None, server=None):
     return selector_events._SelectorSocketTransport(self, sock, protocol, waiter, extra, server)