관리-도구
편집 파일: selector_events.cpython-39.pyc
a �����DOgL�����������������������@���s$��d�Z�dZddlZddlZddlZddlZddlZddlZddlZzddl Z W�n�e yb���dZ Y�n0�ddlmZ�ddlm Z �ddlmZ�ddlmZ�dd lmZ�dd lmZ�ddlmZ�ddlmZ�dd lmZ�dd��ZG�dd��dej�ZG�dd��dejej�ZG�dd��de�ZG�dd��de�ZdS�)z�Event loop using a selector and related classes. A selector is a "notify-when-ready" multiplexer. For a subclass which also includes support for signal handling, see the unix_events sub-module. )�BaseSelectorEventLoop�����N����)�base_events)� constants)�events)�futures)� protocols)�sslproto)� transports)�trsock)�loggerc�����������������C���s6���z|���|�}W�n�ty"���Y�dS�0�t|j|@��S�d�S��NF)�get_key�KeyError�boolr���)�selector�fd�event�key��r����//usr/lib64/python3.9/asyncio/selector_events.py�_test_selector_event ���s ����r���c�����������������������s���e�Zd�ZdZdS��fdd� ZdTddd�dd�ZdUddddejd �d d�ZdVdd �Z ��fdd�Z dd��Zdd��Zdd��Z dd��Zdd��Zdddejfdd�Zdddejfdd�Zddejfdd �Zd!d"��Zd#d$��Zd%d&��Zd'd(��Zd)d*��Zd+d,��Zd-d.��Zd/d0��Zd1d2��Zd3d4��ZdWd5d6�Zd7d8��Zd9d:��Zd;d<��Z d=d>��Z!d?d@��Z"dAdB��Z#dCdD��Z$dXdEdF�Z%dGdH��Z&dIdJ��Z'dKdL��Z(dMdN��Z)dOdP��Z*dQdR��Z+���Z,S�)Yr���zJSelector event loop. See events.EventLoop for API specification. Nc��������������������sF���t�������|d�u�rt���}t�d|jj��||�_|�� ���t ���|�_d�S�)NzUsing selector: %s) �super�__init__� selectors�DefaultSelectorr����debug� __class__�__name__� _selector�_make_self_pipe�weakref�WeakValueDictionary�_transports)�selfr����r���r���r���r���1���s���� zBaseSelectorEventLoop.__init__��extra�serverc����������������C���s���t�|�|||||�S��N)�_SelectorSocketTransport)r$����sock�protocol�waiterr'���r(���r���r���r����_make_socket_transport;���s���� �z,BaseSelectorEventLoop._make_socket_transportF)�server_side�server_hostnamer'���r(����ssl_handshake_timeoutc������������� ���C���s0���t�j|�|||||| d�} t|�|| ||d��| jS�)N)r1���r&���)r ���ZSSLProtocolr*���Z_app_transport)r$���Zrawsockr,���� sslcontextr-���r/���r0���r'���r(���r1���Zssl_protocolr���r���r����_make_ssl_transport@���s������z)BaseSelectorEventLoop._make_ssl_transportc�����������������C���s���t�|�|||||�S�r)���)�_SelectorDatagramTransport)r$���r+���r,����addressr-���r'���r���r���r����_make_datagram_transportM���s�����z.BaseSelectorEventLoop._make_datagram_transportc��������������������sL���|�����rtd��|����rd�S�|�����t������|�jd�urH|�j����d�|�_d�S�)Nz!Cannot close a running event loop)Z is_running�RuntimeError� is_closed�_close_self_piper����closer����r$���r%���r���r���r:���R���s���� zBaseSelectorEventLoop.closec�����������������C���sB���|���|�j�����|�j����d�|�_|�j����d�|�_|��jd8��_d�S�)Nr���)�_remove_reader�_ssock�filenor:����_csock� _internal_fdsr;���r���r���r���r9���]���s���� z&BaseSelectorEventLoop._close_self_pipec�����������������C���sN���t����\|�_|�_|�j�d��|�j�d��|��jd7��_|��|�j���|�j��d�S�)NFr���) �socket� socketpairr=���r?����setblockingr@����_add_readerr>����_read_from_selfr;���r���r���r���r ���e���s ����z%BaseSelectorEventLoop._make_self_pipec�����������������C���s���d�S�r)���r����r$����datar���r���r����_process_self_datam���s����z(BaseSelectorEventLoop._process_self_datac�����������������C���sT���z"|�j��d�}|sW�qP|��|��W�q��ty8���Y�q�Y�q��tyL���Y�qPY�q�0�q�d�S�)Ni���)r=����recvrH����InterruptedError�BlockingIOErrorrF���r���r���r���rE���p���s����z%BaseSelectorEventLoop._read_from_selfc�����������������C���sL���|�j�}|d�u�rd�S�z|�d��W�n&�tyF���|�jrBtjddd��Y�n0�d�S�)N�����z3Fail to write a null byte into the self-pipe socketT��exc_info)r?����send�OSError�_debugr���r���)r$����csockr���r���r����_write_to_self|���s�����z$BaseSelectorEventLoop._write_to_self�d���c�������������� ���C���s"���|���|���|�j||||||��d�S�r)���)rD���r>����_accept_connection)r$����protocol_factoryr+���r2���r(����backlogr1���r���r���r����_start_serving����s���� �z$BaseSelectorEventLoop._start_servingc����������� ������C���s��t�|�D�]�}z0|���\}} |�jr0t�d|| |��|�d��W�n��tttfyX���Y��d�S��t y��} �zl| j t jt jt j t jfv�r�|��d| t�|�d���|��|�����|��tj|�j||||||��n��W�Y�d�} ~ qd�} ~ 0�0�d| i}|��||||||�}|��|��qd�S�)Nz#%r got a new connection from %r: %rFz&socket.accept() out of system resource)�message� exceptionrA����peername)�range�acceptrQ���r���r���rC���rK���rJ����ConnectionAbortedErrorrP����errnoZEMFILEZENFILEZENOBUFSZENOMEM�call_exception_handlerr����TransportSocketr<���r>���Z call_laterr���ZACCEPT_RETRY_DELAYrX����_accept_connection2Zcreate_task) r$���rV���r+���r2���r(���rW���r1����_�conn�addr�excr'���r]���r���r���r���rU�������s@�������� �z(BaseSelectorEventLoop._accept_connectionc�������������� �������s����d�}d�}zr|��}|�����} |r8|�j|||| d|||d�}n|�j||| ||d�}z| I�d�H��W�n�tyv���|������Y�n0�W�nt�ttfy������Y�n^�ty��} �zF|�jr�d| d�}|d�ur�||d<�|d�ur�||d<�|��|��W�Y�d�} ~ n d�} ~ 0�0�d�S�)NT)r-���r/���r'���r(���r1���)r-���r'���r(���z3Error on transport creation for incoming connection)rY���rZ���r,���� transport) � create_futurer3���r.���� BaseExceptionr:���� SystemExit�KeyboardInterruptrQ���r`���)r$���rV���rd���r'���r2���r(���r1���r,���rg���r-���rf����contextr���r���r���rb�������s@�������z)BaseSelectorEventLoop._accept_connection2c�������������� ���C���s����|}t�|t�sHzt|����}W�n(�tttfyF���td|���d��Y�n0�z|�j|�}W�n�tyh���Y�n0�|���s�t d|�d|����d�S�)NzInvalid file object: zFile descriptor z is used by transport ) � isinstance�intr>����AttributeError� TypeError� ValueErrorr#���r���� is_closingr7���)r$���r���r>���rg���r���r���r����_ensure_fd_no_transport����s ���� ��z-BaseSelectorEventLoop._ensure_fd_no_transportc����������� ��� ���G���s����|������t�|||�d��}z|�j�|�}W�n(�tyP���|�j�|tj|d�f��Y�n>0�|j|j �}\}}|�j� ||tjB�||f��|d�ur�|����|S�r)���)� _check_closedr����Handler���r���r����registerr���� EVENT_READrG����modify�cancel� r$���r����callback�args�handler����mask�reader�writerr���r���r���rD�������s����� �z!BaseSelectorEventLoop._add_readerc�����������������C���s����|�����rdS�z|�j�|�}W�n�ty0���Y�dS�0�|j|j�}\}}|tj�M�}|sb|�j�|��n|�j� ||d�|f��|d�ur�|� ���dS�dS�d�S�)NFT)r8���r���r���r���r���rG���r���rw���� unregisterrx���ry����r$���r���r���r~���r���r����r���r���r���r<�����s����z$BaseSelectorEventLoop._remove_readerc����������� ��� ���G���s����|������t�|||�d��}z|�j�|�}W�n(�tyP���|�j�|tjd�|f��Y�n>0�|j|j �}\}}|�j� ||tjB�||f��|d�ur�|����|S�r)���)rt���r���ru���r���r���r���rv���r����EVENT_WRITErG���rx���ry���rz���r���r���r����_add_writer!��s����� �z!BaseSelectorEventLoop._add_writerc�����������������C���s����|�����rdS�z|�j�|�}W�n�ty0���Y�dS�0�|j|j�}\}}|tj�M�}|sb|�j�|��n|�j� |||df��|dur�|� ���dS�dS�dS�)�Remove a writer callback.FNT)r8���r���r���r���r���rG���r���r����r����rx���ry���r����r���r���r����_remove_writer1��s����z$BaseSelectorEventLoop._remove_writerc�����������������G���s"���|���|��|�j||g|�R����dS�)zAdd a reader callback.N)rs���rD����r$���r���r{���r|���r���r���r���� add_readerH��s���� z BaseSelectorEventLoop.add_readerc�����������������C���s���|���|��|��|�S�)zRemove a reader callback.)rs���r<����r$���r���r���r���r���� remove_readerM��s���� z#BaseSelectorEventLoop.remove_readerc�����������������G���s"���|���|��|�j||g|�R����dS�)zAdd a writer callback..N)rs���r����r����r���r���r���� add_writerR��s���� z BaseSelectorEventLoop.add_writerc�����������������C���s���|���|��|��|�S�)r����)rs���r����r����r���r���r���� remove_writerW��s���� z#BaseSelectorEventLoop.remove_writerc�������������� �������s����t��|��|�jr$|���dkr$td��z|�|�W�S��ttfyF���Y�n0�|����}|� ��}|�� |��|��||�j|||�}|� tj|�j||d���|I�dH�S�)z�Receive data from the socket. The return value is a bytes object representing the data received. The maximum amount of data to be received at once is specified by nbytes. r����the socket must be non-blocking�r}���N)r����_check_ssl_socketrQ���� gettimeoutrq���rI���rK���rJ���rh���r>���rs���rD���� _sock_recv�add_done_callback� functools�partial�_sock_read_done)r$���r+����n�futr���r}���r���r���r���� sock_recv\��s���� �zBaseSelectorEventLoop.sock_recvc�����������������C���s���|d�u�s|����s|��|��d�S�r)���)� cancelledr�����r$���r���r����r}���r���r���r���r����r��s����z%BaseSelectorEventLoop._sock_read_donec�������������� ���C���s����|����rd�S�z|�|�}W�nZ�ttfy2���Y�d�S��ttfyH�����Y�n8�tyt�}�z|�|��W�Y�d�}~nd�}~0�0�|�|��d�S�r)���) �donerI���rK���rJ���rj���rk���ri���� set_exception� set_result)r$���r����r+���r����rG���rf���r���r���r���r����v��s���� z BaseSelectorEventLoop._sock_recvc�������������� �������s����t��|��|�jr$|���dkr$td��z|�|�W�S��ttfyF���Y�n0�|����}|� ��}|�� |��|��||�j|||�}|� tj|�j||d���|I�dH�S�)z�Receive data from the socket. The received data is written into *buf* (a writable buffer). The return value is the number of bytes written. r���r����r����N)r���r����rQ���r����rq���� recv_intorK���rJ���rh���r>���rs���rD����_sock_recv_intor����r����r����r����)r$���r+����bufr����r���r}���r���r���r����sock_recv_into���s���� �z$BaseSelectorEventLoop.sock_recv_intoc�������������� ���C���s����|����rd�S�z|�|�}W�nZ�ttfy2���Y�d�S��ttfyH�����Y�n8�tyt�}�z|�|��W�Y�d�}~nd�}~0�0�|�|��d�S�r)���) r����r����rK���rJ���rj���rk���ri���r����r����)r$���r����r+���r�����nbytesrf���r���r���r���r�������s���� z%BaseSelectorEventLoop._sock_recv_intoc�������������� �������s����t��|��|�jr$|���dkr$td��z|�|�}W�n�ttfyL���d}Y�n0�|t|�kr^dS�|�� ��}|� ��}|��|��|��||�j ||t|�|g�}|�tj|�j||d���|I�dH�S�)a���Send data to the socket. The socket must be connected to a remote socket. This method continues to send data from data until either all data has been sent or an error occurs. None is returned on success. On error, an exception is raised, and there is no way to determine how much data, if any, was successfully processed by the receiving end of the connection. r���r����Nr����)r���r����rQ���r����rq���rO���rK���rJ����lenrh���r>���rs���r����� _sock_sendall� memoryviewr����r����r�����_sock_write_done)r$���r+���rG���r����r����r���r}���r���r���r����sock_sendall���s&���� ��z"BaseSelectorEventLoop.sock_sendallc�������������� ���C���s����|����rd�S�|d�}z|�||d����}W�n\�ttfyB���Y�d�S��ttfyX�����Y�n0�ty��}�z|�|��W�Y�d�}~d�S�d�}~0�0�||7�}|t|�kr�|� d���n||d<�d�S�)Nr���) r����rO���rK���rJ���rj���rk���ri���r����r����r����)r$���r����r+����view�pos�startr����rf���r���r���r���r�������s ���� z#BaseSelectorEventLoop._sock_sendallc���������������������s����t��|��|�jr$|���dkr$td��|jtjksBt�jrt|jtj krt|�j ||j|j|j|�d�I�dH�}|d�\}}}}}|�� ��}|��|||��|I�dH�S�)zTConnect to a remote socket at address. This method is a coroutine. r���r����)�family�type�proto�loopN)r���r����rQ���r����rq���r����rA����AF_INETZ _HAS_IPv6�AF_INET6Z_ensure_resolvedr����r����rh���� _sock_connect)r$���r+���r5���Zresolvedrc���r����r���r���r����sock_connect���s ���� � ��z"BaseSelectorEventLoop.sock_connectc�������������� ���C���s����|����}z|�|��W�n��ttfyb���|��|��|��||�j|||�}|�tj |�j ||d���Y�nN�ttfyx�����Y�n8�t y��}�z|�|��W�Y�d�}~nd�}~0�0�|�d���d�S�)Nr����)r>����connectrK���rJ���rs���r�����_sock_connect_cbr����r����r����r����rj���rk���ri���r����r����)r$���r����r+���r5���r���r}���rf���r���r���r���r�������s ���� �� z#BaseSelectorEventLoop._sock_connectc�����������������C���s���|d�u�s|����s|��|��d�S�r)���)r����r����r����r���r���r���r������s����z&BaseSelectorEventLoop._sock_write_donec�������������� ���C���s����|����rd�S�z,|�tjtj�}|dkr6t|d|�����W�nX�ttfyN���Y�nN�tt fyd�����Y�n8�t y��}�z|�|��W�Y�d�}~nd�}~0�0�|�d���d�S�)Nr���zConnect call failed ) r����� getsockoptrA���� SOL_SOCKET�SO_ERRORrP���rK���rJ���rj���rk���ri���r����r����)r$���r����r+���r5����errrf���r���r���r���r������s���� z&BaseSelectorEventLoop._sock_connect_cbc���������������������sB���t��|��|�jr$|���dkr$td��|����}|��||��|I�dH�S�)aW��Accept a connection. The socket must be bound to an address and listening for connections. The return value is a pair (conn, address) where conn is a new socket object usable to send and receive data on the connection, and address is the address bound to the socket on the other end of the connection. r���r����N)r���r����rQ���r����rq���rh����_sock_accept)r$���r+���r����r���r���r����sock_accept"��s���� z!BaseSelectorEventLoop.sock_acceptc�������������� ���C���s����|����}z|���\}}|�d��W�n��ttfyl���|��|��|��||�j||�}|�t j |�j||d���Y�nR�tt fy������Y�n<�ty��}�z|�|��W�Y�d�}~nd�}~0�0�|�||f��d�S�)NFr����)r>���r]���rC���rK���rJ���rs���rD���r����r����r����r����r����rj���rk���ri���r����r����)r$���r����r+���r���rd���r5���r}���rf���r���r���r���r����1��s���� � z"BaseSelectorEventLoop._sock_acceptc�������������� �������s����|�j�|j=�|���}|����|���I�d�H��zL|�j|j|||dd�I�d�H�W�|����|rZ|����||�j�|j<�S�||�j�|j<�n"|����|r�|����||�j�|j<�0�d�S�)NF)�fallback) r#����_sock_fd� is_reading� pause_reading�_make_empty_waiterZ sock_sendfile�_sock�_reset_empty_waiter�resume_reading)r$���Ztransp�file�offset�countr����r���r���r����_sendfile_nativeB��s*���� ������z&BaseSelectorEventLoop._sendfile_nativec�����������������C���s����|D�]v\}}|j�|j�}\}}|tj@�rL|d�urL|jrB|��|��n |��|��|tj@�r|d�ur|jrp|��|��q|��|��qd�S�r)���) �fileobjrG���r���rw���Z _cancelledr<���Z _add_callbackr����r����)r$���Z event_listr���r~���r����r���r����r���r���r����_process_eventsP��s���� z%BaseSelectorEventLoop._process_eventsc�����������������C���s���|���|�����|����d�S�r)���)r<���r>���r:���)r$���r+���r���r���r���� _stop_serving^��s����z#BaseSelectorEventLoop._stop_serving)N)N)N)NNN)N)N)-r���� __module__�__qualname__�__doc__r���r.���r���ZSSL_HANDSHAKE_TIMEOUTr3���r6���r:���r9���r ���rH���rE���rS���rX���rU���rb���rs���rD���r<���r����r����r����r����r����r����r����r����r����r����r����r����r����r����r����r����r����r����r����r����r����r����� __classcell__r���r���r%���r���r���+���sj��� ������ � � .� ) r���c�����������������������s����e�Zd�ZdZeZdZd��fdd� Zdd��Zdd��Z d d ��Z dd��Zd d��Zdd��Z ejfdd�Zddd�Zdd��Zdd��Zdd��Zdd��Z���ZS�) �_SelectorTransporti���Nc��������������������s����t����||��t�|�|�jd<�z|���|�jd<�W�n�tyL���d�|�jd<�Y�n0�d|�jvr�z|���|�jd<�W�n�tj y����d�|�jd<�Y�n0�||�_ |���|�_d|�_ |��|��||�_|����|�_d|�_d|�_|�jd�ur�|�j����|�|j|�j<�d�S�)NrA���Zsocknamer[���Fr���)r���r���r���ra����_extra�getsocknamerP����getpeernamerA����errorr����r>���r�����_protocol_connected�set_protocol�_server�_buffer_factory�_buffer� _conn_lost�_closingZ_attachr#���)r$���r����r+���r,���r'���r(���r%���r���r���r���o��s,���� z_SelectorTransport.__init__c�����������������C���s����|�j�jg}|�jd�u�r |�d��n|�jr0|�d��|�d|�j�����|�jd�ur�|�j���s�t|�jj |�jt j�}|rz|�d��n |�d��t|�jj |�jt j�}|r�d}nd}|�� ��}|�d|��d |��d ���d�d�|��S�) N�closed�closingzfd=zread=pollingz read=idle�pollingZidlezwrite=<z , bufsize=�>z<{}>� )r���r���r�����appendr����r�����_loopr8���r���r���r���rw���r�����get_write_buffer_size�format�join)r$����infor�����state�bufsizer���r���r����__repr__���s.���� � �z_SelectorTransport.__repr__c�����������������C���s���|���d���d�S�r)���)�_force_closer;���r���r���r����abort���s����z_SelectorTransport.abortc�����������������C���s���||�_�d|�_d�S��NT)� _protocolr�����r$���r,���r���r���r���r�������s����z_SelectorTransport.set_protocolc�����������������C���s���|�j�S�r)���)r����r;���r���r���r����get_protocol���s����z_SelectorTransport.get_protocolc�����������������C���s���|�j�S�r)���)r����r;���r���r���r���rr������s����z_SelectorTransport.is_closingc�����������������C���sT���|�j�r d�S�d|�_�|�j�|�j��|�jsP|��jd7��_|�j�|�j��|�j�|�jd���d�S��NTr���) r����r����r<���r����r����r����r����� call_soon�_call_connection_lostr;���r���r���r���r:������s����z_SelectorTransport.closec�����������������C���s,���|�j�d�ur(|d|���t|�d��|�j�����d�S�)Nzunclosed transport )�source)r�����ResourceWarningr:���)r$����_warnr���r���r����__del__���s���� z_SelectorTransport.__del__�Fatal error on transportc�����������������C���sN���t�|t�r(|�j���r@tjd|�|dd��n|�j�|||�|�jd���|��|��d�S�)Nz%r: %sTrM���)rY���rZ���rg���r,���) rm���rP���r����� get_debugr���r���r`���r����r����)r$���rf���rY���r���r���r����_fatal_error���s���� �z_SelectorTransport._fatal_errorc�����������������C���sd���|�j�r d�S�|�jr(|�j����|�j�|�j��|�jsBd|�_|�j�|�j��|��j�d7��_�|�j�|�j |��d�S�r����) r����r�����clearr����r����r����r����r<���r����r�����r$���rf���r���r���r���r�������s���� z_SelectorTransport._force_closec�����������������C���s����zN|�j�r|�j�|��W�|�j����d�|�_d�|�_d�|�_|�j}|d�ur�|����d�|�_n:|�j����d�|�_d�|�_d�|�_|�j}|d�ur�|����d�|�_0�d�S�r)���)r����r����Zconnection_lostr����r:���r����r����Z_detach)r$���rf���r(���r���r���r���r�������s&���� � z(_SelectorTransport._call_connection_lostc�����������������C���s ���t�|�j�S�r)���)r����r����r;���r���r���r���r�������s����z(_SelectorTransport.get_write_buffer_sizec�����������������G���s$���|�j�r d�S�|�jj||g|�R����d�S�r)���)r����r����rD���r����r���r���r���rD������s����z_SelectorTransport._add_reader)NN)r����)r���r����r�����max_size� bytearrayr����r����r���r����r����r����r����rr���r:����warnings�warnr����r����r����r����r����rD���r����r���r���r%���r���r����c��s ��� r����c�����������������������s����e�Zd�ZdZejjZd#��fdd� Z��fdd�Z dd��Z d d ��Zdd��Zd d��Z dd��Zdd��Zdd��Zdd��Zdd��Zdd��Zdd��Z��fdd�Zdd ��Zd!d"��Z���ZS�)$r*���TNc��������������������s~���d�|�_�t���|||||��d|�_d|�_d�|�_t�|�j��|�j � |�jj|���|�j � |�j |�j|�j��|d�urz|�j � tj|d���d�S�r ���)�_read_ready_cbr���r����_eof�_paused� _empty_waiterr���Z_set_nodelayr����r����r����r�����connection_maderD���r�����_read_readyr����_set_result_unless_cancelled)r$���r����r+���r,���r-���r'���r(���r%���r���r���r������s���� � �z!_SelectorSocketTransport.__init__c��������������������s.���t�|tj�r|�j|�_n|�j|�_t���|��d�S�r)���)rm���r���ZBufferedProtocol�_read_ready__get_bufferr�����_read_ready__data_receivedr���r����r����r%���r���r���r������s���� z%_SelectorSocketTransport.set_protocolc�����������������C���s���|�j��o|�j�S�r)���)r���r����r;���r���r���r���r������s����z#_SelectorSocketTransport.is_readingc�����������������C���s>���|�j�s|�jrd�S�d|�_|�j�|�j��|�j���r:t�d|���d�S�)NTz%r pauses reading)r����r���r����r<���r����r����r���r���r;���r���r���r���r������s���� z&_SelectorSocketTransport.pause_readingc�����������������C���s@���|�j�s|�jsd�S�d|�_|��|�j|�j��|�j���r<t�d|���d�S�)NFz%r resumes reading) r����r���rD���r����r��r����r����r���r���r;���r���r���r���r����"��s���� z'_SelectorSocketTransport.resume_readingc�����������������C���s���|������d�S�r)���)r����r;���r���r���r���r��*��s����z$_SelectorSocketTransport._read_readyc�������������� ���C���sV��|�j�r d�S�z |�j�d�}t|�s(td��W�nH�ttfyB�����Y�n2�tyr�}�z|��|d��W�Y�d�}~d�S�d�}~0�0�z|�j � |�}W�n^�ttfy����Y�d�S��ttfy������Y�n2�ty��}�z|��|d��W�Y�d�}~d�S�d�}~0�0�|��s�|�� ���d�S�z|�j�|��W�nJ�ttf�y �����Y�n2�t�yP�}�z|��|d��W�Y�d�}~n d�}~0�0�d�S�)N���z%get_buffer() returned an empty bufferz/Fatal error: protocol.get_buffer() call failed.�$Fatal read error on socket transportz3Fatal error: protocol.buffer_updated() call failed.)r����r����Z get_bufferr����r7���rj���rk���ri���r����r����r����rK���rJ����_read_ready__on_eofZbuffer_updated)r$���r����rf���r����r���r���r���r��-��sB������z0_SelectorSocketTransport._read_ready__get_bufferc�������������� ���C���s����|�j�r d�S�z|�j�|�j�}W�n^�ttfy4���Y�d�S��ttfyJ�����Y�n2�tyz�}�z|�� |d��W�Y�d�}~d�S�d�}~0�0�|s�|�� ���d�S�z|�j�|��W�nF�ttfy������Y�n0�ty��}�z|�� |d��W�Y�d�}~n d�}~0�0�d�S�)Nr��z2Fatal error: protocol.data_received() call failed.) r����r����rI���r����rK���rJ���rj���rk���ri���r����r ��r����Z data_received)r$���rG���rf���r���r���r���r��R��s,�����z3_SelectorSocketTransport._read_ready__data_receivedc�������������� ���C���s����|�j����rt�d|���z|�j���}W�nH�ttfy<�����Y�n2�tyl�}�z|�� |d��W�Y�d�}~d�S�d�}~0�0�|r�|�j�� |�j��n|�����d�S�)Nz%r received EOFz1Fatal error: protocol.eof_received() call failed.) r����r����r���r���r����Zeof_receivedrj���rk���ri���r����r<���r����r:���)r$���Z keep_openrf���r���r���r���r ��k��s���� �z,_SelectorSocketTransport._read_ready__on_eofc�������������� ���C���s0��t�|tttf�s$tdt|�j����|�jr2td��|�j d�urDtd��|sLd�S�|�j rz|�j tjkrht �d��|��j d7��_ d�S�|�j�sz|�j�|�}W�n\�ttfy����Y�n^�ttfy������Y�nH�ty��}�z|��|d��W�Y�d�}~d�S�d�}~0�0�||d���}|�sd�S�|�j�|�j|�j��|�j�|��|�����d�S�)N�/data argument must be a bytes-like object, not z%Cannot call write() after write_eof()z(unable to write; sendfile is in progress�socket.send() raised exception.r����%Fatal write error on socket transport)rm����bytesr����r����rp���r����r���r����r7���r��r����r����!LOG_THRESHOLD_FOR_CONNLOST_WRITESr����warningr����r����rO���rK���rJ���rj���rk���ri���r����r����r����r�����_write_ready�extend�_maybe_pause_protocol)r$���rG���r����rf���r���r���r����write���s>����� z_SelectorSocketTransport.writec�������������� ���C���s&��|�j�sJ�d��|�jrd�S�z|�j�|�j��}W�n��ttfy@���Y�n��ttfyV�����Y�n��ty��}�zF|�j � |�j��|�j�����|�� |d��|�jd�ur�|�j�|��W�Y�d�}~nxd�}~0�0�|r�|�j�d�|�=�|�����|�j��s"|�j � |�j��|�jd�ur�|�j�d���|�j�r|��d���n|�j�r"|�j�tj��d�S�)NzData should not be emptyr��)r����r����r����rO���rK���rJ���rj���rk���ri���r����r����r����r����r����r��r�����_maybe_resume_protocolr����r����r����r�����shutdownrA����SHUT_WR)r$���r����rf���r���r���r���r�����s4���� " z%_SelectorSocketTransport._write_readyc�����������������C���s.���|�j�s|�jrd�S�d|�_|�js*|�j�tj��d�S�r����)r����r����r����r����r��rA���r��r;���r���r���r���� write_eof���s ����z"_SelectorSocketTransport.write_eofc�����������������C���s���dS�r����r���r;���r���r���r���� can_write_eof���s����z&_SelectorSocketTransport.can_write_eofc��������������������s*���t����|��|�jd�ur&|�j�td���d�S�)NzConnection is closed by peer)r���r����r��r�����ConnectionErrorr����r%���r���r���r�������s ���� �z._SelectorSocketTransport._call_connection_lostc�����������������C���s6���|�j�d�urtd��|�j���|�_�|�js0|�j��d���|�j�S�)NzEmpty waiter is already set)r��r7���r����rh���r����r����r;���r���r���r���r�������s���� z+_SelectorSocketTransport._make_empty_waiterc�����������������C���s ���d�|�_�d�S�r)���)r��r;���r���r���r���r�������s����z,_SelectorSocketTransport._reset_empty_waiter)NNN)r���r����r����Z_start_tls_compatibler���Z _SendfileModeZ TRY_NATIVEZ_sendfile_compatibler���r����r����r����r����r��r��r��r ��r��r��r��r��r����r����r����r����r���r���r%���r���r*������s(������%'r*���c�����������������������sF���e�Zd�ZejZd��fdd� Zdd��Zdd��Zd dd �Z d d��Z ���ZS�)r4���Nc��������������������s^���t����||||��||�_|�j�|�jj|���|�j�|�j|�j|�j ��|d�urZ|�j�t j|d���d�S�r)���)r���r����_addressr����r����r����r��rD���r����r��r���r��)r$���r����r+���r,���r5���r-���r'���r%���r���r���r������s���� � �z#_SelectorDatagramTransport.__init__c�����������������C���s���t�dd��|�jD���S�)Nc�����������������s���s���|�]\}}t�|�V��qd�S�r)���)r����)�.0rG���rc���r���r���r���� <genexpr>��������zC_SelectorDatagramTransport.get_write_buffer_size.<locals>.<genexpr>)�sumr����r;���r���r���r���r�������s����z0_SelectorDatagramTransport.get_write_buffer_sizec�������������� ���C���s����|�j�r d�S�z|�j�|�j�\}}W�n��ttfy6���Y�n��tyd�}�z|�j�|��W�Y�d�}~n\d�}~0��t t fyz�����Y�n>�ty��}�z|��|d��W�Y�d�}~nd�}~0�0�|�j� ||��d�S�)Nz&Fatal read error on datagram transport)r����r�����recvfromr����rK���rJ���rP���r�����error_receivedrj���rk���ri���r����Zdatagram_received�r$���rG���re���rf���r���r���r���r�����s���� "z&_SelectorDatagramTransport._read_readyc�������������� ���C���s���t�|tttf�s$tdt|�j����|s,d�S�|�jrV|d�|�jfvrPtd|�j�����|�j}|�j r�|�jr�|�j t jkrxt� d��|��j d7��_ d�S�|�j�sdz,|�jd�r�|�j�|��n|�j�||��W�d�S��ttfy����|�j�|�j|�j��Y�n~�t�y�}�z|�j�|��W�Y�d�}~d�S�d�}~0��ttf�y0�����Y�n4�t�yb�}�z|��|d��W�Y�d�}~d�S�d�}~0�0�|�j� t|�|f��|��!���d�S�)Nr ��z!Invalid address: must be None or r��r���r[����'Fatal write error on datagram transport)"rm���r ��r����r����rp���r����r���r��rq���r����r���r��r���r��r����r����r����rO����sendtorK���rJ���r����r����r����� _sendto_readyrP���r����r ��rj���rk���ri���r����r����r��r!��r���r���r���r#����sJ����� � �z!_SelectorDatagramTransport.sendtoc�������������� ���C���s��|�j�r�|�j����\}}z*|�jd�r.|�j�|��n|�j�||��W�q��ttfyh���|�j��||f��Y�q�Y�q��t y��}�z|�j �|��W�Y�d�}~d�S�d�}~0��tt fy������Y�q��ty��}�z|��|d��W�Y�d�}~d�S�d�}~0�0�q�|�����|�j��s|�j�|�j��|�j�r|��d���d�S�)Nr[���r"��)r�����popleftr����r����rO���r#��rK���rJ���� appendleftrP���r����r ��rj���rk���ri���r����r��r����r����r����r����r����r!��r���r���r���r$��0��s0���� �z(_SelectorDatagramTransport._sendto_ready)NNN)N)r���r����r�����collections�dequer����r���r����r��r#��r$��r����r���r���r%���r���r4������s������ +r4���)r�����__all__r'��r_���r����r���rA���r����r!���Zssl�ImportError��r���r���r���r���r���r ���r ���r����logr���r���Z BaseEventLoopr���Z_FlowControlMixinZ Transportr����r*���r4���r���r���r���r����<module>���sD��� ����<���o