� !A?hX���l� dZddlZddlZddlZddlZddlZddlZddlZ ddlZn #e $rdZYnwxYwddl m Z ddl m Z ddl m Z ddl mZddl mZdd l mZdd l mZdd l mZdd lmZd �ZGd�de j��ZGd�dejej��ZGd�de��ZGd�de��ZdS))�BaseSelectorEventLoop�N�)� base_events)� constants)�events)�futures)� protocols)�sslproto)� transports)�trsock)�loggerc�~� |�|��}t|j|z��S#t$rYdSwxYw�NF)�get_key�boolr�KeyError)�selector�fd�event�keys �D/opt/alt/python-internal/lib64/python3.11/asyncio/selector_events.py�_test_selector_eventr sU��(����r�"�"���C�J��&�'�'�'�� �����u�u����s �.� <�<c����eZdZ d3�fd� Zd3ddd�d�Z d3ddddejejd�d�Z d4d�Z �fd �Z d �Z d �Z d �Z d �Zd�Zdddejejfd�Zdddejejfd�Zddejejfd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd3d�Zd�Zd�Zd �Z d!�Z!d"�Z"d5d$�Z#d%�Z$d&�Z%d'�Z&d(�Z'd)�Z(d*�Z)d+�Z*d3d,�Z+d-�Z,d.�Z-d/�Z.d0�Z/d1�Z0d2�Z1�xZ2S)6rNc���t�����|�tj��}t jd|jj��||_|� ��tj ��|_ dS)NzUsing selector: %s) �super�__init__� selectors�DefaultSelectorr �debug� __class__�__name__� _selector�_make_self_pipe�weakref�WeakValueDictionary� _transports)�selfrr s �rrzBaseSelectorEventLoop.__init__1sv��� �������� � � �0�2�2�H�� �)�8�+=�+F�G�G�G�!��� ������"�6�8�8�������extra�serverc�*�t||||||��S�N)�_SelectorSocketTransport)r'�sock�protocol�waiterr*r+s r�_make_socket_transportz,BaseSelectorEventLoop._make_socket_transport;s!��'��d�H�f�(-�v�7�7� 7r(F)� server_side�server_hostnamer*r+�ssl_handshake_timeout�ssl_shutdown_timeoutc �p�tj||||||| | ���} t||| ||���| jS)N)r5r6r))r � SSLProtocolr.�_app_transport) r'�rawsockr0� sslcontextr1r3r4r*r+r5r6� ssl_protocols r�_make_ssl_transportz)BaseSelectorEventLoop._make_ssl_transport@s\�� �+� �(�J�� ��"7�!5�  � � � � !��w� �',�V� =� =� =� =��*�*r(c�*�t||||||��Sr-)�_SelectorDatagramTransport)r'r/r0�addressr1r*s r�_make_datagram_transportz.BaseSelectorEventLoop._make_datagram_transportQs$��)�$��h�*1�6�5�B�B� Br(c�4��|���rtd���|���rdS|���t �����|j�"|j���d|_dSdS)Nz!Cannot close a running event loop)� is_running� RuntimeError� is_closed�_close_self_piper�closer")r'r s �rrGzBaseSelectorEventLoop.closeVs���� �?�?� � � D��B�C�C� C� �>�>� � � � �F� ������ ��� � ���� �>� %� �N� � � "� "� "�!�D�N�N�N� &� %r(c���|�|j�����|j���d|_|j���d|_|xjdzc_dS)Nr)�_remove_reader�_ssock�filenorG�_csock� _internal_fds�r's rrFz&BaseSelectorEventLoop._close_self_pipeast�� ���D�K�.�.�0�0�1�1�1� � �������� � � �������� � ���a�����r(c�2�tj��\|_|_|j�d��|j�d��|xjdz c_|�|j���|j��dS)NFr) �socket� socketpairrJrL� setblockingrM� _add_readerrK�_read_from_selfrNs rr#z%BaseSelectorEventLoop._make_self_pipeis���#)�#4�#6�#6� �� �T�[� � ����&�&�&� � ����&�&�&� ���a���� �����+�+�-�-�t�/C�D�D�D�D�Dr(c��dSr-��r'�datas r�_process_self_dataz(BaseSelectorEventLoop._process_self_dataqs�� �r(c�� |j�d��}|sdS|�|��n#t$rY�Bt$rYdSwxYw�R)NTi)rJ�recvrY�InterruptedError�BlockingIOErrorrWs rrTz%BaseSelectorEventLoop._read_from_selfts��� � ��{�'�'��-�-�����E��'�'��-�-�-�-��#� � � ���"� � � ���� ���� s�7�7� A� A�Ac��|j}|�dS |�d��dS#t$r$|jrt jdd���YdSYdSwxYw)N�z3Fail to write a null byte into the self-pipe socketT��exc_info)rL�send�OSError�_debugr r)r'�csocks r�_write_to_selfz$BaseSelectorEventLoop._write_to_self�s��� � �� �=� �F� ,� �J�J�u� � � � � ��� ,� ,� ,��{� ,�� �0�&*�,�,�,�,�,�,�,� ,� ,� ,� ,���s�$�'A�A�dc �n�|�|���|j|||||||� � dSr-)rSrK�_accept_connection)r'�protocol_factoryr/r;r+�backlogr5r6s r�_start_servingz$BaseSelectorEventLoop._start_serving�sK�� ���������(?�)�4��V�W�.�0D� F� F� F� F� Fr(c ���t|��D�]h} |���\} } |jrtjd|| | ��| �d��d| i} |�|| | ||||��} |�| ����#tttf$rYdSt$r�} | j tj tjtjtjfvr|�d| t%j|��d���|�|�����|�t.j|j|||||||� � n�Yd} ~ ��bd} ~ wwxYwdS)Nz#%r got a new connection from %r: %rF�peernamez&socket.accept() out of system resource)�message� exceptionrP)�range�acceptrdr rrR�_accept_connection2� create_taskr]r\�ConnectionAbortedErrorrc�errno�EMFILE�ENFILE�ENOBUFS�ENOMEM�call_exception_handlerr �TransportSocketrIrK� call_laterr�ACCEPT_RETRY_DELAYrl)r'rjr/r;r+rkr5r6�_�conn�addrr*rr�excs rriz(BaseSelectorEventLoop._accept_connection�s����w���# )�# )�A�" )�!�[�[�]�]� ��d��;�5��L�!F�!'��t�5�5�5�� � ��'�'�'�2$�T�*���1�1�$�d�E�:�v�)�+?�A�A��� � ��(�(�(�(��9$�%5�7M�N� � � ��t�t�t�� � � ��9���u�|�!&��� �!>�>�>� �/�/�#K�%(�"(�"8��">�">�1�1���� �'�'�� � � � �6�6�6��O�O�I�$@�$(�$7�$4�d�J��$+�-B�$8� :�:�:�:� � :�:�:�:�:����� ����# )�# )s�A B�E7�. E7�7B5E2�2E7c ���K�d}d} |��}|���} |r|�|||| d||||�� � } n|�||| ||���} | �d{V��dS#t$r| ���d} �wxYw#t t f$r�t$r@} |jr.d| d�} |�|| d<| �| | d<|�| ��Yd} ~ dSYd} ~ dSd} ~ wwxYw)NT)r1r3r*r+r5r6)r1r*r+z3Error on transport creation for incoming connection)rorpr0� transport) � create_futurer=r2� BaseExceptionrG� SystemExit�KeyboardInterruptrdr{) r'rjr�r*r;r+r5r6r0r�r1r��contexts rrsz)BaseSelectorEventLoop._accept_connection2�s����� ��� �& 5�'�'�)�)�H��'�'�)�)�F�� #� �4�4��(�J�v� $�E�&�*?�)=� 5�?�?� � � !�7�7��(�6��!�8�#�#� � �� � � � � � � � � �� � � � ����!�!�!����  ������-�.� � � � �� 5� 5� 5��{� 5�N�!$���� �'�*2�G�J�'��(�+4�G�K�(��+�+�G�4�4�4�4�4�4�4�4�4� 5� 5� 5� 5� 5� 5����� 5���s*�AB�"A,�,"B�B�C,�,/C'�'C,c�f�|}t|t��sQ t|�����}n.#ttt f$rt d|����d�wxYw |j|}|���std|�d|�����dS#t$rYdSwxYw)NzInvalid file object: zFile descriptor z is used by transport ) � isinstance�intrK�AttributeError� TypeError� ValueErrorr&� is_closingrDr)r'rrKr�s r�_ensure_fd_no_transportz-BaseSelectorEventLoop._ensure_fd_no_transport�s������&�#�&�&� K� K��V�]�]�_�_�-�-����"�I�z�:� K� K� K� �!?��!?�!?�@�@�d�J� K���� &��(��0�I��'�'�)�)� &�"�%�r�%�%� �%�%�&�&�&� &� &��� � � � �D�D� ���s�!;�+A&�* B"�" B0�/B0c��|���tj|||d��} |j�|��}|j|jc}\}}|j�||tjz||f��|�|� ��n8#t$r+|j� |tj|df��YnwxYw|Sr-) � _check_closedr�Handler"rrX�modifyr� EVENT_READ�cancelr�register� r'r�callback�args�handler�mask�reader�writers rrSz!BaseSelectorEventLoop._add_reader s��� ��������x��t�T�:�:�� ��.�(�(��,�,�C� &)�Z��� "�D�"�6�6� �N� !� !�"�d�Y�-A�&A�#)�6�"2� 4� 4� 4��!�� � ������� 4� 4� 4� �N� #� #�B� �(<�%+�T�N� 4� 4� 4� 4� 4� 4����� ��B�2C�Cc�t�|���rdS |j�|��}|j|jc}\}}|t jz}|s|j�|��n|j�||d|f��|�|� ��dSdS#t$rYdSwxYw�NFT) rEr"rrrXrr�� unregisterr�r�r�r'rrr�r�r�s rrIz$BaseSelectorEventLoop._remove_readers��� �>�>� � � ��5� ��.�(�(��,�,�C�&)�Z��� "�D�"�6�6� �Y�)�)� )�D�� @���)�)�"�-�-�-�-���%�%�b�$��v��?�?�?��!�� � �����t��u��� � � ��5�5� ���s�B)�) B7�6B7c��|���tj|||d��} |j�|��}|j|jc}\}}|j�||tjz||f��|�|� ��n8#t$r+|j� |tjd|f��YnwxYw|Sr-) r�rr�r"rrXr�r� EVENT_WRITEr�rr�r�s r� _add_writerz!BaseSelectorEventLoop._add_writer.s��� ��������x��t�T�:�:�� ��.�(�(��,�,�C� &)�Z��� "�D�"�6�6� �N� !� !�"�d�Y�-B�&B�#)�6�"2� 4� 4� 4��!�� � ������� 4� 4� 4� �N� #� #�B� �(=�%)�6�N� 4� 4� 4� 4� 4� 4����� r�c�v� |���rdS |j�|��}|j|jc}\}}|t jz}|s|j�|��n|j�|||df��|�|� ��dSdS#t$rYdSwxYwr�) rEr"rrrXrr�r�r�r�rr�s r�_remove_writerz$BaseSelectorEventLoop._remove_writer>s���'� �>�>� � � ��5� ��.�(�(��,�,�C�&)�Z��� "�D�"�6�6� �Y�*�*� *�D�� @���)�)�"�-�-�-�-���%�%�b�$����?�?�?��!�� � �����t��u��� � � ��5�5� ���s�B*�* B8�7B8c�P� |�|��|j||g|�R�dSr-)r�rS�r'rr�r�s r� add_readerz BaseSelectorEventLoop.add_readerUs<��$� �$�$�R�(�(�(�����X�-��-�-�-�-�-�-r(c�X� |�|��|�|��Sr-)r�rI�r'rs r� remove_readerz#BaseSelectorEventLoop.remove_readerZ�-��'� �$�$�R�(�(�(��"�"�2�&�&�&r(c�P� |�|��|j||g|�R�dSr-)r�r�r�s r� add_writerz BaseSelectorEventLoop.add_writer_s<��%� �$�$�R�(�(�(�����X�-��-�-�-�-�-�-r(c�X� |�|��|�|��Sr-)r�r�r�s r� remove_writerz#BaseSelectorEventLoop.remove_writerdr�r(c�� K� tj|��|jr'|���dkrt d��� |�|��S#t tf$rYnwxYw|���}|� ��}|� |��|� ||j |||��}|� tj|j||�����|�d{V��S�Nr�the socket must be non-blocking�r�)r�_check_ssl_socketrd� gettimeoutr�r[r]r\r�rKr�rS� _sock_recv�add_done_callback� functools�partial�_sock_read_done)r'r/�n�futrr�s r� sock_recvzBaseSelectorEventLoop.sock_recvis���� � �%�d�+�+�+� �;� @�4�?�?�,�,��1�1��>�?�?� ?� ��9�9�Q�<�<� ���!1�2� � � � �D� ����� � �"�"�� �[�[�]�]�� �$�$�R�(�(�(��!�!�"�d�o�s�D�!�D�D�� ��� � �d�2�B�v� F� F� F� H� H� H��y�y�y�y�y�y���A�A0�/A0c�`�|�|���s|�|��dSdSr-)� cancelledr��r'rr�r�s rr�z%BaseSelectorEventLoop._sock_read_done�8�� �>��!1�!1�!3�!3�>� � � �r� "� "� "� "� "� �>r(c�*�|���rdS |�|��}|�|��dS#ttf$rYdSt t f$r�t$r }|�|��Yd}~dSd}~wwxYwr-) �doner[� set_resultr]r\r�r�r�� set_exception)r'r�r/r�rXr�s rr�z BaseSelectorEventLoop._sock_recv�s��� �8�8�:�:� � �F� !��9�9�Q�<�<�D� �N�N�4� � � � � �� �!1�2� � � � �F�F��-�.� � � � �� #� #� #� � � �c� "� "� "� "� "� "� "� "� "����� #�����A�B�B�2B � Bc�� K� tj|��|jr'|���dkrt d��� |�|��S#t tf$rYnwxYw|���}|� ��}|� |��|� ||j |||��}|� tj|j||�����|�d{V��Sr�)rr�rdr�r�� recv_intor]r\r�rKr�rS�_sock_recv_intor�r�r�r�)r'r/�bufr�rr�s r�sock_recv_intoz$BaseSelectorEventLoop.sock_recv_into�s���� � �%�d�+�+�+� �;� @�4�?�?�,�,��1�1��>�?�?� ?� ��>�>�#�&�&� &���!1�2� � � � �D� ����� � �"�"�� �[�[�]�]�� �$�$�R�(�(�(��!�!�"�d�&:�C��s�K�K�� ��� � �d�2�B�v� F� F� F� H� H� H��y�y�y�y�y�y�r�c�*�|���rdS |�|��}|�|��dS#ttf$rYdSt t f$r�t$r }|�|��Yd}~dSd}~wwxYwr-) r�r�r�r]r\r�r�r�r�)r'r�r/r��nbytesr�s rr�z%BaseSelectorEventLoop._sock_recv_into�s��� �8�8�:�:� � �F� #��^�^�C�(�(�F� �N�N�6� "� "� "� "� "�� �!1�2� � � � �F�F��-�.� � � � �� #� #� #� � � �c� "� "� "� "� "� "� "� "� "����� #���r�c�� K� tj|��|jr'|���dkrt d��� |�|��S#t tf$rYnwxYw|���}|� ��}|� |��|� ||j |||��}|� tj|j||�����|�d{V��Sr�)rr�rdr�r��recvfromr]r\r�rKr�rS�_sock_recvfromr�r�r�r�)r'r/�bufsizer�rr�s r� sock_recvfromz#BaseSelectorEventLoop.sock_recvfrom�s���� � �%�d�+�+�+� �;� @�4�?�?�,�,��1�1��>�?�?� ?� ��=�=��)�)� )���!1�2� � � � �D� ����� � �"�"�� �[�[�]�]�� �$�$�R�(�(�(��!�!�"�d�&9�3��g�N�N�� ��� � �d�2�B�v� F� F� F� H� H� H��y�y�y�y�y�y�r�c�*�|���rdS |�|��}|�|��dS#ttf$rYdSt t f$r�t$r }|�|��Yd}~dSd}~wwxYwr-) r�r�r�r]r\r�r�r�r�)r'r�r/r��resultr�s rr�z$BaseSelectorEventLoop._sock_recvfrom�s��� �8�8�:�:� � �F� #��]�]�7�+�+�F� �N�N�6� "� "� "� "� "�� �!1�2� � � � �F�F��-�.� � � � �� #� #� #� � � �c� "� "� "� "� "� "� "� "� "����� #���r�rc��0K� tj|��|jr'|���dkrt d���|st |��} |�||��S#ttf$rYnwxYw|� ��}|� ��}|� |��|� ||j ||||��}|�tj|j||�����|�d{V��Sr�)rr�rdr�r��len� recvfrom_intor]r\r�rKr�rS�_sock_recvfrom_intor�r�r�r�)r'r/r�r�r�rr�s r�sock_recvfrom_intoz(BaseSelectorEventLoop.sock_recvfrom_into�s<���� � �%�d�+�+�+� �;� @�4�?�?�,�,��1�1��>�?�?� ?�� ���X�X�F� ��%�%�c�6�2�2� 2���!1�2� � � � �D� ����� � �"�"�� �[�[�]�]�� �$�$�R�(�(�(��!�!�"�d�&>��T�3�"(�*�*�� ��� � �d�2�B�v� F� F� F� H� H� H��y�y�y�y�y�y�s�A.�.B�Bc�,�|���rdS |�||��}|�|��dS#ttf$rYdSt t f$r�t$r }|�|��Yd}~dSd}~wwxYwr-) r�r�r�r]r\r�r�r�r�)r'r�r/r�r�r�r�s rr�z)BaseSelectorEventLoop._sock_recvfrom_into�s��� �8�8�:�:� � �F� #��'�'��W�5�5�F� �N�N�6� "� "� "� "� "�� �!1�2� � � � �F�F��-�.� � � � �� #� #� #� � � �c� "� "� "� "� "� "� "� "� "����� #���s�A�B�B�3B�Bc ��XK� tj|��|jr'|���dkrt d��� |�|��}n#t tf$rd}YnwxYw|t|��krdS|� ��}|� ��}|� |��|� ||j ||t|��|g��}|�t!j|j||�����|�d{V��Sr�)rr�rdr�r�rbr]r\r�r�rKr�r�� _sock_sendall� memoryviewr�r�r��_sock_write_done)r'r/rXr�r�rr�s r� sock_sendallz"BaseSelectorEventLoop.sock_sendall sH���� � �%�d�+�+�+� �;� @�4�?�?�,�,��1�1��>�?�?� ?� �� � �$���A�A���!1�2� � � ��A�A�A� ���� ��D� � �>�>� �F�� � �"�"�� �[�[�]�]�� �$�$�R�(�(�(��!�!�"�d�&8�#�t�",�T�"2�"2�Q�C�9�9�� ��� � �d�3�R�� G� G� G� I� I� I��y�y�y�y�y�y�s�A�A3�2A3c��|���rdS|d} |�||d���}nQ#ttf$rYdStt f$r�t $r }|�|��Yd}~dSd}~wwxYw||z }|t|��kr|� d��dS||d<dS�Nr) r�rbr]r\r�r�r�r�r�r�)r'r�r/�view�pos�startr�r�s rr�z#BaseSelectorEventLoop._sock_sendall*s��� �8�8�:�:� � �F��A��� �� � �$�u�v�v�,�'�'�A�A���!1�2� � � � �F�F��-�.� � � � �� � � � � � �c� "� "� "� �F�F�F�F�F����� ���� �� �� �C��I�I� � � �N�N�4� � � � � ��C��F�F�Fs�>�B �B �,B�B c��K� tj|��|jr'|���dkrt d��� |�||��S#t tf$rYnwxYw|���}|� ��}|� |��|� ||j ||||��}|� tj|j||�����|�d{V��Sr�)rr�rdr�r��sendtor]r\r�rKr�r�� _sock_sendtor�r�r�r�)r'r/rXr@r�rr�s r� sock_sendtoz!BaseSelectorEventLoop.sock_sendto@s)���� � �%�d�+�+�+� �;� @�4�?�?�,�,��1�1��>�?�?� ?� ��;�;�t�W�-�-� -���!1�2� � � � �D� ����� � �"�"�� �[�[�]�]�� �$�$�R�(�(�(��!�!�"�d�&7��d�D�")�+�+�� ��� � �d�3�R�� G� G� G� I� I� I��y�y�y�y�y�y�s�A�A1�0A1c�.�|���rdS |�|d|��}|�|��dS#ttf$rYdSt t f$r�t$r }|�|��Yd}~dSd}~wwxYwr�) r�r�r�r]r\r�r�r�r�)r'r�r/rXr@r�r�s rr�z"BaseSelectorEventLoop._sock_sendto[s��� �8�8�:�:� � �F� �� � �D�!�W�-�-�A� �N�N�1� � � � � �� �!1�2� � � � �F�F��-�.� � � � �� #� #� #� � � �c� "� "� "� "� "� "� "� "� "����� #���s�A�B�B�4B�Bc���K� tj|��|jr'|���dkrt d���|jt jks!tjrR|jt j kr=|� ||j|j |j |����d{V��}|d\}}}}}|� ��}|�|||�� |�d{V�� d}S#d}wxYw)Nrr�)�family�type�proto�loop)rr�rdr�r�r�rP�AF_INET� _HAS_IPv6�AF_INET6�_ensure_resolvedr�r�r�� _sock_connect)r'r/r@�resolvedrr�s r� sock_connectz"BaseSelectorEventLoop.sock_connectjs+���� � �%�d�+�+�+� �;� @�4�?�?�,�,��1�1��>�?�?� ?� �;�&�.� (� (��%� )�*.�+���*H�*H�!�2�2��� �$�)�4�:��3���������H�#+�1�+� �A�q�!�Q��� � �"�"�� ���3��g�.�.�.� ��9�9�9�9�9�9� ��C�C��$�C�J�J�J�Js �%C0�0C4c���|���} |�|��|�d��n�#ttf$re|�|��|�||j|||��}|�tj |j ||�����Yn�C�B>�B9�4C�9B>�>C�C c���K� tj|��|jr'|���dkrt d���|���}|�||��|�d{V��S)Nrr�)rr�rdr�r�r�� _sock_accept)r'r/r�s r� sock_acceptz!BaseSelectorEventLoop.sock_accept�s����� � �%�d�+�+�+� �;� @�4�?�?�,�,��1�1��>�?�?� ?�� � �"�"�� ���#�t�$�$�$��y�y�y�y�y�y�r(c��|���} |���\}}|�d��|�||f��dS#tt f$re|�|��|�||j||��}|� tj |j ||�����YdSttf$r�t$r }|�|��Yd}~dSd}~wwxYw)NFr�)rKrrrRr�r]r\r�rSrr�r�r�r�r�r�r�r�)r'r�r/rr�r@r�r�s rrz"BaseSelectorEventLoop._sock_accept�sI�� �[�[�]�]�� ,� �K�K�M�M�M�D�'� � � �U� #� #� #� �N�N�D�'�?� +� +� +� +� +�� �!1�2� L� L� L� � (� (�� ,� ,� ,��%�%�b�$�*;�S�$�G�G�F� � !� !��!�$�"6��6�J�J�J� L� L� L� L� L� L��-�.� � � � �� #� #� #� � � �c� "� "� "� "� "� "� "� "� "����� #���s�,A�A2D �D �*D�D c���K�|j|j=|���}|���|����d{V�� |�|j|||d����d{V�� |���|r|���||j|j<S#|���|r|���||j|j<wxYw)NF)�fallback) r&�_sock_fd� is_reading� pause_reading�_make_empty_waiter� sock_sendfile�_sock�_reset_empty_waiter�resume_reading)r'�transp�file�offset�countrs r�_sendfile_nativez&BaseSelectorEventLoop._sendfile_native�s1���� � �V�_� -��*�*�,�,���������'�'�)�)�)�)�)�)�)�)�)� 7��+�+�F�L�$���5:�,�<�<�<�<�<�<�<�<� <� � &� &� (� (� (�� (��%�%�'�'�'�06�D� �V�_� -� -�� � &� &� (� (� (�� (��%�%�'�'�'�06�D� �V�_� -� 6� 6� 6� 6s �$B2�2;C-c�F�|D]�\}}|j|jc}\}}|tjzr4|�2|jr|�|��n|�|��|tjzr4|�2|jr|�|����|�|����dSr-) �fileobjrXrr�� _cancelledrI� _add_callbackr�r�)r'� event_listrr�rr�r�s r�_process_eventsz%BaseSelectorEventLoop._process_events�s���#� /� /�I�C��(+� �S�X� %�G�%�f�f��i�*�*� /�v�/A��$�/��'�'��0�0�0�0��&�&�v�.�.�.��i�+�+� /��0B��$�/��'�'��0�0�0�0��&�&�v�.�.�.�� /� /r(c�|�|�|�����|���dSr-)rIrKrG)r'r/s r� _stop_servingz#BaseSelectorEventLoop._stop_serving�s/�� ���D�K�K�M�M�*�*�*� � � � � � � � r(r-�NNN)r)3r!� __module__� __qualname__rr2r�SSL_HANDSHAKE_TIMEOUT�SSL_SHUTDOWN_TIMEOUTr=rArGrFr#rYrTrfrlrirsr�rSrIr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrr� __classcell__�r s@rrr+s��������� 9�9�9�9�9�9�7�%)�$�7�7�7�7�7� 9=�+� �$��t�"+�"A�!*�!?� +�+�+�+�+�$CG�B�B�B�B� "� "� "� "� "� � � �E�E�E� � � � � � �,�,�,�&#'�t�S�-6�-L�,5�,J�F�F�F�F��D�#�"+�"A�!*�!?� ,)�,)�,)�,)�`�D�"+�"A�!*�!?� -5�-5�-5�-5�^&�&�&�$��� ���*��� ���..�.�.� '�'�'� .�.�.� '�'�'� ���,#�#�#�#�!�!�!� ���*#�#�#�"���.#�#�#�"����2#�#�#�"���>���,���6 � � ����2���.#�#�#�#����* � � �,�,�,�" 7� 7� 7� /� /� /�������r(rc���eZdZdZeZdZd�fd� Zd�Zd�Z d�Z d�Z d�Z d �Z d �Zd �Zd �Zejfd �Zdd�Zd�Zd�Zd�Zd�Z�xZS)�_SelectorTransportiNc����t���||��tj|��|jd< |���|jd<n#t $r d|jd<YnwxYwd|jvr= |���|jd<n#tj $r d|jd<YnwxYw||_ |� ��|_ d|_ |�|��||_|���|_d|_d|_d|_|j�|j���||j|j <dS)NrP�socknamernFr)rrr r|�_extra� getsocknamerc� getpeernamerP�errorrrKr �_protocol_connected� set_protocol�_server�_buffer_factory�_buffer� _conn_lost�_closing�_paused�_attachr&)r'r�r/r0r*r+r s �rrz_SelectorTransport.__init__so��� �������%�%�%� &� 6�t� <� <�� �H�� +�&*�&6�&6�&8�&8�D�K� � #� #��� +� +� +�&*�D�K� � #� #� #� +���� �T�[� (� (� /�*.�*:�*:�*<�*<�� �J�'�'���<� /� /� /�*.�� �J�'�'�'� /������ �� � � � �� �#(�� � ���(�#�#�#��� ��+�+�-�-�� ������ ��� � �<� #� �L� � � "� "� "�*.�����'�'�'s$�A�A5�4A5�B�B;�:B;c���|jjg}|j�|�d��n|jr|�d��|�d|j����|j��|j���s�t|jj |jtj ��}|r|�d��n|�d��t|jj |jtj ��}|rd}nd}|� ��}|�d|�d |�d ���d �d �|����S) N�closed�closingzfd=z read=pollingz read=idle�polling�idlezwrite=z<{}>� )r r!r�appendr5r �_looprErr"rr�r��get_write_buffer_size�format�join)r'�infor;�stater�s r�__repr__z_SelectorTransport.__repr__s]����'�(�� �:� � �K�K�� !� !� !� !� �]� #� �K�K� � "� "� "� � � �)�$�-�)�)�*�*�*� �:� !�$�*�*>�*>�*@�*@� !�*�4�:�+?�+/�=�)�:N�P�P�G�� )�� � �N�+�+�+�+�� � �K�(�(�(�*�4�:�+?�+/�=�+4�+@�B�B�G�� �!������0�0�2�2�G� �K�K�=�%�=�=�7�=�=�=� >� >� >��}�}�S�X�X�d�^�^�,�,�,r(c�0�|�d��dSr-)� _force_closerNs r�abortz_SelectorTransport.abort8s�� ���$�����r(c�"�||_d|_dS�NT)� _protocolr/)r'r0s rr0z_SelectorTransport.set_protocol;s��!���#'�� � � r(c��|jSr-)rLrNs r� get_protocolz_SelectorTransport.get_protocol?s ���~�r(c��|jSr-)r5rNs rr�z_SelectorTransport.is_closingBs ���}�r(c�<�|��� o|j Sr-)r�r6rNs rr z_SelectorTransport.is_readingEs���?�?�$�$�$�9�T�\�)9�9r(c���|���sdSd|_|j�|j��|j���rt jd|��dSdS)NTz%r pauses reading)r r6r@rIr � get_debugr rrNs rr z _SelectorTransport.pause_readingHsq����� � � � �F��� � � �!�!�$�-�0�0�0� �:� � � !� !� 4� �L�,�d� 3� 3� 3� 3� 3� 4� 4r(c���|js|jsdSd|_|�|j|j��|j���rtjd|��dSdS)NFz%r resumes reading) r5r6rSr � _read_readyr@rRr rrNs rrz!_SelectorTransport.resume_readingPsu�� �=� �� � � �F��� � ������(8�9�9�9� �:� � � !� !� 5� �L�-�t� 4� 4� 4� 4� 4� 5� 5r(c��|jrdSd|_|j�|j��|jsQ|xjdz c_|j�|j��|j�|jd��dSdS�NTr) r5r@rIr r3r4r�� call_soon�_call_connection_lostrNs rrGz_SelectorTransport.closeXs��� �=� � �F��� � � �!�!�$�-�0�0�0��|� C� �O�O�q� �O�O� �J� %� %�d�m� 4� 4� 4� �J� � ��!;�T� B� B� B� B� B� C� Cr(c�v�|j�1|d|��t|���|j���dSdS)Nzunclosed transport )�source)r�ResourceWarningrG)r'�_warns r�__del__z_SelectorTransport.__del__bsL�� �:� !� �E�0��0�0�/�$� O� O� O� O� �J� � � � � � � � "� !r(�Fatal error on transportc��t|t��r2|j���rt jd||d���n$|j�||||jd���|�|��dS)Nz%r: %sTr`)rorpr�r0) r�rcr@rRr rr{rLrH)r'r�ros r� _fatal_errorz_SelectorTransport._fatal_errorgs��� �c�7� #� #� ��z�#�#�%�%� E�� �X�t�W�t�D�D�D�D�� �J� -� -�"� �!� �N� /�/� � � � ���#�����r(c�P�|jrdS|jr8|j���|j�|j��|js&d|_|j�|j��|xjdz c_|j�|j |��dSrV) r4r3�clearr@r�r r5rIrWrX)r'r�s rrHz_SelectorTransport._force_closeus��� �?� � �F� �<� 5� �L� � � � � � �J� %� %�d�m� 4� 4� 4��}� 5� �D�M� �J� %� %�d�m� 4� 4� 4� ���1���� � ���T�7��=�=�=�=�=r(c�� |jr|j�|��|j���d|_d|_d|_|j}|�|���d|_dSdS#|j���d|_d|_d|_|j}|�|���d|_wxYwr-)r/rL�connection_lostrrGr@r1�_detach)r'r�r+s rrXz(_SelectorTransport._call_connection_lost�s��� $��'� 4���.�.�s�3�3�3� �J� � � � � ��D�J�!�D�N��D�J��\�F��!���� � � �#�� � � �"�!�� �J� � � � � ��D�J�!�D�N��D�J��\�F��!���� � � �#�� �#�#�#�#s �!A9�9AC c�*�t|j��Sr-)r�r3rNs rrAz(_SelectorTransport.get_write_buffer_size�s���4�<� � � r(c�Z�|���sdS|jj||g|�R�dSr-)r r@rSr�s rrSz_SelectorTransport._add_reader�s>����� � � � �F��� ��r�8�3�d�3�3�3�3�3�3r()NN)r^)r!r!r"�max_size� bytearrayr2rrrFrIr0rNr�r r rrG�warnings�warnr]r`rHrXrArSr%r&s@rr(r(�sE��������H��O� �E�/�/�/�/�/�/�8-�-�-�8 � � �(�(�(�������:�:�:�4�4�4�5�5�5�C�C�C�%�M����� � � � � >� >� >� $� $� $�!�!�!�4�4�4�4�4�4�4r(r(c���eZdZdZejjZ d�fd� Z�fd�Z d�Z d�Z d�Z d�Z d �Zd �Zd �Zd �Z�fd �Zd�Zd�Z�xZS)r.TNc���d|_t���|||||��d|_d|_t j|j��|j� |j j |��|j� |j |j |j��|�(|j� tj|d��dSdSr)�_read_ready_cbrr�_eof� _empty_waiterr� _set_nodelayrr@rWrL�connection_maderSr rTr�_set_result_unless_cancelled)r'r�r/r0r1r*r+r s �rrz!_SelectorSocketTransport.__init__�s����#��� ������t�X�u�f�=�=�=��� �!��� � ���,�,�,� � ���T�^�;�T�B�B�B� � ���T�-�!�]�D�,<� >� >� >� � � �J� � ��!E�!'�� /� /� /� /� /� � r(c���t|tj��r |j|_n |j|_t ���|��dSr-)r�r �BufferedProtocol�_read_ready__get_bufferrn�_read_ready__data_receivedrr0)r'r0r s �rr0z%_SelectorSocketTransport.set_protocol�sP��� �h� � :� ;� ;� B�"&�">�D� � �"&�"A�D� � �����X�&�&�&�&�&r(c�.�|���dSr-)rnrNs rrTz$_SelectorSocketTransport._read_ready�s�� �������r(c���|jrdS |j�d��}t|��st d���n?#t t f$r�t$r!}|�|d��Yd}~dSd}~wwxYw |j � |��}nR#ttf$rYdSt t f$r�t$r!}|�|d��Yd}~dSd}~wwxYw|s|� ��dS |j�|��dS#t t f$r�t$r!}|�|d��Yd}~dSd}~wwxYw)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.)r4rL� get_bufferr�rDr�r�r�r`rr�r]r\�_read_ready__on_eof�buffer_updated)r'r�r�r�s rrvz0_SelectorSocketTransport._read_ready__get_buffer�s�� �?� � �F� ��.�+�+�B�/�/�C��s�8�8� L�"�#J�K�K�K� L���-�.� � � � �� � � � � � ��F� H� H� H� �F�F�F�F�F����� ����  ��Z�)�)�#�.�.�F�F���!1�2� � � � �F�F��-�.� � � � �� � � � � � �c�#I� J� J� J� �F�F�F�F�F����� ����� � � $� $� &� &� &� �F� L� �N� )� )�&� 1� 1� 1� 1� 1���-�.� � � � �� L� L� L� � � ��J� L� L� L� L� L� L� L� L� L����� L���sM�8A�B�A;�;B�B�C.�3C.� C)�)C.� D&�&E"�E�E"c���|jrdS |j�|j��}nR#tt f$rYdSt tf$r�t$r!}|� |d��Yd}~dSd}~wwxYw|s|� ��dS |j � |��dS#t tf$r�t$r!}|� |d��Yd}~dSd}~wwxYw)Nr{z2Fatal error: protocol.data_received() call failed.) r4rr[rhr]r\r�r�r�r`r}rL� data_received)r'rXr�s rrwz3_SelectorSocketTransport._read_ready__data_received�sp�� �?� � �F� ��:�?�?�4�=�1�1�D�D���!1�2� � � � �F�F��-�.� � � � �� � � � � � �c�#I� J� J� J� �F�F�F�F�F����� ����� � � $� $� &� &� &� �F� K� �N� (� (�� .� .� .� .� .���-�.� � � � �� K� K� K� � � ��I� K� K� K� K� K� K� K� K� K����� K���s2�+�A:�A:�A5�5A:�B2�2C.� C)�)C.c��|j���rtjd|�� |j���}n?#t tf$r�t$r!}|� |d��Yd}~dSd}~wwxYw|r!|j� |j ��dS|� ��dS)Nz%r received EOFz1Fatal error: protocol.eof_received() call failed.) r@rRr rrL� eof_receivedr�r�r�r`rIr rG)r'� keep_openr�s rr}z,_SelectorSocketTransport._read_ready__on_eof�s��� �:� � � !� !� 2� �L�*�D� 1� 1� 1� ���3�3�5�5�I�I���-�.� � � � �� � � � � � ��H� J� J� J� �F�F�F�F�F����� ���� � � �J� %� %�d�m� 4� 4� 4� 4� 4� �J�J�L�L�L�L�Ls�A � B�%B�Bc� �t|tttf��s$t dt |��j�����|jrtd���|j �td���|sdS|j r;|j tj krtjd��|xj dz c_ dS|js� |j�|��}||d�}|sdSnQ#t$t&f$rYn>t(t*f$r�t,$r!}|�|d��Yd}~dSd}~wwxYw|j�|j|j��|j�|��|���dS)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)r��bytesrir�r�r�r!rorDrpr4r�!LOG_THRESHOLD_FOR_CONNLOST_WRITESr �warningr3rrbr]r\r�r�r�r`r@r�r � _write_ready�extend�_maybe_pause_protocol)r'rXr�r�s r�writez_SelectorSocketTransport.writes����$�� �:� >�?�?� <��;�#'��:�:�#6�;�;�<�<� <� �9� H��F�G�G� G� � � )��I�J�J� J�� � �F� �?� ���)�"M�M�M���@�A�A�A� �O�O�q� �O�O� �F��|� E� ��J�O�O�D�)�)���A�B�B�x�����F���$�%5�6� � � ���� 1�2� � � �� � � � ��!�!�#�'N�O�O�O����������� ���� �J� "� "�4�=�$�2C� D� D� D� � ���D�!�!�!� �"�"�$�$�$�$�$s�C*�*D8�=D8�D3�3D8c�"�|jrdS |j�|j��}|r |jd|�=|���|js�|j�|j��|j�|j� d��|j r|� d��dS|j r(|j� tj��dSdSdS#t t"f$rYdSt$t&f$r�t($r�}|j�|j��|j���|�|d��|j� |j�|��Yd}~dSYd}~dSd}~wwxYw)Nr�)r4rrbr3�_maybe_resume_protocolr@r�r rpr�r5rXro�shutdownrP�SHUT_WRr]r\r�r�r�rbr`r�)r'r�r�s rr�z%_SelectorSocketTransport._write_ready8s��� �?� � �F� 8�� ���� �-�-�A�� %��L��!��$� � '� '� )� )� )��<� 8�� �)�)�$�-�8�8�8��%�1��&�1�1�$�7�7�7��=�8��.�.�t�4�4�4�4�4��Y�8��J�'�'���7�7�7�7�7� 8� 8� 8�8��) �!1�2� � � � �D�D��-�.� � � � �� 6� 6� 6� �J� %� %�d�m� 4� 4� 4� �L� � � � � � � � �c�#J� K� K� K��!�-��"�0�0��5�5�5�5�5�5�5�5�5�.�-�-�-�-�-�����  6���s�C � F�4F�A/F � Fc��|js|jrdSd|_|js&|j�t j��dSdSrK)r5ror3rr�rPr�rNs r� write_eofz"_SelectorSocketTransport.write_eofVsS�� �=� �D�I� � �F��� ��|� 0� �J� � ��� /� /� /� /� /� 0� 0r(c��dSrKrVrNs r� can_write_eofz&_SelectorSocketTransport.can_write_eof]s���tr(c���t���|��|j�)|j�t d����dSdS)NzConnection is closed by peer)rrXrpr��ConnectionError)r'r�r s �rrXz._SelectorSocketTransport._call_connection_lost`sb��� ���%�%�c�*�*�*� � � )� � � ,� ,�� >�?�?� A� A� A� A� A� *� )r(c��|j�td���|j���|_|js|j�d��|jS)NzEmpty waiter is already set)rprDr@r�r3r�rNs rrz+_SelectorSocketTransport._make_empty_waiterfsZ�� � � )��<�=�=� =�!�Z�5�5�7�7����|� 0� � � )� )�$� /� /� /��!�!r(c��d|_dSr-)rprNs rrz,_SelectorSocketTransport._reset_empty_waiterns��!����r(r )r!r!r"�_start_tls_compatibler� _SendfileMode� TRY_NATIVE�_sendfile_compatiblerr0rTrvrwr}r�r�r�r�rXrrr%r&s@rr.r.�s*������� ��$�2�=��48�$(�/�/�/�/�/�/�,'�'�'�'�'����#L�#L�#L�JK�K�K�2���*%%�%%�%%�N8�8�8�<0�0�0����A�A�A�A�A� "�"�"�"�"�"�"�"�"�"r(r.c�L��eZdZejZ d�fd� Zd�Zd�Zdd�Z d�Z �xZ S) r?Nc�`��t���||||��||_d|_|j�|jj|��|j�|j|j |j ��|�(|j�tj |d��dSdSr�) rr�_address� _buffer_sizer@rWrLrrrSr rTrrs)r'r�r/r0r@r1r*r s �rrz#_SelectorDatagramTransport.__init__vs���� ������t�X�u�5�5�5��� ���� � ���T�^�;�T�B�B�B� � ���T�-�!�]�D�,<� >� >� >� � � �J� � ��!E�!'�� /� /� /� /� /� � r(c��|jSr-)r�rNs rrAz0_SelectorDatagramTransport.get_write_buffer_size�s ��� � r(c��|jrdS |j�|j��\}}|j�||��dS#t tf$rYdSt$r%}|j� |��Yd}~dSd}~wttf$r�t$r!}|� |d��Yd}~dSd}~wwxYw)Nz&Fatal read error on datagram transport)r4rr�rhrL�datagram_receivedr]r\rc�error_receivedr�r�r�r`�r'rXr�r�s rrTz&_SelectorDatagramTransport._read_ready�s�� �?� � �F� 9���,�,�T�]�;�;�J�D�$� �N� ,� ,�T�4� 8� 8� 8� 8� 8�� �!1�2� � � � �D�D�� /� /� /� �N� )� )�#� .� .� .� .� .� .� .� .� .������-�.� � � � �� M� M� M� � � �c�#K� L� L� L� L� L� L� L� L� L����� M���s)�"A � C� C�'B�C�%C�Cc� �t|tttf��s$t dt |��j�����|sdS|jr)|d|jfvrtd|j�����|j}|j rB|jr;|j tj krtj d��|xj dz c_ dS|js� |jdr|j�|��n|j�||��dS#t&t(f$r(|j�|j|j��Ynkt2$r%}|j�|��Yd}~dSd}~wt8t:f$r�t<$r!}|�|d��Yd}~dSd}~wwxYw|j� t|��|f��|xj!tE|��z c_!|�#��dS)Nr�z!Invalid address: must be None or r�rrn�'Fatal write error on datagram transport)$r�r�rir�r�r�r!r�r�r4rr�r r�r3r+rrbr�r]r\r@r�r � _sendto_readyrcrLr�r�r�r�r`r?r�r�r�r�s rr�z!_SelectorDatagramTransport.sendto�si���$�� �:� >�?�?� <��;�#'��:�:�#6�;�;�<�<� <�� � �F� �=� !��D�$�-�0�0�0� �G�� �G�G�I�I�I��=�D� �?� �t�}� ���)�"M�M�M���@�A�A�A� �O�O�q� �O�O� �F��|� � ��;�z�*�2��J�O�O�D�)�)�)�)��J�%�%�d�D�1�1�1����#�%5�6� J� J� J�� �&�&�t�}�d�6H�I�I�I�I�I�� � � ���-�-�c�2�2�2������������ 1�2� � � �� � � � ��!�!��B�D�D�D����������� ���� � ���U�4�[�[�$�/�0�0�0� ���S��Y�Y�&��� �"�"�$�$�$�$�$s+� AD�6F1� F1�E2�2F1�F,�,F1c�D�|j�r=|j���\}}|xjt|��zc_ |jdr|j�|��n|j�||��n�#ttf$r<|j� ||f��|xjt|��z c_Ynst$r%}|j � |��Yd}~dSd}~wttf$r�t $r!}|�|d��Yd}~dSd}~wwxYw|j��=|���|js=|j�|j��|jr|�d��dSdSdS)Nrnr�)r3�popleftr�r�r+rrbr�r]r\� appendleftrcrLr�r�r�r�r`r�r@r�r r5rXr�s rr�z(_SelectorDatagramTransport._sendto_ready�s����l� ���-�-�/�/�J�D�$� � � ��T��� *� � � ��;�z�*�2��J�O�O�D�)�)�)�)��J�%�%�d�D�1�1�1���#�%5�6� � � �� �'�'��t� �5�5�5��!�!�S��Y�Y�.�!�!���� � � ���-�-�c�2�2�2������������ 1�2� � � �� � � � ��!�!��B�D�D�D����������� ����#�l� �, �#�#�%�%�%��|� 1� �J� %� %�d�m� 4� 4� 4��}� 1��*�*�4�0�0�0�0�0� 1� 1� 1� 1s,�AB�A D;� D;�C<�<D;�D6�6D;r r-) r!r!r"� collections�dequer2rrArTr�r�r%r&s@rr?r?rs��������!�'�O�59�$(� /� /� /� /� /� /�!�!�!�9�9�9� *%�*%�*%�*%�X1�1�1�1�1�1�1r(r?)�__all__r�rvr�rrPrjr$�ssl� ImportError�rrrrr r r r �logr r� BaseEventLoopr�_FlowControlMixin� Transportr(r.r?rVr(r�r�s%��� #������ � � � ��������� � � � �����������J�J�J�J������ �C�C�C�����������������������������������������������������������(�(�(�F �F �F �F �F �K�5�F �F �F �Ra4�a4�a4�a4�a4��5�#�-�a4�a4�a4�HW"�W"�W"�W"�W"�1�W"�W"�W"�tl1�l1�l1�l1�l1�!3�l1�l1�l1�l1�l1s �&�0�0