Edit File: selector_events.cpython-37.opt-1.pyc
B ����l}�c$�������������������@���s"��d�Z�dZddlZddlZddlZddlZddlZddlZddlZyddl Z W�n�e k rd���dZ Y�nX�ddlmZ�ddlm Z �ddlmZ�ddlmZ�dd lmZ�dd lmZ�ddlmZ�ddlmZ�d d��Zdd��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)�loggerc�������������C���s6���y|���|�}W�n�tk r"���dS�X�t|j|@��S�d�S�)NF)�get_key�KeyError�boolr���)�selector�fdZevent�key��r����</opt/alt/python37/lib64/python3.7/asyncio/selector_events.py�_test_selector_event���s ����r���c�������������C���s ���t�d�k rt|�t�j�rtd��d�S�)Nz"Socket cannot be of type SSLSocket)�ssl� isinstanceZ SSLSocket� TypeError)�sockr���r���r����_check_ssl_socket*���s����r���c�������������������s���e�Zd�ZdZdQ��fdd� ZdRddd�dd�ZdSddddejd �d d�ZdTdd �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��Zd5d6��Zd7d8��Zd9d:��Zd;d<��Z d=d>��Z!d?d@��Z"dAdB��Z#dCdD��Z$dEdF��Z%dGdH��Z&dIdJ��Z'dKdL��Z(dMdN��Z)dOdP��Z*���Z+S�)Ur���zJSelector event loop. See events.EventLoop for API specification. Nc����������������sF���t�������|d�krt���}t�d|jj��||�_|�� ���t ���|�_d�S�)NzUsing selector: %s) �super�__init__� selectorsZDefaultSelectorr����debug� __class__�__name__� _selector�_make_self_pipe�weakrefZWeakValueDictionary�_transports)�selfr���)r���r���r���r���5���s���� zBaseSelectorEventLoop.__init__)�extra�serverc������������C���s���t�|�|||||�S�)N)�_SelectorSocketTransport)r$���r����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)r-���)r%���r&���)r ���ZSSLProtocolr'���Z_app_transport)r$���Zrawsockr(���� sslcontextr)���r+���r,���r%���r&���r-���Zssl_protocolr���r���r����_make_ssl_transportD���s���� z)BaseSelectorEventLoop._make_ssl_transportc�������������C���s���t�|�|||||�S�)N)�_SelectorDatagramTransport)r$���r���r(����addressr)���r%���r���r���r����_make_datagram_transportQ���s����z.BaseSelectorEventLoop._make_datagram_transportc����������������sL���|�����rtd��|����rd�S�|�����t������|�jd�k rH|�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���r6���V���s���� zBaseSelectorEventLoop.closec�������������C���sB���|���|�j�����|�j����d�|�_|�j����d�|�_|��jd8��_d�S�)Nr���)�_remove_reader�_ssock�filenor6����_csock� _internal_fds)r$���r���r���r���r5���a���s���� z&BaseSelectorEventLoop._close_self_pipec�������������C���sN���t����\|�_|�_|�j�d��|�j�d��|��jd7��_|��|�j���|�j��d�S�)NFr���) �socketZ socketpairr8���r:����setblockingr;����_add_readerr9����_read_from_self)r$���r���r���r���r!���i���s ����z%BaseSelectorEventLoop._make_self_pipec�������������C���s���d�S�)Nr���)r$����datar���r���r����_process_self_dataq���s����z(BaseSelectorEventLoop._process_self_datac�������������C���sV���xPy |�j��d�}|sP�|��|��W�q�tk r8���wY�q�tk rL���P�Y�qX�qW�d�S�)Ni���)r8����recvrA����InterruptedError�BlockingIOError)r$���r@���r���r���r���r?���t���s����z%BaseSelectorEventLoop._read_from_selfc�������������C���sJ���|�j�}|d�k rFy|�d��W�n(�tk rD���|�jr@tjddd��Y�nX�d�S�)N�����z3Fail to write a null byte into the self-pipe socketT)�exc_info)r:����send�OSError�_debugr���r���)r$���Zcsockr���r���r����_write_to_self����s����z$BaseSelectorEventLoop._write_to_self�d���c���������� ���C���s"���|���|���|�j||||||��d�S�)N)r>���r9����_accept_connection)r$����protocol_factoryr���r.���r&����backlogr-���r���r���r����_start_serving����s���� z$BaseSelectorEventLoop._start_servingc������� ������C���s����x�t�|�D�]�}y0|���\}} |�jr4t�d|| |��|�d��W�n��tttfk rZ���d�S��t k r��} �z^| j t jt jt j t jfkr�|��d| |d���|��|�����|��tj|�j||||||��n��W�d�d�} ~ X�Y�qX�d| i}|��||||||�}|��|��qW�d�S�)Nz#%r got a new connection from %r: %rFz&socket.accept() out of system resource)�message� exceptionr<����peername)�range�acceptrI���r���r���r=���rD���rC����ConnectionAbortedErrorrH����errnoZEMFILEZENFILEZENOBUFSZENOMEM�call_exception_handlerr7���r9���Z call_laterr���ZACCEPT_RETRY_DELAYrO����_accept_connection2Zcreate_task) r$���rM���r���r.���r&���rN���r-����_�conn�addr�excr%���rT���r���r���r���rL�������s6���� z(BaseSelectorEventLoop._accept_connectionc���������� �������s����d�}d�}yl|��}|�����} |r8|�j|||| d|||d�}n|�j||| ||d�}y| I�d�H��W�n���|������Y�nX�W�n\�tk r��} �z>|�jr�d| d�}|d�k r�||d<�|d�k r�||d<�|��|��W�d�d�} ~ X�Y�nX�d�S�)NT)r)���r+���r%���r&���r-���)r)���r%���r&���z3Error on transport creation for incoming connection)rP���rQ���r(���� transport)� create_futurer/���r*���r6���� ExceptionrI���rW���)r$���rM���rZ���r%���r.���r&���r-���r(���r]���r)���r\����contextr���r���r���rX�������s6���� z)BaseSelectorEventLoop._accept_connection2c���������� ���C���s����|}t�|t�sJyt|����}W�n*�tttfk rH���td|���d��Y�nX�y|�j|�}W�n�tk rl���Y�nX�|���s�t d|�d|����d�S�)NzInvalid file object: zFile descriptor z is used by transport ) r����intr9����AttributeErrorr���� ValueErrorr#���r ���� is_closingr3���)r$���r���r9���r]���r���r���r����_ensure_fd_no_transport����s���� z-BaseSelectorEventLoop._ensure_fd_no_transportc������� ��� ���G���s����|������t�|||�d��}y|�j�|�}W�n*�tk rR���|�j�|tj|d�f��Y�n>X�|j|j �}\}}|�j� ||tjB�||f��|d�k r�|����d�S�)N)� _check_closedr����Handler ���r���r ����registerr���� EVENT_READr@����modify�cancel) r$���r����callback�args�handler����mask�reader�writerr���r���r���r>�������s���� z!BaseSelectorEventLoop._add_readerc�������������C���s����|�����rdS�y|�j�|�}W�n�tk r0���dS�X�|j|j�}\}}|tj�M�}|sb|�j�|��n|�j� ||d�|f��|d�k r�|� ���dS�dS�d�S�)NFT)r4���r ���r���r ���r���r@���r���ri���� unregisterrj���rk���)r$���r���r���ro���rp���rq���r���r���r���r7�����s����z$BaseSelectorEventLoop._remove_readerc������� ��� ���G���s����|������t�|||�d��}y|�j�|�}W�n*�tk rR���|�j�|tjd�|f��Y�n>X�|j|j �}\}}|�j� ||tjB�||f��|d�k r�|����d�S�)N)rf���r���rg���r ���r���r ���rh���r����EVENT_WRITEr@���rj���rk���) r$���r���rl���rm���rn���r���ro���rp���rq���r���r���r����_add_writer ��s���� z!BaseSelectorEventLoop._add_writerc�������������C���s����|�����rdS�y|�j�|�}W�n�tk r0���dS�X�|j|j�}\}}|tj�M�}|sb|�j�|��n|�j� |||df��|dk r�|� ���dS�dS�dS�)zRemove a writer callback.FNT)r4���r ���r���r ���r���r@���r���rs���rr���rj���rk���)r$���r���r���ro���rp���rq���r���r���r����_remove_writer/��s����z$BaseSelectorEventLoop._remove_writerc�������������G���s���|���|��|�j||f|���S�)zAdd a reader callback.)re���r>���)r$���r���rl���rm���r���r���r���� add_readerF��s���� z BaseSelectorEventLoop.add_readerc�������������C���s���|���|��|��|�S�)zRemove a reader callback.)re���r7���)r$���r���r���r���r���� remove_readerK��s���� z#BaseSelectorEventLoop.remove_readerc�������������G���s���|���|��|�j||f|���S�)zAdd a writer callback..)re���rt���)r$���r���rl���rm���r���r���r���� add_writerP��s���� z BaseSelectorEventLoop.add_writerc�������������C���s���|���|��|��|�S�)zRemove a writer callback.)re���ru���)r$���r���r���r���r���� remove_writerU��s���� z#BaseSelectorEventLoop.remove_writerc�����������������sD���t�|��|�jr"|���dkr"td��|����}|��|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���zthe socket must be non-blockingN)r���rI���� gettimeoutrc���r^���� _sock_recv)r$���r����n�futr���r���r���� sock_recvZ��s����zBaseSelectorEventLoop.sock_recvc�������������C���s����|d�k r|���|��|���rd�S�y|�|�}W�n`�ttfk rb���|���}|��||�j||||��Y�n6�tk r��}�z|� |��W�d�d�}~X�Y�nX�|� |��d�S�)N)rw���� cancelledrB���rD���rC���r9���rv���r{���r_���� set_exception� set_result)r$���r}���� registered_fdr���r|���r@���r���r\���r���r���r���r{���h��s���� z BaseSelectorEventLoop._sock_recvc�����������������sD���t�|��|�jr"|���dkr"td��|����}|��|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���zthe socket must be non-blockingN)r���rI���rz���rc���r^����_sock_recv_into)r$���r����bufr}���r���r���r����sock_recv_into}��s����z$BaseSelectorEventLoop.sock_recv_intoc�������������C���s����|d�k r|���|��|���rd�S�y|�|�}W�n`�ttfk rb���|���}|��||�j||||��Y�n6�tk r��}�z|� |��W�d�d�}~X�Y�nX�|� |��d�S�)N)rw���r���� recv_intorD���rC���r9���rv���r����r_���r����r����)r$���r}���r����r���r�����nbytesr���r\���r���r���r���r�������s���� z%BaseSelectorEventLoop._sock_recv_intoc�����������������sT���t�|��|�jr"|���dkr"td��|����}|r@|��|d||��n |�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���zthe socket must be non-blockingN)r���rI���rz���rc���r^���� _sock_sendallr����)r$���r���r@���r}���r���r���r����sock_sendall���s���� z"BaseSelectorEventLoop.sock_sendallc���������� ���C���s����|d�k r|���|��|���rd�S�y|�|�}W�nF�ttfk rH���d}Y�n,�tk rr�}�z|�|��d�S�d�}~X�Y�nX�|t|�kr�|�d���n.|r�||d���}|� ��}|�� ||�j||||��d�S�)Nr���)ry���r���rG���rD���rC���r_���r�����lenr����r9���rx���r����)r$���r}���r����r���r@���r|���r\���r���r���r���r���r�������s"���� z#BaseSelectorEventLoop._sock_sendallc�����������������s����t�|��|�jr"|���dkr"td��ttd�r8|jtjkrf|�j||j|j |�d�I�dH�}|d�\}}}}}|�� ��}|��|||��|I�dH�S�)zTConnect to a remote socket at address. This method is a coroutine. r���zthe socket must be non-blocking�AF_UNIX)�family�proto�loopN)r���rI���rz���rc����hasattrr<���r����r����Z_ensure_resolvedr����r^���� _sock_connect)r$���r���r1���ZresolvedrY���r}���r���r���r����sock_connect���s����z"BaseSelectorEventLoop.sock_connectc���������� ���C���s����|����}y|�|��W�nj�ttfk rV���|�t�|�j|���|��||�j |||��Y�n6�t k r��}�z|�|��W�d�d�}~X�Y�nX�|�d���d�S�)N) r9���ZconnectrD���rC���Zadd_done_callback� functools�partial�_sock_connect_donerx����_sock_connect_cbr_���r����r����)r$���r}���r���r1���r���r\���r���r���r���r�������s����z#BaseSelectorEventLoop._sock_connectc�������������C���s���|���|��d�S�)N)ry���)r$���r���r}���r���r���r���r�������s����z(BaseSelectorEventLoop._sock_connect_donec���������� ���C���s����|����rd�S�y,|�tjtj�}|dkr6t|d|�����W�nB�ttfk rP���Y�n6�tk rz�}�z|� |��W�d�d�}~X�Y�nX�|� d���d�S�)Nr���zConnect call failed )r���Z getsockoptr<���Z SOL_SOCKETZSO_ERRORrH���rD���rC���r_���r����r����)r$���r}���r���r1����errr\���r���r���r���r�������s����z&BaseSelectorEventLoop._sock_connect_cbc�����������������sB���t�|��|�jr"|���dkr"td��|����}|��|d|��|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���zthe socket must be non-blockingFN)r���rI���rz���rc���r^����_sock_accept)r$���r���r}���r���r���r����sock_accept���s����z!BaseSelectorEventLoop.sock_acceptc���������� ���C���s����|����}|r|��|��|���r"d�S�y|���\}}|�d��W�nV�ttfk rh���|��||�j|d|��Y�n:�t k r��}�z|� |��W�d�d�}~X�Y�nX�|�||f��d�S�)NFT)r9���rw���r���rT���r=���rD���rC���rv���r����r_���r����r����)r$���r}���Z registeredr���r���rZ���r1���r\���r���r���r���r������s���� z"BaseSelectorEventLoop._sock_acceptc���������� �������sl���|�j�|j=�|���}|����|���I�d�H��z|�j|j|||dd�I�d�H�S�|����|rZ|����||�j�|j<�X�d�S�)NF)Zfallback) 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_native��s���� z&BaseSelectorEventLoop._sendfile_nativec�������������C���s����x~|D�]v\}}|j�|j�}\}}|tj@�rN|d�k rN|jrD|��|��n |��|��|tj@�r|d�k r|jrr|��|��q|��|��qW�d�S�)N) �fileobjr@���r���ri���Z _cancelledr7���Z _add_callbackrs���ru���)r$���Z event_listr���ro���r����rp���rq���r���r���r����_process_events-��s���� z%BaseSelectorEventLoop._process_eventsc�������������C���s���|���|�����|����d�S�)N)r7���r9���r6���)r$���r���r���r���r���� _stop_serving;��s����z#BaseSelectorEventLoop._stop_serving)N)N)N)NNN),r���� __module__�__qualname__�__doc__r���r*���r���ZSSL_HANDSHAKE_TIMEOUTr/���r2���r6���r5���r!���rA���r?���rJ���rO���rL���rX���re���r>���r7���rt���ru���rv���rw���rx���ry���r~���r{���r����r����r����r����r����r����r����r����r����r����r����r����r����� __classcell__r���r���)r���r���r���/���sZ��� +$ r���c�������������������s����e�Zd�ZdZeZdZd��fdd� Zdd��Zdd��Z d d ��Z dd��Zd d��Zdd��Z dd��Zddd�Zdd��Zdd��Zdd��Zdd��Z���ZS�) �_SelectorTransporti���Nc����������������s����t����||��||�jd<�y|���|�jd<�W�n�tk rH���d�|�jd<�Y�nX�d|�jkr�y|���|�jd<�W�n �tjk r����d�|�jd<�Y�nX�||�_|� ��|�_ d|�_|��|��||�_ |����|�_d|�_d|�_|�j d�k r�|�j ����|�|j|�j <�d�S�)Nr<���ZsocknamerR���Fr���)r���r����_extraZgetsocknamerH���Zgetpeernamer<����errorr����r9���r�����_protocol_connected�set_protocol�_server�_buffer_factory�_buffer� _conn_lost�_closingZ_attachr#���)r$���r����r���r(���r%���r&���)r���r���r���r���L��s,���� z_SelectorTransport.__init__c�������������C���s����|�j�jg}|�jd�kr |�d��n|�jr0|�d��|�d|�j�����|�jd�k r�|�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�����_loopr4���r���r ���r���ri���rs����get_write_buffer_size�format�join)r$����infor�����state�bufsizer���r���r����__repr__f��s*���� z_SelectorTransport.__repr__c�������������C���s���|���d���d�S�)N)�_force_close)r$���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�)N)r����)r$���r���r���r����get_protocol���s����z_SelectorTransport.get_protocolc�������������C���s���|�j�S�)N)r����)r$���r���r���r���rd������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����r7���r����r����r����ru���� call_soon�_call_connection_lost)r$���r���r���r���r6������s����z_SelectorTransport.closec�������������C���s.���|�j�d�k r*tjd|���t|�d��|�j�����d�S�)Nzunclosed transport )�source)r�����warnings�warn�ResourceWarningr6���)r$���r���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: %sT)rF���)rP���rQ���r]���r(���) r���rH���r����� get_debugr���r���rW���r����r����)r$���r\���rP���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�)NTr���) r����r�����clearr����ru���r����r����r7���r����r����)r$���r\���r���r���r���r�������s���� z_SelectorTransport._force_closec�������������C���sV���z|�j�r|�j�|��W�d�|�j����d�|�_d�|�_d�|�_|�j}|d�k rP|����d�|�_X�d�S�)N)r����r����Zconnection_lostr����r6���r����r����Z_detach)r$���r\���r&���r���r���r���r�������s���� z(_SelectorTransport._call_connection_lostc�������������C���s ���t�|�j�S�)N)r����r����)r$���r���r���r���r�������s����z(_SelectorTransport.get_write_buffer_sizec�������������G���s"���|�j�r d�S�|�jj||f|����d�S�)N)r����r����r>���)r$���r���rl���rm���r���r���r���r>������s����z_SelectorTransport._add_reader)NN)r����)r���r����r�����max_size� bytearrayr����r����r���r����r����r����r����rd���r6���r����r����r����r����r����r>���r����r���r���)r���r���r����@��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�k rz|�j � tj|d���d�S�)NF)�_read_ready_cbr���r����_eof�_paused� _empty_waiterr���Z_set_nodelayr����r����r����r�����connection_mader>���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�)N)r���r���ZBufferedProtocol�_read_ready__get_bufferr�����_read_ready__data_receivedr���r����)r$���r(���)r���r���r���r�������s���� z%_SelectorSocketTransport.set_protocolc�������������C���s���|�j��o|�j�S�)N)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����r7���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����r>���r����r����r����r����r���r���)r$���r���r���r���r�������s���� z'_SelectorSocketTransport.resume_readingc�������������C���s���|������d�S�)N)r����)r$���r���r���r���r������s����z$_SelectorSocketTransport._read_readyc���������� ���C���s��|�j�r d�S�y |�j�d�}t|�s(td��W�n.�tk rX�}�z|��|d��d�S�d�}~X�Y�nX�y|�j�|�}W�nD�t t fk r����d�S��tk r��}�z|��|d��d�S�d�}~X�Y�nX�|s�|�����d�S�y|�j�|��W�n0�tk �r��}�z|��|d��W�d�d�}~X�Y�nX�d�S�)N���z%get_buffer() returned an empty bufferz/Fatal error: protocol.get_buffer() call failed.z$Fatal read error on socket transportz3Fatal error: protocol.buffer_updated() call failed.) r����r����Z get_bufferr����r3���r_���r����r����r����rD���rC����_read_ready__on_eofZbuffer_updated)r$���r����r\���r����r���r���r���r������s2����z0_SelectorSocketTransport._read_ready__get_bufferc���������� ���C���s����|�j�r d�S�y|�j�|�j�}W�nD�ttfk r4���d�S��tk r`�}�z|��|d��d�S�d�}~X�Y�nX�|sr|�����d�S�y|�j � |��W�n.�tk r��}�z|��|d��W�d�d�}~X�Y�nX�d�S�)Nz$Fatal read error on socket transportz2Fatal error: protocol.data_received() call failed.)r����r����rB���r����rD���rC���r_���r����r����r����Z data_received)r$���r@���r\���r���r���r���r����*��s"����z3_SelectorSocketTransport._read_ready__data_receivedc���������� ���C���st���|�j����rt�d|���y|�j���}W�n.�tk rR�}�z|��|d��d�S�d�}~X�Y�nX�|rh|�j��|�j ��n|�� ���d�S�)Nz%r received EOFz1Fatal error: protocol.eof_received() call failed.)r����r����r���r���r����Zeof_receivedr_���r����r7���r����r6���)r$���Z keep_openr\���r���r���r���r����?��s���� z,_SelectorSocketTransport._read_ready__on_eofc���������� ���C���s��t�|tttf�s$tdt|�j����|�jr2td��|�j d�k rDtd��|sLd�S�|�j rz|�j tjkrht �d��|��j d7��_ d�S�|�j��s�y|�j�|�}W�nD�ttfk r����Y�nB�tk r��}�z|��|d��d�S�d�}~X�Y�nX�||d���}|s�d�S�|�j�|�j|�j��|�j�|��|�����d�S�)Nz/data argument must be a bytes-like object, not z%Cannot call write() after write_eof()z(unable to write; sendfile is in progresszsocket.send() raised exception.r���z%Fatal write error on socket transport)r����bytesr����� memoryviewr����typer���r����r3���r����r����r����!LOG_THRESHOLD_FOR_CONNLOST_WRITESr����warningr����r����rG���rD���rC���r_���r����r����rt���r�����_write_ready�extend�_maybe_pause_protocol)r$���r@���r|���r\���r���r���r����writeR��s6���� z_SelectorSocketTransport.writec���������� ���C���s����|�j�r d�S�y|�j�|�j�}W�nr�ttfk r4���Y�n��tk r��}�z>|�j�|�j ��|�j� ���|��|d��|�jd�k r~|�j� |��W�d�d�}~X�Y�njX�|r�|�jd�|�=�|�����|�js�|�j�|�j ��|�jd�k r�|�j�d���|�jr�|��d���n|�jr�|�j�tj��d�S�)Nz%Fatal write error on socket transport)r����r����rG���r����rD���rC���r_���r����ru���r����r����r����r����r�����_maybe_resume_protocolr����r����r����r�����shutdownr<����SHUT_WR)r$���r|���r\���r���r���r���r����w��s.���� z%_SelectorSocketTransport._write_readyc�������������C���s.���|�j�s|�jrd�S�d|�_|�js*|�j�tj��d�S�)NT)r����r����r����r����r����r<���r����)r$���r���r���r���� write_eof���s ����z"_SelectorSocketTransport.write_eofc�������������C���s���dS�)NTr���)r$���r���r���r���� can_write_eof���s����z&_SelectorSocketTransport.can_write_eofc����������������s*���t����|��|�jd�k r&|�j�td���d�S�)NzConnection is closed by peer)r���r����r����r�����ConnectionError)r$���r\���)r���r���r���r�������s���� z._SelectorSocketTransport._call_connection_lostc�������������C���s6���|�j�d�k rtd��|�j���|�_�|�js0|�j��d���|�j�S�)NzEmpty waiter is already set)r����r3���r����r^���r����r����)r$���r���r���r���r�������s���� z+_SelectorSocketTransport._make_empty_waiterc�������������C���s ���d�|�_�d�S�)N)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�)r0���Nc����������������s^���t����||||��||�_|�j�|�jj|���|�j�|�j|�j|�j ��|d�k rZ|�j�t j|d���d�S�)N)r���r����_addressr����r����r����r����r>���r����r����r���r����)r$���r����r���r(���r1���r)���r%���)r���r���r���r������s���� z#_SelectorDatagramTransport.__init__c�������������C���s���t�dd��|�jD���S�)Nc�������������s���s���|�]\}}t�|�V��qd�S�)N)r����)�.0r@���rY���r���r���r���� <genexpr>���s����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�y|�j�|�j�\}}W�np�ttfk r8���Y�nh�tk rd�}�z|�j�|��W�d�d�}~X�Y�n<�t k r��}�z|�� |d��W�d�d�}~X�Y�nX�|�j�||��d�S�)Nz&Fatal read error on datagram transport)r����r����Zrecvfromr����rD���rC���rH���r�����error_receivedr_���r����Zdatagram_received)r$���r@���r[���r\���r���r���r���r�������s����z&_SelectorDatagramTransport._read_readyc���������� ���C���sd��t�|tttf�s$tdt|�j����|s,d�S�|�jrV|d�|�jfkrPtd|�j�����|�j}|�j r�|�jr�|�j t jkrxt� d��|��j d7��_ d�S�|�j�sDy*|�jd�r�|�j�|��n|�j�||��d�S��ttfk r����|�j�|�j|�j��Y�n^�tk �r�}�z|�j�|��d�S�d�}~X�Y�n0�tk �rB�}�z|��|d��d�S�d�}~X�Y�nX�|�j�t|�|f��|�����d�S�)Nz/data argument must be a bytes-like object, not z!Invalid address: must be None or zsocket.send() raised exception.r���rR���z'Fatal write error on datagram transport) r���r����r����r����r���r����r���r����rc���r����r���r����r���r����r����r����r����rG����sendtorD���rC���r����rt���r����� _sendto_readyrH���r����r����r_���r����r����r����)r$���r@���r[���r\���r���r���r���r�������s>���� z!_SelectorDatagramTransport.sendtoc���������� ���C���s����x�|�j�r�|�j����\}}y*|�jd�r0|�j�|��n|�j�||��W�q�ttfk rj���|�j��||f��P�Y�q�t k r��}�z|�j �|��d�S�d�}~X�Y�q�tk r��}�z|�� |d��d�S�d�}~X�Y�qX�qW�|�����|�j�s�|�j�|�j��|�jr�|��d���d�S�)NrR���z'Fatal write error on datagram transport)r�����popleftr����r����rG���r����rD���rC���� appendleftrH���r����r����r_���r����r����r����ru���r����r����r����)r$���r@���r[���r\���r���r���r���r�������s*���� z(_SelectorDatagramTransport._sendto_ready)NNN)N)r���r����r�����collections�dequer����r���r����r����r����r����r����r���r���)r���r���r0������s���� )r0���)r�����__all__r����rV���r����r���r<���r����r"���r����ImportError��r���r���r���r���r���r ���r ����logr���r���r���Z BaseEventLoopr���Z_FlowControlMixinZ Transportr����r'���r0���r���r���r���r����<module>���sB��� ������_