OwlCyberSecurity - MANAGER
Edit File: selector_events.cpython-34.pyc
� j f���������������� ���@���s���d��Z��d�g�Z�d�d�l�Z�d�d�l�Z�d�d�l�Z�d�d�l�Z�d�d�l�Z�y�d�d�l�Z�Wn�e�k �ru�d�Z�Yn�Xd�d�l �m �Z �d�d�l �m�Z�d�d�l �m�Z�d�d�l �m �Z �d�d �l �m�Z�d�d �l �m�Z�d�d�l �m�Z�d�d�l �m�Z�d�d �l�m�Z�d�d�l�m�Z�d�d����Z�Gd�d����d�e �j���Z�Gd�d����d�e�j�e�j���Z�Gd�d����d�e���Z�Gd�d����d�e���Z�Gd�d����d�e���Z�d�S)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)�compat)� constants)�events)�futures)� selectors)� transports)�sslproto)� coroutine)�loggerc�������������C���sA���y�|��j��|���}�Wn�t�k �r+�d�SYn�Xt�|�j�|�@��Sd��S)NF)�get_key�KeyError�boolr���)�selector�fdZevent�key��r����</opt/alt/python34/lib64/python3.4/asyncio/selector_events.py�_test_selector_event���s ���� r���c�������������������s���e��Z�d��Z�d�Z�d����f�d�d���Z�d�d�d�d�d�d�d��Z�d�d �d �d�d�d�d�d�d�d�d ��Z�d �d �d�d�d�d�d�d�d�d���Z�d�d�d�d�d���Z����f�d�d����Z �d�d����Z �d�d����Z�d�d����Z�d�d����Z �d�d����Z�d�d����Z�d�d�d �d!���Z�d�d�d"�d#���Z�e�d�d�d$�d%�����Z�d&�d'����Z�d(�d)����Z�d*�d+����Z�d,�d-����Z�d.�d/����Z�d0�d1����Z�d2�d3����Z�d4�d5����Z�d6�d7����Z�d8�d9����Z�d:�d;����Z�d<�d=����Z�d>�d?����Z �d@�dA����Z!�dB�dC����Z"�dD�dE����Z#����S)Fr���zJSelector event loop. See events.EventLoop for API specification. Nc����������������sU���t�����j����|�d��k�r(�t�j����}�n��t�j�d�|�j�j���|�|��_�|��j ����d��S)NzUsing selector: %s) �super�__init__r ���ZDefaultSelectorr ����debug� __class__�__name__� _selector�_make_self_pipe)�selfr���)r���r���r���r���0���s���� zBaseSelectorEventLoop.__init__�extra�serverc������������C���s���t��|��|�|�|�|�|���S)N)�_SelectorSocketTransport)r����sock�protocol�waiterr���r ���r���r���r����_make_socket_transport9���s����z,BaseSelectorEventLoop._make_socket_transport�server_sideF�server_hostnamec������ ��� ���C���s{���t��j����s:�|��j�|�|�|�|�d�|�d�|�d�|�d�|��St��j�|��|�|�|�|�|���} �t�|��|�| �d�|�d�|��| �j�S)Nr&���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(���M���s����z0BaseSelectorEventLoop._make_legacy_ssl_transportc�������������C���s���t��|��|�|�|�|�|���S)N)�_SelectorDatagramTransport)r���r"���r#����addressr$���r���r���r���r����_make_datagram_transportW���s����z.BaseSelectorEventLoop._make_datagram_transportc����������������sn���|��j�����r�t�d�����n��|��j����r+�d��S|��j����t����j����|��j�d��k �rj�|��j�j����d��|��_�n��d��S)Nz!Cannot close a running event loop)Z is_running�RuntimeError� is_closed�_close_self_piper����closer���)r���)r���r���r���r3���\���s���� zBaseSelectorEventLoop.closec�������������C���s ���t����d��S)N)�NotImplementedError)r���r���r���r����_socketpairg���s����z!BaseSelectorEventLoop._socketpairc�������������C���sU���|��j��|��j�j������|��j�j����d��|��_�|��j�j����d��|��_�|��j�d�8_�d��S)Nr���)� remove_reader�_ssock�filenor3����_csock� _internal_fds)r���r���r���r���r2���j���s���� z&BaseSelectorEventLoop._close_self_pipec�������������C���sg���|��j�����\�|��_�|��_�|��j�j�d���|��j�j�d���|��j�d�7_�|��j�|��j�j����|��j���d��S)NFr���)r5���r7���r9����setblockingr:���� add_readerr8����_read_from_self)r���r���r���r���r���r���s ����z%BaseSelectorEventLoop._make_self_pipec�������������C���s���d��S)Nr���)r����datar���r���r����_process_self_dataz���s����z(BaseSelectorEventLoop._process_self_datac�������������C���sb���x[�y-�|��j��j�d���}�|�s"�Pn��|��j�|���Wq�t�k �rG�w�Yq�t�k �rY�PYq�Xq�Wd��S)Ni���)r7����recvr?����InterruptedError�BlockingIOError)r���r>���r���r���r���r=���}���s���� z%BaseSelectorEventLoop._read_from_selfc�������������C���sa���|��j��}�|�d��k �r]�y�|�j�d���Wq]�t�k �rY�|��j�rU�t�j�d�d�d��n��Yq]�Xn��d��S)Ns����z3Fail to write a null byte into the self-pipe socket�exc_infoT)r9����send�OSError�_debugr ���r���)r���Zcsockr���r���r����_write_to_self����s���� z$BaseSelectorEventLoop._write_to_selfc�������������C���s)���|��j��|�j����|��j�|�|�|�|���d��S)N)r<���r8����_accept_connection)r����protocol_factoryr"���r*���r ���r���r���r����_start_serving����s����z$BaseSelectorEventLoop._start_servingc������� ������C���sD��yE�|�j�����\�}�}�|��j�r7�t�j�d�|�|�|���n��|�j�d���Wn��t�t�t�f�k �rb�Yn��t�k �r }�z��|�j �t �j �t �j�t �j�t �j �f�k�r��|��j�i�d�d�6|�d�6|�d�6��|��j�|�j������|��j�t�j�|��j�|�|�|�|���n����WYd��d��}�~�Xn6�Xi�|�d�6}�|��j�|�|�|�|�|���} �|��j�| ���d��S)Nz#%r got a new connection from %r: %rFz&socket.accept() out of system resource�message� exception�socket�peername)�acceptrF���r ���r���r;���rB���rA����ConnectionAbortedErrorrE����errnoZEMFILEZENFILEZENOBUFSZENOMEM�call_exception_handlerr6���r8���Z call_laterr���ZACCEPT_RETRY_DELAYrJ����_accept_connection2Zcreate_task) r���rI���r"���r*���r ����conn�addr�excr���rO���r���r���r���rH�������s0���� z(BaseSelectorEventLoop._accept_connectionc�������������c���s5��d��}�d��}�y��|����}�t��j�d�|����}�|�r`�|��j�|�|�|�d�|�d�d�d�|�d�|��}�n$�|��j�|�|�d�|�d�|�d�|��}�y �|�Dd��HWn�|�j�������Yn�XWn��t�k �r0} �zd�|��j�ri�d�d�6| �d �6} �|�d��k �r��|�| �d �<n��|�d��k �r|�| �d�<n��|��j�| ���n��WYd��d��} �~ �Xn�Xd��S)N�loopr$���r&���Tr���r ���z3Error on transport creation for incoming connectionrK���rL���r#���� transport)r����Futurer+���r%���r3���� ExceptionrF���rR���)r���rI���rT���r���r*���r ���r#���rX���r$���rV����contextr���r���r���rS�������s6���� z)BaseSelectorEventLoop._accept_connection2c������� ��� ���G���s����|��j�����t�j�|�|�|����}�y�|��j�j�|���}�Wn1�t�k �rh�|��j�j�|�t�j�|�d�f���YnV�X|�j�|�j �}�\�}�}�|��j�j �|�|�t�j�B|�|�f���|�d�k �r��|�j����n��d�S)zAdd a reader callback.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����|��j�����r�d�Sy�|��j�j�|���}�Wn�t�k �r>�d�SYn{�X|�j�|�j�}�\�}�}�|�t�j�M}�|�s�|��j�j�|���n�|��j�j �|�|�d�|�f���|�d�k �r��|�j ����d�Sd�Sd�S)zRemove a reader callback.FNT)r1���r���r���r���r���r>���r ���r_���� unregisterr`���ra���)r���r���r���re���rf���rg���r���r���r���r6�������s���� z#BaseSelectorEventLoop.remove_readerc������� ��� ���G���s����|��j�����t�j�|�|�|����}�y�|��j�j�|���}�Wn1�t�k �rh�|��j�j�|�t�j�d�|�f���YnV�X|�j�|�j �}�\�}�}�|��j�j �|�|�t�j�B|�|�f���|�d�k �r��|�j����n��d�S)zAdd a writer callback..N)r\���r���r]���r���r���r���r^���r ����EVENT_WRITEr>���r`���ra���) r���r���rb���rc���rd���r���re���rf���rg���r���r���r���� add_writer��s���� z BaseSelectorEventLoop.add_writerc���������� ���C���s����|��j�����r�d�Sy�|��j�j�|���}�Wn�t�k �r>�d�SYn{�X|�j�|�j�}�\�}�}�|�t�j�M}�|�s�|��j�j�|���n�|��j�j �|�|�|�d�f���|�d�k �r��|�j ����d�Sd�Sd�S)zRemove a writer callback.FNT)r1���r���r���r���r���r>���r ���ri���rh���r`���ra���)r���r���r���re���rf���rg���r���r���r���� remove_writer��s���� z#BaseSelectorEventLoop.remove_writerc�������������C���sV���|��j��r*�|�j����d�k�r*�t�d�����n��t�j�d�|����}�|��j�|�d�|�|���|�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. This method is a coroutine. r���zthe socket must be non-blockingrW���F)rF���� gettimeout� ValueErrorr���rY���� _sock_recv)r���r"����n�futr���r���r���� sock_recv2��s ���� zBaseSelectorEventLoop.sock_recvc�������������C���s����|�j�����}�|�r"�|��j�|���n��|�j����r2�d��Sy�|�j�|���}�Wnh�t�t�f�k �r~�|��j�|�|��j�|�d�|�|���Yn?�t�k �r��}�z�|�j �|���WYd��d��}�~�Xn�X|�j �|���d��S)NT)r8���r6���� cancelledr@���rB���rA���r<���rn���rZ���� set_exception� set_result)r���rp���� registeredr"���ro���r���r>���rV���r���r���r���rn���A��s����# z BaseSelectorEventLoop._sock_recvc�������������C���sl���|��j��r*�|�j����d�k�r*�t�d�����n��t�j�d�|����}�|�r[�|��j�|�d�|�|���n �|�j�d���|�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. This method is a coroutine. r���zthe socket must be non-blockingrW���FN)rF���rl���rm���r���rY���� _sock_sendallrt���)r���r"���r>���rp���r���r���r����sock_sendallV��s���� z"BaseSelectorEventLoop.sock_sendallc�������������C���s����|�j�����}�|�r"�|��j�|���n��|�j����r2�d��Sy�|�j�|���}�WnS�t�t�f�k �re�d�}�Yn6�t�k �r��}�z�|�j�|���d��SWYd��d��}�~�Xn�X|�t�|���k�r��|�j �d����n8�|�r��|�|�d����}�n��|��j �|�|��j�|�d�|�|���d��S)Nr���T)r8���rk���rr���rD���rB���rA���rZ���rs����lenrt���rj���rv���)r���rp���ru���r"���r>���r���ro���rV���r���r���r���rv���j��s"���� z#BaseSelectorEventLoop._sock_sendallc�������������C���s����|��j��r*�|�j����d�k�r*�t�d�����n��t�j�d�|����}�y�t�j�|�|���Wn2�t�k �r��}�z�|�j�|���WYd�d�}�~�Xn�X|��j�|�|�|���|�S)a���Connect to a remote socket at address. The address must be already resolved to avoid the trap of hanging the entire event loop when the address requires doing a DNS lookup. For example, it must be an IP address, not an hostname, for AF_INET and AF_INET6 address families. Use getaddrinfo() to resolve the hostname asynchronously. This method is a coroutine. r���zthe socket must be non-blockingrW���N) rF���rl���rm���r���rY���r���Z_check_resolved_addressrs���� _sock_connect)r���r"���r.���rp����errr���r���r����sock_connect���s���� z"BaseSelectorEventLoop.sock_connectc�������������C���s����|�j�����}�y�|�j�|���Wn��t�t�f�k �ro�|�j�t�j�|��j�|�����|��j�|�|��j �|�|�|���Yn?�t �k �r��}�z�|�j�|���WYd��d��}�~�Xn�X|�j�d����d��S)N) r8���ZconnectrB���rA���Zadd_done_callback� functools�partial�_sock_connect_donerj����_sock_connect_cbrZ���rs���rt���)r���rp���r"���r.���r���rV���r���r���r���ry������s���� z#BaseSelectorEventLoop._sock_connectc�������������C���s���|��j��|���d��S)N)rk���)r���r���rp���r���r���r���r~������s����z(BaseSelectorEventLoop._sock_connect_donec�������������C���s����|�j�����r�d��SyA�|�j�t�j�t�j���}�|�d�k�rP�t�|�d�|�f�����n��WnI�t�t�f�k �rk�Yn?�t�k �r��}�z�|�j �|���WYd��d��}�~�Xn�X|�j �d����d��S)Nr���zConnect call failed %s)rr���Z getsockoptrM���Z SOL_SOCKETZSO_ERRORrE���rB���rA���rZ���rs���rt���)r���rp���r"���r.���rz���rV���r���r���r���r������s���� z&BaseSelectorEventLoop._sock_connect_cbc�������������C���sS���|��j��r*�|�j����d�k�r*�t�d�����n��t�j�d�|����}�|��j�|�d�|���|�S)a|��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. This method is a coroutine. r���zthe socket must be non-blockingrW���F)rF���rl���rm���r���rY����_sock_accept)r���r"���rp���r���r���r����sock_accept���s ���� z!BaseSelectorEventLoop.sock_acceptc�������������C���s����|�j�����}�|�r"�|��j�|���n��|�j����r2�d��Sy#�|�j����\�}�}�|�j�d���Wne�t�t�f�k �r��|��j�|�|��j�|�d�|���YnE�t �k �r��}�z�|�j �|���WYd��d��}�~�Xn�X|�j�|�|�f���d��S)NFT)r8���r6���rr���rO���r;���rB���rA���r<���r����rZ���rs���rt���)r���rp���ru���r"���r���rT���r.���rV���r���r���r���r�������s���� z"BaseSelectorEventLoop._sock_acceptc�������������C���s����x��|�D]��\�}�}�|�j��|�j�}�\�}�}�|�t�j�@rn�|�d��k �rn�|�j�r^�|��j�|���qn�|��j�|���n��|�t�j�@r�|�d��k �r�|�j�r��|��j�|���q��|��j�|���q�q�Wd��S)N) �fileobjr>���r ���r_���Z _cancelledr6���Z _add_callbackri���rk���)r���Z event_listr���re���r����rf���rg���r���r���r����_process_events���s���� z%BaseSelectorEventLoop._process_eventsc�������������C���s!���|��j��|�j������|�j����d��S)N)r6���r8���r3���)r���r"���r���r���r���� _stop_serving���s����z#BaseSelectorEventLoop._stop_serving)$r���� __module__�__qualname__�__doc__r���r%���r+���r(���r/���r3���r5���r2���r���r?���r=���rG���rJ���rH���r���rS���r<���r6���rj���rk���rq���rn���rw���rv���r{���ry���r~���r���r����r����r����r����r���r���)r���r���r���*���sL��� !#c�������������������s����e��Z�d��Z�d�Z�e�Z�d�Z�d�d����f�d�d���Z�d�d����Z�d�d ����Z �d �d����Z �d�d ����Z�e�j �r~�d�d����Z�n��d�d�d���Z�d�d����Z�d�d����Z�d�d����Z����S)�_SelectorTransport����i���Nc����������������s����t�����j�|�|���|�|��j�d�<|�j����|��j�d�<d�|��j�k�r��y�|�j����|��j�d�<Wq��t�j�k �r}�d��|��j�d�<Yq��Xn��|�|��_�|�j����|��_ �|�|��_ �d�|��_�|�|��_�|��j ����|��_�d�|��_�d�|��_�|��j�d��k �r��|��j�j����n��d��S)NrM���ZsocknamerN���Tr���F)r���r����_extraZgetsocknameZgetpeernamerM����error�_sockr8����_sock_fd� _protocol�_protocol_connected�_server�_buffer_factory�_buffer� _conn_lost�_closingZ_attach)r���rW���r"���r#���r���r ���)r���r���r���r������s$���� z_SelectorTransport.__init__c�������������C���s%��|��j��j�g�}�|��j�d��k�r.�|�j�d���n�|��j�rG�|�j�d���n��|�j�d�|��j���|��j�d��k �r|��j�j����rt�|��j�j �|��j�t �j���}�|�r��|�j�d���n �|�j�d���t�|��j�j �|��j�t �j���}�|�r��d�}�n�d�}�|��j ����}�|�j�d�|�|�f���n��d �d �j�|���S)N�closed�closingzfd=%szread=pollingz read=idle�pollingZidlezwrite=<%s, bufsize=%s>z<%s>� )r���r���r�����appendr����r�����_loopr1���r���r���r ���r_���ri����get_write_buffer_size�join)r����infor�����state�bufsizer���r���r����__repr__��s*���� z_SelectorTransport.__repr__c�������������C���s���|��j��d����d��S)N)�_force_close)r���r���r���r����abort+��s����z_SelectorTransport.abortc�������������C���s���|��j��S)N)r����)r���r���r���r���� is_closing.��s����z_SelectorTransport.is_closingc�������������C���s^���|��j��r �d��Sd�|��_��|��j�j�|��j���|��j�sZ�|��j�d�7_�|��j�j�|��j�d����n��d��S)NTr���)r����r����r6���r����r����r����� call_soon�_call_connection_lost)r���r���r���r���r3���1��s���� z_SelectorTransport.closec�������������C���s7���|��j��d��k �r3�t�j�d�|��t���|��j��j����n��d��S)Nzunclosed transport %r)r�����warnings�warn�ResourceWarningr3���)r���r���r���r����__del__>��s����z_SelectorTransport.__del__zFatal error on transportc�������������C���s����t��|�t�t�t�f���rF�|��j�j����ru�t�j�d�|��|�d�d��qu�n/�|��j�j�i�|�d�6|�d�6|��d�6|��j �d�6��|��j �|���d��S)Nz%r: %srC���TrK���rL���rX���r#���)� isinstance�BrokenPipeError�ConnectionResetErrorrP���r����� get_debugr ���r���rR���r����r����)r���rV���rK���r���r���r����_fatal_errorC��s���� z_SelectorTransport._fatal_errorc�������������C���s����|��j��r �d��S|��j�r9�|��j�j����|��j�j�|��j���n��|��j�sa�d�|��_�|��j�j�|��j���n��|��j��d�7_��|��j�j�|��j �|���d��S)NTr���) r����r�����clearr����rk���r����r����r6���r����r����)r���rV���r���r���r���r����R��s���� z_SelectorTransport._force_closec�������������C���s{���z �|��j��r�|��j�j�|���n��Wd��|��j�j����d��|��_�d��|��_�d��|��_�|��j�}�|�d��k �rv�|�j����d��|��_�n��Xd��S)N)r����r����Zconnection_lostr����r3���r����r����Z_detach)r���rV���r ���r���r���r���r����^��s���� z(_SelectorTransport._call_connection_lostc�������������C���s ���t��|��j���S)N)rx���r����)r���r���r���r���r����l��s����z(_SelectorTransport.get_write_buffer_sizei���)r���r����r�����max_size� bytearrayr����r����r���r����r����r����r3���r���ZPY34r����r����r����r����r����r���r���)r���r���r�������s��� r����c�������������������s���e��Z�d��Z�d�d�d����f�d�d���Z�d�d����Z�d�d����Z�d�d ����Z�d �d����Z�d�d ����Z�d�d����Z �d�d����Z ����S)r!���Nc����������������s����t�����j�|�|�|�|�|���d�|��_�d�|��_�|��j�j�|��j�j�|����|��j�j�|��j�j�|��j �|��j ���|�d��k �r��|��j�j�t�j�|�d����n��d��S)NF) r���r����_eof�_pausedr����r����r�����connection_mader<���r�����_read_readyr����_set_result_unless_cancelled)r���rW���r"���r#���r$���r���r ���)r���r���r���r���r��s���� z!_SelectorSocketTransport.__init__c�������������C���sr���|��j��r�t�d�����n��|��j�r0�t�d�����n��d�|��_�|��j�j�|��j���|��j�j����rn�t�j�d�|����n��d��S)Nz#Cannot pause_reading() when closingzAlready pausedTz%r pauses reading) r����r0���r����r����r6���r����r����r ���r���)r���r���r���r���� pause_reading���s���� z&_SelectorSocketTransport.pause_readingc�������������C���sm���|��j��s�t�d�����n��d�|��_��|��j�r.�d��S|��j�j�|��j�|��j���|��j�j����ri�t�j �d�|����n��d��S)Nz Not pausedFz%r resumes reading) r����r0���r����r����r<���r����r����r����r ���r���)r���r���r���r����resume_reading���s���� z'_SelectorSocketTransport.resume_readingc�������������C���s����y�|��j��j�|��j���}�WnL�t�t�f�k �r3�Yn��t�k �rg�}�z�|��j�|�d���WYd��d��}�~�Xnq�X|�r��|��j�j�|���nW�|��j �j ����r��t�j�d�|����n��|��j�j ����}�|�r��|��j �j�|��j���n �|��j����d��S)Nz$Fatal read error on socket transportz%r received EOF)r����r@���r����rB���rA���rZ���r����r����� data_receivedr����r����r ���r����eof_receivedr6���r����r3���)r���r>���rV���� keep_openr���r���r���r�������s����#z$_SelectorSocketTransport._read_readyc�������������C���sV��t��|�t�t�t�f���s0�t�d�t�|�������n��|��j�rH�t�d�����n��|�sR�d��S|��j�r��|��j�t �j �k�r}�t�j�d���n��|��j�d�7_�d��S|��j �s8y�|��j�j�|���}�WnP�t�t�f�k �r��YnS�t�k �r}�z�|��j�|�d���d��SWYd��d��}�~�Xn�X|�|�d����}�|�sd��S|��j�j�|��j�|��j���n��|��j �j�|���|��j����d��S)Nz#data argument must be byte-ish (%r)z%Cannot call write() after write_eof()zsocket.send() raised exception.r���z%Fatal write error on socket transport)r�����bytesr����� memoryview� TypeError�typer����r0���r����r����!LOG_THRESHOLD_FOR_CONNLOST_WRITESr ����warningr����r����rD���rB���rA���rZ���r����r����rj���r�����_write_ready�extend�_maybe_pause_protocol)r���r>���ro���rV���r���r���r����write���s4���� z_SelectorSocketTransport.writec�������������C���s��|��j��s�t�d�����y�|��j�j�|��j����}�Wnl�t�t�f�k �rH�Yn��t�k �r��}�z5�|��j�j�|��j ���|��j��j ����|��j�|�d���WYd��d��}�~�Xn{�X|�r��|��j��d��|���=n��|��j����|��j��s|��j�j�|��j ���|��j �r��|��j�d����q|��j�r|��j�j�t�j���qn��d��S)NzData should not be emptyz%Fatal write error on socket transport)r�����AssertionErrorr����rD���rB���rA���rZ���r����rk���r����r����r�����_maybe_resume_protocolr����r����r�����shutdownrM����SHUT_WR)r���ro���rV���r���r���r���r�������s$���� # z%_SelectorSocketTransport._write_readyc�������������C���s9���|��j��r �d��Sd�|��_��|��j�s5�|��j�j�t�j���n��d��S)NT)r����r����r����r����rM���r����)r���r���r���r���� write_eof���s ���� z"_SelectorSocketTransport.write_eofc�������������C���s���d�S)NTr���)r���r���r���r���� can_write_eof���s����z&_SelectorSocketTransport.can_write_eof)r���r����r����r���r����r����r����r����r����r����r����r���r���)r���r���r!���p��s��� #r!���c�������������������s����e��Z�d��Z�e�Z�d�d�d�d�d����f�d�d���Z�d�d�d���Z�d�d����Z�d �d ����Z�d�d����Z �d �d����Z �d�d����Z�d�d����Z�d�d����Z ����S)r,���NFc ������� ���������s��t��d��k�r�t�d�����n��|�s6�t�j�|�|���}�n��i�|�d�6d�d�6} �|�rd�|�rd�|�| �d�<n��|�j�|�| ���}�t����j�|�|�|�|�| ���d�|��_�|�|��_�|�|��_ �|�|��_ �d�|��_�|��j�j �d�|���|��j�j����rt�j�d�|����|��j�j����}�n�d��}�|��j�|���d��S)Nzstdlib ssl module not availabler&���FZdo_handshake_on_connectr'���r*���z%r starts SSL handshake)�sslr0���r���Z_create_transport_contextZwrap_socketr���r���r�����_server_hostname�_waiter�_sslcontextr����r�����updater����r����r ���r����time� _on_handshake) r���rW���r)���r#���r*���r$���r&���r'���r���r ���Zwrap_kwargsZsslsock� start_time)r���r���r���r������s,���� z_SelectorSslTransport.__init__c�������������C���sa���|��j��d��k�r�d��S|��j��j����sT�|�d��k �rA�|��j��j�|���qT�|��j��j�d����n��d��|��_��d��S)N)r����rr���rs���rt���)r���rV���r���r���r����_wakeup_waiter��s����z$_SelectorSslTransport._wakeup_waiterc����������%���C���s���y�|��j��j����Wnt�j�k �rH�|��j�j�|��j�|��j�|���d��SYn��t�j�k �r|�|��j�j �|��j�|��j�|���d��SYn��t �k �r}�z��|��j�j����r��t�j �d�|��d�d��n��|��j�j�|��j���|��j�j�|��j���|��j��j����|��j�|���t�|�t���r d��S���WYd��d��}�~�Xn�X|��j�j�|��j���|��j�j�|��j���|��j��j����}�t�|��j�d���s|��j�r|��j�j�t�j�k�ry�t�j�|�|��j���Wqt�k �r}�zK�|��j�j����r�t�j �d�|��d�d��n��|��j��j����|��j�|���d��SWYd��d��}�~�XqXqn��|��j�j�d�|�d�|��j��j����d�|��j��j����d �|��j����d �|��_�d �|��_ �|��j�j�|��j�|��j!���d�|��_"�|��j�j#�|��j$�j%�|����|��j�j#�|��j���|��j�j����r�|��j�j&����|�}�t�j'�d�|��|�d���n��d��S) Nz%r: SSL handshake failedrC���TZcheck_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�����SSLWantWriteErrorrj���� BaseExceptionr����r ���r����r6���rk���r3���r����r����rZ���Zgetpeercert�hasattrr����r����Zverify_modeZ CERT_NONEZmatch_hostnamer����r����r����r�����_read_wants_write�_write_wants_readr����r����r����r����r����r����r���)r���r����rV���r����Zdtr���r���r���r����!��sb���� z#_SelectorSslTransport._on_handshakec�������������C���sr���|��j��r�t�d�����n��|��j�r0�t�d�����n��d�|��_�|��j�j�|��j���|��j�j����rn�t�j�d�|����n��d��S)Nz#Cannot pause_reading() when closingzAlready pausedTz%r pauses reading) r����r0���r����r����r6���r����r����r ���r���)r���r���r���r���r����`��s���� z#_SelectorSslTransport.pause_readingc�������������C���sm���|��j��s�t�d�����n��d�|��_��|��j�r.�d��S|��j�j�|��j�|��j���|��j�j����ri�t�j �d�|����n��d��S)Nz Not pausedFz%r resumes reading) r����r0���r����r����r<���r����r����r����r ���r���)r���r���r���r���r����p��s���� z$_SelectorSslTransport.resume_readingc�������������C���sq��|��j��rD�d�|��_��|��j����|��j�rD�|��j�j�|��j�|��j���qD�n��y�|��j�j�|��j���}�Wn��t �t �t�j�f�k �r}�Yn��t�j �k �r��d�|��_�|��j�j�|��j���|��j�j�|��j�|��j���Yn��t�k �r��}�z�|��j�|�d���WYd��d��}�~�Xns�X|�r|��j�j�|���nY�zK�|��j�j����r9t�j�d�|����n��|��j�j����}�|�r^t�j�d���n��Wd��|��j����Xd��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����rj���r����r����r@���r����rB���rA���r����r����r����r����r6���rZ���r����r����r����r����r ���r���r����r����r3���)r���r>���rV���r����r���r���r���r����z��s0���� #z!_SelectorSslTransport._read_readyc�������������C���s���|��j��rM�d�|��_��|��j����|��j�p+�|��j�sM�|��j�j�|��j�|��j���qM�n��|��j�r@y�|��j�j �|��j���}�Wn��t �t�t�j �f�k �r��d�}�Yn��t�j�k �r��d�}�|��j�j�|��j���d�|��_�YnY�t�k �r#}�z9�|��j�j�|��j���|��j�j����|��j�|�d���d��SWYd��d��}�~�Xn�X|�r@|��j�d��|���=q@n��|��j����|��j�s�|��j�j�|��j���|��j�r�|��j�d����q�n��d��S)NFr���Tz"Fatal write error on SSL transport)r����r����r����r����r����r<���r����r����r����rD���rB���rA���r����r����r����rk���r����rZ���r����r����r����r����)r���ro���rV���r���r���r���r�������s4���� z"_SelectorSslTransport._write_readyc�������������C���s����t��|�t�t�t�f���s0�t�d�t�|�������n��|�s:�d��S|��j�rx�|��j�t�j�k�re�t �j �d���n��|��j�d�7_�d��S|��j�s��|��j�j �|��j�|��j���n��|��j�j�|���|��j����d��S)Nz#data argument must be byte-ish (%r)zsocket.send() raised exception.r���)r����r����r����r����r����r����r����r���r����r ���r����r����r����rj���r����r����r����r����)r���r>���r���r���r���r�������s���� z_SelectorSslTransport.writec�������������C���s���d�S)NFr���)r���r���r���r���r�������s����z#_SelectorSslTransport.can_write_eof)r���r����r����r����r����r���r����r����r����r����r����r����r����r����r���r���)r���r���r,������s���" ? !r,���c�������������������sg���e��Z�d��Z�e�j�Z�d�d�d����f�d�d���Z�d�d����Z�d�d����Z�d�d�d ���Z �d �d����Z ����S)r-���Nc����������������s����t�����j�|�|�|�|���|�|��_�|��j�j�|��j�j�|����|��j�j�|��j�j�|��j�|��j ���|�d��k �r��|��j�j�t �j�|�d����n��d��S)N)r���r����_addressr����r����r����r����r<���r����r����r���r����)r���rW���r"���r#���r.���r$���r���)r���r���r���r������s���� z#_SelectorDatagramTransport.__init__c�������������C���s���t��d�d����|��j�D����S)Nc�������������s���s!���|��]�\�}�}�t��|���Vq�d��S)N)rx���)�.0r>����_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����y�|��j��j�|��j���\�}�}�Wn��t�t�f�k �r9�Yn|�t�k �rm�}�z�|��j�j�|���WYd��d��}�~�XnH�t�k �r��}�z�|��j �|�d���WYd��d��}�~�Xn�X|��j�j �|�|���d��S)Nz&Fatal read error on datagram transport)r����Zrecvfromr����rB���rA���rE���r�����error_receivedrZ���r����Zdatagram_received)r���r>���rU���rV���r���r���r���r�������s����"#z&_SelectorDatagramTransport._read_readyc�������������C���s���t��|�t�t�t�f���s0�t�d�t�|�������n��|�s:�d��S|��j�rq�|�d��|��j�f�k�rq�t�d�|��j�f�����n��|��j�r��|��j�r��|��j�t �j �k�r��t�j�d���n��|��j�d�7_�d��S|��j �s�y7�|��j�r��|��j�j�|���n�|��j�j�|�|���d��SWq�t�t�f�k �r+|��j�j�|��j�|��j���Yq�t�k �rc}�z�|��j�j�|���d��SWYd��d��}�~�Xq�t�k �r�}�z�|��j�|�d���d��SWYd��d��}�~�Xq�Xn��|��j �j�t�|���|�f���|��j����d��S)Nz#data argument must be byte-ish (%r)z#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����rm���r����r���r����r ���r����r����r����rD����sendtorB���rA���r����rj���r����� _sendto_readyrE���r����r����rZ���r����r����r����)r���r>���rU���rV���r���r���r���r�������s<���� z!_SelectorDatagramTransport.sendtoc�������������C���s@��x��|��j��r��|��j��j����\�}�}�y3�|��j�r@�|��j�j�|���n�|��j�j�|�|���Wq�t�t�f�k �r��|��j��j�|�|�f���PYq�t �k �r��}�z�|��j �j�|���d��SWYd��d��}�~�Xq�t�k �r��}�z�|��j �|�d���d��SWYd��d��}�~�Xq�Xq�W|��j����|��j��s<|��j�j�|��j���|��j�r<|��j�d����q<n��d��S)Nz'Fatal write error on datagram transport)r�����popleftr����r����rD���r����rB���rA���� appendleftrE���r����r����rZ���r����r����r����rk���r����r����r����)r���r>���rU���rV���r���r���r���r������s*���� z(_SelectorDatagramTransport._sendto_ready)r���r����r�����collections�dequer����r���r����r����r����r����r���r���)r���r���r-������s��� 'r-���)r�����__all__r����rQ���r|���rM���r����r�����ImportError��r���r���r���r���r���r ���r ���r���Z coroutinesr����logr ���r���Z BaseEventLoopr���Z_FlowControlMixinZ Transportr����r!���r,���r-���r���r���r���r����<module>���s8��� �����