Python asyncio.Protocol() Examples
The following are 30
code examples of asyncio.Protocol().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
asyncio
, or try the search function
.
Example #1
Source File: test_utils.py From aiosocks with Apache License 2.0 | 7 votes |
def __aenter__(self): transports = self._transports write_buff = self._write_buff class SocksPrimitiveProtocol(asyncio.Protocol): _transport = None def connection_made(self, transport): self._transport = transport transports.append(transport) def data_received(self, data): self._transport.write(write_buff) def factory(): return SocksPrimitiveProtocol() self._srv = await self._loop.create_server( factory, '127.0.0.1', self.port) return self
Example #2
Source File: server.py From pygls with Apache License 2.0 | 6 votes |
def __init__(self, protocol_cls, loop=None, max_workers=2, sync_kind=TextDocumentSyncKind.INCREMENTAL): if not issubclass(protocol_cls, asyncio.Protocol): raise TypeError('Protocol class should be subclass of asyncio.Protocol') self._max_workers = max_workers self._server = None self._stop_event = None self._thread_pool = None self._thread_pool_executor = None self.sync_kind = sync_kind if IS_WIN: asyncio.set_event_loop(asyncio.ProactorEventLoop()) else: asyncio.set_event_loop(asyncio.SelectorEventLoop()) self.loop = loop or asyncio.get_event_loop() try: asyncio.get_child_watcher().attach_loop(self.loop) except NotImplementedError: pass self.lsp = protocol_cls(self)
Example #3
Source File: subprocess_attach_write_pipe.py From annotated-py-projects with MIT License | 6 votes |
def task(): rfd, wfd = os.pipe() args = [sys.executable, '-c', code, str(rfd)] proc = yield from asyncio.create_subprocess_exec( *args, pass_fds={rfd}, stdout=subprocess.PIPE) pipe = open(wfd, 'wb', 0) transport, _ = yield from loop.connect_write_pipe(asyncio.Protocol, pipe) transport.write(b'data') stdout, stderr = yield from proc.communicate() print("stdout = %r" % stdout.decode()) transport.close()
Example #4
Source File: backdoor.py From mee6 with MIT License | 6 votes |
def make_console(bot): class Console(asyncio.Protocol): def connection_made(self, transport): self.transport = transport self.transport.write(b'>>> ') self.bot = bot def data_received(self, data): """ Called when some data is received. The argument is a bytes object. """ if data == b'\xff\xf4\xff\xfd\x06': self.transport.close() return message = data.decode() resp = str(eval(message)) + "\n>>> " self.transport.write(resp.encode('utf-8')) return Console
Example #5
Source File: test_selector_events.py From Fluid-Designer with GNU General Public License v3.0 | 6 votes |
def test_make_ssl_transport(self): m = mock.Mock() self.loop.add_reader = mock.Mock() self.loop.add_reader._is_coroutine = False self.loop.add_writer = mock.Mock() self.loop.remove_reader = mock.Mock() self.loop.remove_writer = mock.Mock() waiter = asyncio.Future(loop=self.loop) with test_utils.disable_logger(): transport = self.loop._make_ssl_transport( m, asyncio.Protocol(), m, waiter) # execute the handshake while the logger is disabled # to ignore SSL handshake failure test_utils.run_briefly(self.loop) # Sanity check class_name = transport.__class__.__name__ self.assertIn("ssl", class_name.lower()) self.assertIn("transport", class_name.lower()) transport.close() # execute pending callbacks to close the socket transport test_utils.run_briefly(self.loop)
Example #6
Source File: protocols.py From py3tftp with MIT License | 6 votes |
def datagram_received(self, data, addr): """ Opens a read or write connection to remote host by scheduling an asyncio.Protocol. """ logger.debug('received: {}'.format(data.decode())) first_packet = self.packet_factory.from_bytes(data) protocol = self.select_protocol(first_packet) file_handler_cls = self.select_file_handler(first_packet) connect = self.loop.create_datagram_endpoint( lambda: protocol(data, file_handler_cls, addr, self.extra_opts), local_addr=(self.host_interface, 0, )) self.loop.create_task(connect)
Example #7
Source File: client.py From bottom with MIT License | 6 votes |
def connect(self) -> None: """Open a connection to the defined server.""" def protocol_factory() -> Protocol: return Protocol(client=self) _, protocol = await self.loop.create_connection( protocol_factory, host=self.host, port=self.port, ssl=self.ssl ) # type: Tuple[Any, Any] if self.protocol: self.protocol.close() self.protocol = protocol # TODO: Delete the following code line. It is currently kept in order # to not break the current existing codebase. Removing it requires a # heavy change in the test codebase. protocol.client = self self.trigger("client_connect")
Example #8
Source File: test_events.py From Fluid-Designer with GNU General Public License v3.0 | 6 votes |
def test_empty(self): f = mock.Mock() p = asyncio.Protocol() self.assertIsNone(p.connection_made(f)) self.assertIsNone(p.connection_lost(f)) self.assertIsNone(p.data_received(f)) self.assertIsNone(p.eof_received()) dp = asyncio.DatagramProtocol() self.assertIsNone(dp.connection_made(f)) self.assertIsNone(dp.connection_lost(f)) self.assertIsNone(dp.error_received(f)) self.assertIsNone(dp.datagram_received(f, f)) sp = asyncio.SubprocessProtocol() self.assertIsNone(sp.connection_made(f)) self.assertIsNone(sp.connection_lost(f)) self.assertIsNone(sp.pipe_data_received(1, f)) self.assertIsNone(sp.pipe_connection_lost(1, f)) self.assertIsNone(sp.process_exited())
Example #9
Source File: plm.py From python-insteonplm with MIT License | 6 votes |
def connection_made(self, transport): """Start the PLM connection process. Called when asyncio.Protocol establishes the network connection. """ _LOGGER.info("Connection established to PLM") self.transport = transport self._restart_writer = True self.restart_writing() # Testing to see if this fixes the 2413S issue self.transport.serial.timeout = 1 self.transport.serial.write_timeout = 1 self.transport.set_write_buffer_limits(128) # limit = self.transport.get_write_buffer_size() # _LOGGER.debug('Write buffer size is %d', limit) if self._aldb.status != ALDBStatus.LOADED: asyncio.ensure_future(self._setup_devices(), loop=self._loop)
Example #10
Source File: plm.py From python-insteonplm with MIT License | 6 votes |
def connection_lost(self, exc): """Reestablish the connection to the transport. Called when asyncio.Protocol loses the network connection. """ if exc is None: _LOGGER.warning("End of file received from Insteon Modem") else: _LOGGER.warning("Lost connection to Insteon Modem: %s", exc) self.transport = None asyncio.ensure_future(self.pause_writing(), loop=self.loop) if self._connection_lost_callback: self._connection_lost_callback() # Methods used to trigger callbacks for specific events
Example #11
Source File: test_events.py From ironpython3 with Apache License 2.0 | 6 votes |
def test_empty(self): f = mock.Mock() p = asyncio.Protocol() self.assertIsNone(p.connection_made(f)) self.assertIsNone(p.connection_lost(f)) self.assertIsNone(p.data_received(f)) self.assertIsNone(p.eof_received()) dp = asyncio.DatagramProtocol() self.assertIsNone(dp.connection_made(f)) self.assertIsNone(dp.connection_lost(f)) self.assertIsNone(dp.error_received(f)) self.assertIsNone(dp.datagram_received(f, f)) sp = asyncio.SubprocessProtocol() self.assertIsNone(sp.connection_made(f)) self.assertIsNone(sp.connection_lost(f)) self.assertIsNone(sp.pipe_data_received(1, f)) self.assertIsNone(sp.pipe_connection_lost(1, f)) self.assertIsNone(sp.process_exited())
Example #12
Source File: test_events.py From annotated-py-projects with MIT License | 6 votes |
def test_empty(self): f = mock.Mock() p = asyncio.Protocol() self.assertIsNone(p.connection_made(f)) self.assertIsNone(p.connection_lost(f)) self.assertIsNone(p.data_received(f)) self.assertIsNone(p.eof_received()) dp = asyncio.DatagramProtocol() self.assertIsNone(dp.connection_made(f)) self.assertIsNone(dp.connection_lost(f)) self.assertIsNone(dp.error_received(f)) self.assertIsNone(dp.datagram_received(f, f)) sp = asyncio.SubprocessProtocol() self.assertIsNone(sp.connection_made(f)) self.assertIsNone(sp.connection_lost(f)) self.assertIsNone(sp.pipe_data_received(1, f)) self.assertIsNone(sp.pipe_connection_lost(1, f)) self.assertIsNone(sp.process_exited())
Example #13
Source File: test_unix_events.py From annotated-py-projects with MIT License | 6 votes |
def setUp(self): self.loop = self.new_test_loop() self.protocol = test_utils.make_test_protocol(asyncio.Protocol) self.pipe = mock.Mock(spec_set=io.RawIOBase) self.pipe.fileno.return_value = 5 blocking_patcher = mock.patch('asyncio.unix_events._set_nonblocking') blocking_patcher.start() self.addCleanup(blocking_patcher.stop) fstat_patcher = mock.patch('os.fstat') m_fstat = fstat_patcher.start() st = mock.Mock() st.st_mode = stat.S_IFIFO m_fstat.return_value = st self.addCleanup(fstat_patcher.stop)
Example #14
Source File: test_selector_events.py From ironpython3 with Apache License 2.0 | 6 votes |
def test_make_ssl_transport(self): m = mock.Mock() self.loop.add_reader = mock.Mock() self.loop.add_reader._is_coroutine = False self.loop.add_writer = mock.Mock() self.loop.remove_reader = mock.Mock() self.loop.remove_writer = mock.Mock() waiter = asyncio.Future(loop=self.loop) with test_utils.disable_logger(): transport = self.loop._make_ssl_transport( m, asyncio.Protocol(), m, waiter) # execute the handshake while the logger is disabled # to ignore SSL handshake failure test_utils.run_briefly(self.loop) # Sanity check class_name = transport.__class__.__name__ self.assertIn("ssl", class_name.lower()) self.assertIn("transport", class_name.lower()) transport.close() # execute pending callbacks to close the socket transport test_utils.run_briefly(self.loop)
Example #15
Source File: test_base_events.py From ironpython3 with Apache License 2.0 | 5 votes |
def test_create_connection_multiple_errors(self, m_socket): class MyProto(asyncio.Protocol): pass @asyncio.coroutine def getaddrinfo(*args, **kw): yield from [] return [(2, 1, 6, '', ('107.6.106.82', 80)), (2, 1, 6, '', ('107.6.106.82', 80))] def getaddrinfo_task(*args, **kwds): return asyncio.Task(getaddrinfo(*args, **kwds), loop=self.loop) idx = -1 errors = ['err1', 'err2'] def _socket(*args, **kw): nonlocal idx, errors idx += 1 raise OSError(errors[idx]) m_socket.socket = _socket self.loop.getaddrinfo = getaddrinfo_task coro = self.loop.create_connection(MyProto, 'example.com', 80) with self.assertRaises(OSError) as cm: self.loop.run_until_complete(coro) self.assertEqual(str(cm.exception), 'Multiple exceptions: err1, err2')
Example #16
Source File: test_selector_events.py From annotated-py-projects with MIT License | 5 votes |
def setUp(self): self.loop = self.new_test_loop() self.protocol = test_utils.make_test_protocol(asyncio.Protocol) self.sock = mock.Mock(socket.socket) self.sock.fileno.return_value = 7 self.sslsock = mock.Mock() self.sslsock.fileno.return_value = 1 self.sslcontext = mock.Mock() self.sslcontext.wrap_socket.return_value = self.sslsock
Example #17
Source File: LiveThread.py From pyrdp with GNU General Public License v3.0 | 5 votes |
def __init__(self, host: str, port: int, protocolFactory: Callable[[], asyncio.Protocol]): """ :param host: host to bind to. :param port: port to listen on. :param protocolFactory: asyncio protocol factory. """ super().__init__() self.host = host self.port = port self.protocolFactory = protocolFactory self.loop = asyncio.new_event_loop()
Example #18
Source File: LiveWindow.py From pyrdp with GNU General Public License v3.0 | 5 votes |
def onConnection(self) -> asyncio.Protocol: self.connectionReceived.emit() tab = self.queue.get() return tab.getProtocol()
Example #19
Source File: test_events.py From annotated-py-projects with MIT License | 5 votes |
def test_create_connection_sock(self): with test_utils.run_test_server() as httpd: sock = None infos = self.loop.run_until_complete( self.loop.getaddrinfo( *httpd.address, type=socket.SOCK_STREAM)) for family, type, proto, cname, address in infos: try: sock = socket.socket(family=family, type=type, proto=proto) sock.setblocking(False) self.loop.run_until_complete( self.loop.sock_connect(sock, address)) except: pass else: break else: assert False, 'Can not create socket.' f = self.loop.create_connection( lambda: MyProto(loop=self.loop), sock=sock) tr, pr = self.loop.run_until_complete(f) self.assertIsInstance(tr, asyncio.Transport) self.assertIsInstance(pr, asyncio.Protocol) self.loop.run_until_complete(pr.done) self.assertGreater(pr.nbytes, 0) tr.close()
Example #20
Source File: test_events.py From annotated-py-projects with MIT License | 5 votes |
def _basetest_create_connection(self, connection_fut, check_sockname=True): tr, pr = self.loop.run_until_complete(connection_fut) self.assertIsInstance(tr, asyncio.Transport) self.assertIsInstance(pr, asyncio.Protocol) self.assertIs(pr.transport, tr) if check_sockname: self.assertIsNotNone(tr.get_extra_info('sockname')) self.loop.run_until_complete(pr.done) self.assertGreater(pr.nbytes, 0) tr.close()
Example #21
Source File: test_windows_events.py From annotated-py-projects with MIT License | 5 votes |
def test_close(self): a, b = self.loop._socketpair() trans = self.loop._make_socket_transport(a, asyncio.Protocol()) f = asyncio.async(self.loop.sock_recv(b, 100)) trans.close() self.loop.run_until_complete(f) self.assertEqual(f.result(), b'') b.close()
Example #22
Source File: LiveTab.py From pyrdp with GNU General Public License v3.0 | 5 votes |
def getProtocol(self) -> asyncio.Protocol: return self.layers.tcp
Example #23
Source File: test_base_events.py From ironpython3 with Apache License 2.0 | 5 votes |
def _test_create_connection_ip_addr(self, m_socket, allow_inet_pton): # Test the fallback code, even if this system has inet_pton. if not allow_inet_pton: del m_socket.inet_pton def getaddrinfo(*args, **kw): self.fail('should not have called getaddrinfo') m_socket.getaddrinfo = getaddrinfo sock = m_socket.socket.return_value self.loop.add_reader = mock.Mock() self.loop.add_reader._is_coroutine = False self.loop.add_writer = mock.Mock() self.loop.add_writer._is_coroutine = False coro = self.loop.create_connection(asyncio.Protocol, '1.2.3.4', 80) t, p = self.loop.run_until_complete(coro) try: sock.connect.assert_called_with(('1.2.3.4', 80)) m_socket.socket.assert_called_with(family=m_socket.AF_INET, proto=m_socket.IPPROTO_TCP, type=m_socket.SOCK_STREAM) finally: t.close() test_utils.run_briefly(self.loop) # allow transport to close sock.family = socket.AF_INET6 coro = self.loop.create_connection(asyncio.Protocol, '::2', 80) t, p = self.loop.run_until_complete(coro) try: sock.connect.assert_called_with(('::2', 80)) m_socket.socket.assert_called_with(family=m_socket.AF_INET6, proto=m_socket.IPPROTO_TCP, type=m_socket.SOCK_STREAM) finally: t.close() test_utils.run_briefly(self.loop) # allow transport to close
Example #24
Source File: test_events.py From ironpython3 with Apache License 2.0 | 5 votes |
def _basetest_create_connection(self, connection_fut, check_sockname=True): tr, pr = self.loop.run_until_complete(connection_fut) self.assertIsInstance(tr, asyncio.Transport) self.assertIsInstance(pr, asyncio.Protocol) self.assertIs(pr.transport, tr) if check_sockname: self.assertIsNotNone(tr.get_extra_info('sockname')) self.loop.run_until_complete(pr.done) self.assertGreater(pr.nbytes, 0) tr.close()
Example #25
Source File: test_sslproto.py From ironpython3 with Apache License 2.0 | 5 votes |
def ssl_protocol(self, waiter=None): sslcontext = test_utils.dummy_ssl_context() app_proto = asyncio.Protocol() proto = sslproto.SSLProtocol(self.loop, app_proto, sslcontext, waiter) self.addCleanup(proto._app_transport.close) return proto
Example #26
Source File: test_windows_events.py From ironpython3 with Apache License 2.0 | 5 votes |
def _test_pipe(self): ADDRESS = r'\\.\pipe\_test_pipe-%s' % os.getpid() with self.assertRaises(FileNotFoundError): yield from self.loop.create_pipe_connection( asyncio.Protocol, ADDRESS) [server] = yield from self.loop.start_serving_pipe( UpperProto, ADDRESS) self.assertIsInstance(server, windows_events.PipeServer) clients = [] for i in range(5): stream_reader = asyncio.StreamReader(loop=self.loop) protocol = asyncio.StreamReaderProtocol(stream_reader, loop=self.loop) trans, proto = yield from self.loop.create_pipe_connection( lambda: protocol, ADDRESS) self.assertIsInstance(trans, asyncio.Transport) self.assertEqual(protocol, proto) clients.append((stream_reader, trans)) for i, (r, w) in enumerate(clients): w.write('lower-{}\n'.format(i).encode()) for i, (r, w) in enumerate(clients): response = yield from r.readline() self.assertEqual(response, 'LOWER-{}\n'.format(i).encode()) w.close() server.close() with self.assertRaises(FileNotFoundError): yield from self.loop.create_pipe_connection( asyncio.Protocol, ADDRESS) return 'done'
Example #27
Source File: test_windows_events.py From ironpython3 with Apache License 2.0 | 5 votes |
def test_close(self): a, b = self.loop._socketpair() trans = self.loop._make_socket_transport(a, asyncio.Protocol()) f = asyncio.ensure_future(self.loop.sock_recv(b, 100)) trans.close() self.loop.run_until_complete(f) self.assertEqual(f.result(), b'') b.close()
Example #28
Source File: test_events.py From ironpython3 with Apache License 2.0 | 5 votes |
def _basetest_create_ssl_connection(self, connection_fut, check_sockname=True, peername=None): tr, pr = self.loop.run_until_complete(connection_fut) self.assertIsInstance(tr, asyncio.Transport) self.assertIsInstance(pr, asyncio.Protocol) self.assertTrue('ssl' in tr.__class__.__name__.lower()) self.check_ssl_extra_info(tr, check_sockname, peername) self.loop.run_until_complete(pr.done) self.assertGreater(pr.nbytes, 0) tr.close()
Example #29
Source File: test_events.py From ironpython3 with Apache License 2.0 | 5 votes |
def test_create_connection_sock(self): with test_utils.run_test_server() as httpd: sock = None infos = self.loop.run_until_complete( self.loop.getaddrinfo( *httpd.address, type=socket.SOCK_STREAM)) for family, type, proto, cname, address in infos: try: sock = socket.socket(family=family, type=type, proto=proto) sock.setblocking(False) self.loop.run_until_complete( self.loop.sock_connect(sock, address)) except: pass else: break else: assert False, 'Can not create socket.' f = self.loop.create_connection( lambda: MyProto(loop=self.loop), sock=sock) tr, pr = self.loop.run_until_complete(f) self.assertIsInstance(tr, asyncio.Transport) self.assertIsInstance(pr, asyncio.Protocol) self.loop.run_until_complete(pr.done) self.assertGreater(pr.nbytes, 0) tr.close()
Example #30
Source File: test_proactor_events.py From Project-New-Reign---Nemesis-Main with GNU General Public License v3.0 | 5 votes |
def setUp(self): super().setUp() self.loop = self.new_test_loop() self.addCleanup(self.loop.close) self.proactor = mock.Mock() self.loop._proactor = self.proactor self.protocol = test_utils.make_test_protocol(asyncio.Protocol) self.sock = mock.Mock(socket.socket)