Edit File: selector_events.cpython-36.opt-2.pyc
3 � \����������������� ���@���s8��d�gZ�ddlZddlZddlZddlZddlZddlZyddlZW�n�ek rZ���dZY�nX�ddl m Z �ddl mZ�ddl mZ�ddl m Z �ddl mZ�dd l mZ�dd l mZ�ddl mZ�ddlmZ�dd lmZ�dd��ZG�dd���d�e j�ZG�dd��dejej�ZG�dd��de�ZG�dd��de�ZG�dd��de�ZdS�)�BaseSelectorEventLoop�����N����)�base_events)�compat)� constants)�events)�futures)� selectors)� transports)�sslproto)� coroutine)�loggerc�������������C���s6���y|�j�|�}W�n�tk r"���dS�X�t|j|@��S�d�S�)NF)�get_key�KeyError�boolr���)�selector�fdZevent�key��r����//usr/lib64/python3.6/asyncio/selector_events.py�_test_selector_event ���s ����r���c�������������������sn��e�Zd�ZdN��fdd� ZdOddd�dd�ZdPddddd�d d �Zddddd�dd�ZdQd d�Z��fdd�Zdd��Z dd��Z dd��Zdd��Zdd��Z dd��ZdRdd�ZdSd d!�ZedTd"d#��Zd$d%��Zd&d'��Zd(d)��Zd*d+��Zd,d-��Zd.d/��Zd0d1��Zd2d3��Zd4d5��Zd6d7��Zd8d9��Zd:d;��Zd<d=��Zed>d?���Z d@dA��Z!dBdC��Z"dDdE��Z#dFdG��Z$dHdI��Z%dJdK��Z&dLdM��Z'���Z(S�)Ur���Nc����������������sF���t���j���|d�krtj��}tjd|jj��||�_|�j ���t j��|�_d�S�)NzUsing selector: %s) �super�__init__r ���ZDefaultSelectorr ����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#���c������ ��� ���C���sN���t�j��s"|�j||||||||d�S�t�j|�|||||�} t|�|| ||d��| jS�)N)r)���r*���r"���r#���)r"���r#���)r���Z_is_sslproto_available�_make_legacy_ssl_transportZSSLProtocolr$���Z_app_transport) r!����rawsockr&���� sslcontextr'���r)���r*���r"���r#���Zssl_protocolr���r���r����_make_ssl_transport@���s���� z)BaseSelectorEventLoop._make_ssl_transportc������ ��� ���C���s���t�|�||||||||� S�)N)�_SelectorSslTransport) r!���r,���r&���r-���r'���r)���r*���r"���r#���r���r���r���r+���O���s���� z0BaseSelectorEventLoop._make_legacy_ssl_transportc�������������C���s���t�|�|||||�S�)N)�_SelectorDatagramTransport)r!���r%���r&����addressr'���r"���r���r���r����_make_datagram_transportY���s����z.BaseSelectorEventLoop._make_datagram_transportc����������������sL���|�j���rtd��|�j��rd�S�|�j���t��j���|�jd�k rH|�jj���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���^���s���� zBaseSelectorEventLoop.closec�������������C���s���t��d�S�)N)�NotImplementedError)r!���r���r���r����_socketpairi���s����z!BaseSelectorEventLoop._socketpairc�������������C���sB���|�j�|�jj����|�jj���d�|�_|�jj���d�|�_|��jd8��_d�S�)Nr���)�_remove_reader�_ssock�filenor6����_csock� _internal_fds)r!���r���r���r���r5���l���s���� z&BaseSelectorEventLoop._close_self_pipec�������������C���sN���|�j���\|�_|�_|�jjd��|�jjd��|��jd7��_|�j|�jj��|�j��d�S�)NFr���)r8���r:���r<����setblockingr=����_add_readerr;����_read_from_self)r!���r���r���r���r���t���s ����z%BaseSelectorEventLoop._make_self_pipec�������������C���s���d�S�)Nr���)r!����datar���r���r����_process_self_data|���s����z(BaseSelectorEventLoop._process_self_datac�������������C���sV���xPy |�j�jd�}|sP�|�j|��W�q�tk r8���wY�q�tk rL���P�Y�qX�qW�d�S�)Ni���)r:����recvrB����InterruptedError�BlockingIOError)r!���rA���r���r���r���r@������s����z%BaseSelectorEventLoop._read_from_selfc�������������C���sJ���|�j�}|d�k rFy|jd��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�|j��|�j|||||��d�S�)N)r?���r;����_accept_connection)r!����protocol_factoryr%���r-���r#����backlogr���r���r����_start_serving����s����z$BaseSelectorEventLoop._start_servingc�������������C���s����x�t�|�D�]�}y0|j��\}}|�jr2tjd|||��|jd��W�n��tttfk rX���d�S��t k r��} �z^| j t jt jt j t jfkr�|�jd| |d���|�j|j����|�jtj|�j|||||��n��W�Y�d�d�} ~ X�q X�d|i} |�j||| ||�}|�j|��q W�d�S�)Nz#%r got a new connection from %r: %rFz&socket.accept() out of system resource)�message� exception�socket�peername)�range�acceptrJ���r ���r���r>���rE���rD����ConnectionAbortedErrorrI����errnoZEMFILEZENFILEZENOBUFSZENOMEM�call_exception_handlerr9���r;���Z call_laterr���ZACCEPT_RETRY_DELAYrP����_accept_connection2Zcreate_task)r!���rN���r%���r-���r#���rO����_�conn�addr�excr"���rV���r���r���r���rM�������s4���� z(BaseSelectorEventLoop._accept_connectionc�������������c���s����d�}d�}yj|��}|�j���}|r6|�j||||d||d�}n|�j|||||d�}y|E�d�H��W�n���|j�����Y�nX�W�n\�tk r��} �z@|�jr�d| d�} |d�k r�|| d<�|d�k r�|| d<�|�j| ��W�Y�d�d�} ~ X�nX�d�S�)NT)r'���r)���r"���r#���)r'���r"���r#���z3Error on transport creation for incoming connection)rQ���rR���r&���� transport)� create_futurer.���r(���r6���� ExceptionrJ���rY���)r!���rN���r\���r"���r-���r#���r&���r_���r'���r^����contextr���r���r���rZ�������s4����z)BaseSelectorEventLoop._accept_connection2c�������������C���s@���y|�j�|�}W�n�tk r"���Y�nX�|j��s<tdj||���d�S�)Nz.File descriptor {!r} is used by transport {!r})r ���r���� is_closingr3����format)r!���r���r_���r���r���r����_ensure_fd_no_transport����s����z-BaseSelectorEventLoop._ensure_fd_no_transportc������� ��� ���G���s����|�j����tj|||��}y|�jj|�}W�n*�tk rP���|�jj|tj|d�f��Y�n>X�|j|j �}\}}|�jj ||tjB�||f��|d�k r�|j���d�S�)N)� _check_closedr����Handler���r���r����registerr ���� EVENT_READrA����modify�cancel) r!���r����callback�args�handler����mask�reader�writerr���r���r���r?�������s���� z!BaseSelectorEventLoop._add_readerc���������� ���C���s����|�j���rdS�y|�jj|�}W�n�tk r0���dS�X�|j|j�}\}}|tj�M�}|sb|�jj|��n|�jj ||d�|f��|d�k r�|j ���dS�dS�d�S�)NFT)r4���r���r���r���r���rA���r ���ri���� unregisterrj���rk���)r!���r���r���ro���rp���rq���r���r���r���r9�����s����z$BaseSelectorEventLoop._remove_readerc������� ��� ���G���s����|�j����tj|||��}y|�jj|�}W�n*�tk rP���|�jj|tjd�|f��Y�n>X�|j|j �}\}}|�jj ||tjB�||f��|d�k r�|j���d�S�)N)rf���r���rg���r���r���r���rh���r ����EVENT_WRITErA���rj���rk���) r!���r���rl���rm���rn���r���ro���rp���rq���r���r���r����_add_writer��s���� z!BaseSelectorEventLoop._add_writerc���������� ���C���s����|�j���rdS�y|�jj|�}W�n�tk r0���dS�X�|j|j�}\}}|tj�M�}|sb|�jj|��n|�jj |||d�f��|d�k r�|j ���dS�dS�d�S�)NFT)r4���r���r���r���r���rA���r ���rs���rr���rj���rk���)r!���r���r���ro���rp���rq���r���r���r����_remove_writer,��s����z$BaseSelectorEventLoop._remove_writerc�������������G���s���|�j�|��|�j||f|���S�)N)re���r?���)r!���r���rl���rm���r���r���r���� add_readerC��s���� z BaseSelectorEventLoop.add_readerc�������������C���s���|�j�|��|�j|�S�)N)re���r9���)r!���r���r���r���r���� remove_readerH��s���� z#BaseSelectorEventLoop.remove_readerc�������������G���s���|�j�|��|�j||f|���S�)N)re���rt���)r!���r���rl���rm���r���r���r���� add_writerM��s���� z BaseSelectorEventLoop.add_writerc�������������C���s���|�j�|��|�j|�S�)N)re���ru���)r!���r���r���r���r���� remove_writerR��s���� z#BaseSelectorEventLoop.remove_writerc�������������C���s6���|�j�r|j��dkrtd��|�j��}|�j|d�||��|S�)Nr���zthe socket must be non-blocking)rJ���� gettimeout� ValueErrorr`���� _sock_recv)r!���r%����n�futr���r���r���� sock_recvW��s ���� zBaseSelectorEventLoop.sock_recvc�������������C���s����|d�k r|�j�|��|j��rd�S�y|j|�}W�n`�ttfk rb���|j��}|�j||�j||||��Y�n6�tk r��}�z|j |��W�Y�d�d�}~X�nX�|j |��d�S�)N)rw���� cancelledrC���rE���rD���r;���rv���r|���ra���� set_exception� set_result)r!���r~���� registered_fdr%���r}���rA���r���r^���r���r���r���r|���f��s���� z BaseSelectorEventLoop._sock_recvc�������������C���sF���|�j�r|j��dkrtd��|�j��}|r8|�j|d�||��n |jd���|S�)Nr���zthe socket must be non-blocking)rJ���rz���r{���r`���� _sock_sendallr����)r!���r%���rA���r~���r���r���r����sock_sendall{��s���� z"BaseSelectorEventLoop.sock_sendallc�������������C���s����|d�k r|�j�|��|j��rd�S�y|j|�}W�nD�ttfk rH���d}Y�n*�tk rp�}�z|j|��d�S�d�}~X�nX�|t|�kr�|jd���n.|r�||d���}|j ��}|�j ||�j||||��d�S�)Nr���)ry���r����rH���rE���rD���ra���r�����lenr����r;���rx���r����)r!���r~���r����r%���rA���r}���r^���r���r���r���r���r�������s"���� z#BaseSelectorEventLoop._sock_sendallc�������������c���s����|�j�r|j��dkrtd��ttd��s2|jtjkrptj||j|j |�d�}|j ��sZ|E�d�H��|j��d�\}}}}}|�j��}|�j |||��|E�d�H�S�)Nr���zthe socket must be non-blocking�AF_UNIX)�family�proto�loop)rJ���rz���r{����hasattrrS���r����r����r���Z_ensure_resolvedr�����done�resultr`���� _sock_connect)r!���r%���r1���Zresolvedr[���r~���r���r���r����sock_connect���s���� z"BaseSelectorEventLoop.sock_connectc�������������C���s����|j���}y|j|��W�nj�ttfk rV���|jtj|�j|���|�j||�j |||��Y�n6�t k r��}�z|j|��W�Y�d�d�}~X�nX�|jd���d�S�)N) r;���ZconnectrE���rD���Zadd_done_callback� functools�partial�_sock_connect_donerx����_sock_connect_cbra���r����r����)r!���r~���r%���r1���r���r^���r���r���r���r�������s����z#BaseSelectorEventLoop._sock_connectc�������������C���s���|�j�|��d�S�)N)ry���)r!���r���r~���r���r���r���r�������s����z(BaseSelectorEventLoop._sock_connect_donec�������������C���s����|j���rd�S�y,|jtjtj�}|dkr6t|d|f���W�nB�ttfk rP���Y�n6�tk rz�}�z|j |��W�Y�d�d�}~X�nX�|j d���d�S�)Nr���zConnect call failed %s)r����Z getsockoptrS���Z SOL_SOCKETZSO_ERRORrI���rE���rD���ra���r����r����)r!���r~���r%���r1����errr^���r���r���r���r�������s����z&BaseSelectorEventLoop._sock_connect_cbc�������������C���s4���|�j�r|j��dkrtd��|�j��}|�j|d|��|S�)Nr���zthe socket must be non-blockingF)rJ���rz���r{���r`����_sock_accept)r!���r%���r~���r���r���r����sock_accept���s ���� z!BaseSelectorEventLoop.sock_acceptc�������������C���s����|j���}|r|�j|��|j��r"d�S�y|j��\}}|jd��W�nV�ttfk rh���|�j||�j|d|��Y�n:�t k r��}�z|j |��W�Y�d�d�}~X�nX�|j||f��d�S�)NFT)r;���rw���r����rV���r>���rE���rD���rv���r����ra���r����r����)r!���r~���Z registeredr%���r���r\���r1���r^���r���r���r���r�������s���� z"BaseSelectorEventLoop._sock_acceptc�������������C���s����x~|D�]v\}}|j�|j�}\}}|tj@�rN|d�k rN|jrD|�j|��n |�j|��|tj@�r|d�k r|jrr|�j|��q|�j|��qW�d�S�)N) �fileobjrA���r ���ri���Z _cancelledr9���Z _add_callbackrs���ru���)r!���Z event_listr���ro���r����rp���rq���r���r���r����_process_events���s���� z%BaseSelectorEventLoop._process_eventsc�������������C���s���|�j�|j����|j���d�S�)N)r9���r;���r6���)r!���r%���r���r���r���� _stop_serving��s����z#BaseSelectorEventLoop._stop_serving)N)N)N)NNN)NNrL���)NNrL���)NN))r���� __module__�__qualname__r���r(���r.���r+���r2���r6���r8���r5���r���rB���r@���rK���rP���rM���r���rZ���re���r?���r9���rt���ru���rv���rw���rx���ry���r���r|���r����r����r����r����r����r����r����r����r����r����� __classcell__r���r���)r���r���r���+���sR��� (#c�������������������s����e�Zd�ZdZeZdZd ��fdd� Zdd��Zdd ��Z d d��Z dd ��Zdd��Zdd��Z ejr`dd��Zd!dd�Zdd��Zdd��Zdd��Zdd��Z���ZS�)"�_SelectorTransport����i���Nc����������������s����t���j||��||�jd<�|j��|�jd<�d|�jkrdy|j��|�jd<�W�n �tjk rb���d�|�jd<�Y�nX�||�_|j��|�_ ||�_ d|�_||�_|�j ��|�_d|�_d|�_|�jd�k r�|�jj���|�|j|�j <�d�S�)NrS���ZsocknamerT���Tr���F)r���r����_extraZgetsocknameZgetpeernamerS����error�_sockr;����_sock_fd� _protocol�_protocol_connected�_server�_buffer_factory�_buffer� _conn_lost�_closingZ_attachr ���)r!���r����r%���r&���r"���r#���)r���r���r���r�����s&���� z_SelectorTransport.__init__c�������������C���s����|�j�jg}|�jd�kr |jd��n|�jr0|jd��|jd|�j���|�jd�k r�|�jj���r�t|�jj |�jt j�}|rz|jd��n |jd��t|�jj |�jt j�}|r�d}nd}|�j ��}|jd||f���d d j|��S�)N�closed�closingzfd=%szread=pollingz read=idle�pollingZidlezwrite=<%s, bufsize=%s>z<%s>� )r���r���r�����appendr����r�����_loopr4���r���r���r ���ri���rs����get_write_buffer_size�join)r!����infor�����state�bufsizer���r���r����__repr__2��s*���� z_SelectorTransport.__repr__c�������������C���s���|�j�d���d�S�)N)�_force_close)r!���r���r���r����abortN��s����z_SelectorTransport.abortc�������������C���s ���||�_�d�S�)N)r����)r!���r&���r���r���r����set_protocolQ��s����z_SelectorTransport.set_protocolc�������������C���s���|�j�S�)N)r����)r!���r���r���r����get_protocolT��s����z_SelectorTransport.get_protocolc�������������C���s���|�j�S�)N)r����)r!���r���r���r���rc���W��s����z_SelectorTransport.is_closingc�������������C���sT���|�j�r d�S�d|�_�|�jj|�j��|�jsP|��jd7��_|�jj|�j��|�jj|�jd���d�S�)NTr���) r����r����r9���r����r����r����ru���� call_soon�_call_connection_lost)r!���r���r���r���r6���Z��s����z_SelectorTransport.closec�������������C���s,���|�j�d�k r(tjd|��t|�d��|�j�j���d�S�)Nzunclosed transport %r)�source)r�����warnings�warn�ResourceWarningr6���)r!���r���r���r����__del__h��s���� z_SelectorTransport.__del__�Fatal error on transportc�������������C���sP���t�|tj�r*|�jj��rBtjd|�|dd��n|�jj|||�|�jd���|�j |��d�S�)Nz%r: %sT)rG���)rQ���rR���r_���r&���) � isinstancer���Z_FATAL_ERROR_IGNOREr����� get_debugr ���r���rY���r����r����)r!���r^���rQ���r���r���r����_fatal_errorn��s���� z_SelectorTransport._fatal_errorc�������������C���sd���|�j�r d�S�|�jr(|�jj���|�jj|�j��|�jsBd|�_|�jj|�j��|��j�d7��_�|�jj|�j |��d�S�)NTr���) r����r�����clearr����ru���r����r����r9���r����r����)r!���r^���r���r���r���r����|��s���� z_SelectorTransport._force_closec�������������C���sV���z|�j�r|�jj|��W�d�|�jj���d�|�_d�|�_d�|�_|�j}|d�k rP|j���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_readeri���)NN)r����)r���r����r�����max_size� bytearrayr����r����r���r����r����r����r����rc���r6���r���ZPY34r����r����r����r����r����r?���r����r���r���)r���r���r������s"��� r����c�������������������sV���e�Zd�Zd��fdd� Zdd��Zdd��Zdd ��Zd d��Zdd ��Zdd��Z dd��Z ���ZS�)r$���Nc����������������sr���t���j|||||��d|�_d|�_tj|�j��|�jj|�j j |���|�jj|�j|�j|�j ��|d�k rn|�jjtj|d���d�S�)NF)r���r����_eof�_pausedr���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�������������C���s>���|�j�s|�jrd�S�d|�_|�jj|�j��|�jj��r:tjd|���d�S�)NTz%r pauses reading)r����r����r����r9���r����r����r ���r���)r!���r���r���r���� pause_reading���s���� z&_SelectorSocketTransport.pause_readingc�������������C���sB���|�j�s|�j�rd�S�d|�_|�j|�j|�j��|�jj��r>tjd|���d�S�)NFz%r resumes reading) r����r����r?���r����r����r����r����r ���r���)r!���r���r���r����resume_reading���s���� z'_SelectorSocketTransport.resume_readingc�������������C���s����|�j�r d�S�y|�jj|�j�}W�nD�ttfk r4���Y�n|�tk r`�}�z|�j|d��W�Y�d�d�}~X�nPX�|rt|�jj |��n<|�j j��r�tj d|���|�jj��}|r�|�j j|�j��n|�j���d�S�)Nz$Fatal read error on socket transportz%r received EOF)r����r����rC���r����rE���rD���ra���r����r����� data_receivedr����r����r ���r����eof_receivedr9���r����r6���)r!���rA���r^���� keep_openr���r���r���r�������s ���� z$_SelectorSocketTransport._read_readyc�������������C���s����t�|tttf�s"tdt|�j���|�jr0td��|s8d�S�|�j rf|�j t jkrTtj d��|��j d7��_ d�S�|�js�y|�jj|�}W�nB�ttfk r����Y�n@�tk r��}�z|�j|d��d�S�d�}~X�nX�||d���}|s�d�S�|�jj|�j|�j��|�jj|��|�j���d�S�)Nz1data argument must be a bytes-like object, not %rz%Cannot call write() after write_eof()zsocket.send() raised exception.r���z%Fatal write error on socket transport)r�����bytesr����� memoryview� TypeError�typer���r����r3���r����r����!LOG_THRESHOLD_FOR_CONNLOST_WRITESr ����warningr����r����rH���rE���rD���ra���r����r����rt���r�����_write_ready�extend�_maybe_pause_protocol)r!���rA���r}���r^���r���r���r����write���s4���� z_SelectorSocketTransport.writec�������������C���s����|�j�r d�S�y|�jj|�j�}W�n\�ttfk r4���Y�n��tk rx�}�z*|�jj|�j ��|�jj ���|�j|d��W�Y�d�d�}~X�nTX�|r�|�jd�|�=�|�j���|�js�|�jj|�j ��|�j r�|�jd���n|�jr�|�jjtj��d�S�)Nz%Fatal write error on socket transport)r����r����rH���r����rE���rD���ra���r����ru���r����r����r�����_maybe_resume_protocolr����r����r�����shutdownrS����SHUT_WR)r!���r}���r^���r���r���r���r������s&���� z%_SelectorSocketTransport._write_readyc�������������C���s.���|�j�s|�jrd�S�d|�_|�js*|�jjtj��d�S�)NT)r����r����r����r����r����rS���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_eof)NNN)r���r����r����r���r����r����r����r����r����r����r����r����r���r���)r���r���r$������s����#r$���c�������������������sd���e�Zd�ZeZd��fdd� Zddd�Zdd��Zd d ��Zdd��Z d d��Z dd��Zdd��Zdd��Z ���ZS�)r/���NFc ������� ���������s����t�d�krtd��|s tj||�}|dd�} |r<|�r<|| d<�|j|f| �}t��j||||| ��d|�_||�_||�_ ||�_ d|�_|�jj |d��|�jj��r�tjd|���|�jj��}nd�}|�j|��d�S�)Nzstdlib ssl module not availableF)r)���Zdo_handshake_on_connectr*���)r-���z%r starts SSL handshake)�sslr3���r���Z_create_transport_contextZwrap_socketr���r���r�����_server_hostname�_waiter�_sslcontextr����r�����updater����r����r ���r����time� _on_handshake) r!���r����r,���r&���r-���r'���r)���r*���r"���r#���Zwrap_kwargsZsslsock� start_time)r���r���r���r���(��s*���� z_SelectorSslTransport.__init__c�������������C���sD���|�j�d�krd�S�|�j�j��s:|d�k r.|�j�j|��n|�j�jd���d�|�_�d�S�)N)r����r����r����r����)r!���r^���r���r���r����_wakeup_waiterL��s���� z$_SelectorSslTransport._wakeup_waiterc����������"���C���s$��y|�j�j���W�n��tjk r8���|�jj|�j|�j|��d�S��tjk r`���|�jj |�j|�j|��d�S��t k r��}�z`|�jj��r�tj d|�dd��|�jj|�j��|�jj|�j��|�j�j���|�j|��t|t�r�d�S���W�Y�d�d�}~X�nX�|�jj|�j��|�jj|�j��|�j�j��}t|�jd��s�|�j�r�|�jjtjk�r�ytj||�j��W�nR�tk �r��}�z4|�jj���rjtj d|�dd��|�j�j���|�j|��d�S�d�}~X�nX�|�jj||�j�j��|�j�j��|�j�d��d|�_d|�_ |�jj|�j|�j!��d|�_"|�jj#|�j$j%|���|�jj#|�j��|�jj���r |�jj&��|�}tj'd|�|d ���d�S�) Nz%r: SSL handshake failedT)rG���Zcheck_hostnamez1%r: SSL handshake failed on matching the hostname)�peercert�cipher�compressionZ ssl_objectFz%r: SSL handshake took %.1f msg�����@�@)(r����Zdo_handshaker�����SSLWantReadErrorr����r?���r����r�����SSLWantWriteErrorrt���� BaseExceptionr����r ���r����r9���ru���r6���r����r����ra���Zgetpeercertr����r����r����Zverify_modeZ CERT_NONEZmatch_hostnamer����r����r����r�����_read_wants_write�_write_wants_readr����r����r����r����r����r����r���)r!���r����r^���r����Zdtr���r���r���r����V��sb���� z#_SelectorSslTransport._on_handshakec�������������C���sJ���|�j�rtd��|�jrtd��d|�_|�jj|�j��|�jj��rFtjd|���d�S�)Nz#Cannot pause_reading() when closingzAlready pausedTz%r pauses reading) r����r3���r����r����r9���r����r����r ���r���)r!���r���r���r���r�������s���� z#_SelectorSslTransport.pause_readingc�������������C���sJ���|�j�std��d|�_�|�jrd�S�|�jj|�j|�j��|�jj��rFtj d|���d�S�)Nz Not pausedFz%r resumes reading) r����r3���r����r����r?���r����r����r����r ���r���)r!���r���r���r���r�������s���� z$_SelectorSslTransport.resume_readingc�������������C���s"��|�j�r d�S�|�jr6d|�_|�j���|�jr6|�jj|�j|�j��y|�jj|�j �}W�n��t ttj fk rd���Y�n��tjk r����d|�_|�jj|�j��|�jj|�j|�j��Y�n��tk r��}�z|�j|d��W�Y�d�d�}~X�nTX�|r�|�jj|��n@z4|�jj��r�tjd|���|�jj��}|�rtjd��W�d�|�j���X�d�S�)NFTz!Fatal read error on SSL transportz%r received EOFz?returning true from eof_received() has no effect when using ssl)r����r����r����r����r����rt���r����r����rC���r����rE���rD���r����r����r����r����r9���ra���r����r����r����r����r ���r���r����r����r6���)r!���rA���r^���r����r���r���r���r�������s4���� z!_SelectorSslTransport._read_readyc�������������C���s(��|�j�r d�S�|�jr<d|�_|�j���|�jp(|�js<|�jj|�j|�j��|�jr�y|�j j |�j�}W�n��ttt jfk rt���d}Y�np�t jk r����d}|�jj|�j��d|�_Y�nD�tk r��}�z(|�jj|�j��|�jj���|�j|d��d�S�d�}~X�nX�|r�|�jd�|�=�|�j���|�j�s$|�jj|�j��|�j�r$|�jd���d�S�)NFr���Tz"Fatal write error on SSL transport)r����r����r����r����r����r����r?���r����r����r����rH���rE���rD���r����r����r����ru���r����ra���r����r����r����r����)r!���r}���r^���r���r���r���r�������s8���� z"_SelectorSslTransport._write_readyc�������������C���s����t�|tttf�s"tdt|�j���|s*d�S�|�jrX|�jtj krFt jd��|��jd7��_d�S�|�jsp|�j j|�j|�j��|�jj|��|�j���d�S�)Nz1data argument must be a bytes-like object, not %rzsocket.send() raised exception.r���)r����r����r����r����r����r����r���r����r���r����r ���r����r����r����rt���r����r����r����r����)r!���rA���r���r���r���r�������s���� z_SelectorSslTransport.writec�������������C���s���dS�)NFr���)r!���r���r���r���r������s����z#_SelectorSslTransport.can_write_eof)NFNNN)N)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|�jj|���|�jj|�j|�j|�j ��|d�k rZ|�jjt 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����)�.0rA���r[���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|�jj|�j�\}}W�np�ttfk r8���Y�nh�tk rd�}�z|�jj|��W�Y�d�d�}~X�n<�t k r��}�z|�j |d��W�Y�d�d�}~X�nX�|�jj||��d�S�)Nz&Fatal read error on datagram transport)r����r����Zrecvfromr����rE���rD���rI���r�����error_receivedra���r����Zdatagram_received)r!���rA���r]���r^���r���r���r���r���� ��s����z&_SelectorDatagramTransport._read_readyc�������������C���sT��t�|tttf�s"tdt|�j���|s*d�S�|�jrN|d�|�jfkrNtd|�jf���|�j r�|�jr�|�j t jkrptj d��|��j d7��_ d�S�|�j�s4y&|�jr�|�jj|��n|�jj||��d�S��ttfk r����|�jj|�j|�j��Y�nZ�tk �r�}�z|�jj|��d�S�d�}~X�n.�tk �r2�}�z|�j|d��d�S�d�}~X�nX�|�jjt|�|f��|�j���d�S�)Nz1data argument must be a bytes-like object, not %rz#Invalid address: must be None or %szsocket.send() raised exception.r���z'Fatal write error on datagram transport)r����r����r����r����r����r����r���r����r{���r����r���r����r ���r����r����r����rH����sendtorE���rD���r����rt���r����� _sendto_readyrI���r����r����ra���r����r����r����)r!���rA���r]���r^���r���r���r���r����.��s<���� z!_SelectorDatagramTransport.sendtoc�������������C���s����x�|�j�r�|�j�j��\}}y&|�jr,|�jj|��n|�jj||��W�q�ttfk rf���|�j�j||f��P�Y�q�t k r��}�z|�j j|��d�S�d�}~X�q�tk r��}�z|�j |d��d�S�d�}~X�qX�qW�|�j���|�j�s�|�jj|�j��|�jr�|�jd���d�S�)Nz'Fatal write error on datagram transport)r�����popleftr����r����rH���r����rE���rD���� appendleftrI���r����r����ra���r����r����r����ru���r����r����r����)r!���rA���r]���r^���r���r���r���r����U��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���)�__all__r����rX���r����rS���r����r���r�����ImportError��r���r���r���r���r���r ���r ���r���Z coroutinesr����logr ���r���Z BaseEventLoopr���Z_FlowControlMixinZ Transportr����r$���r/���r0���r���r���r���r����<module>���sB��� ���i���i