HEX
Server: Apache
System: Linux bd12.noc223.com 4.18.0-553.121.1.lve.el8.x86_64 #1 SMP Thu Apr 30 16:40:41 UTC 2026 x86_64
User: handcraf (1693)
PHP: 8.1.28
Disabled: NONE
Upload Files
File: //opt/alt/python312/lib64/python3.12/asyncio/__pycache__/windows_events.cpython-312.opt-1.pyc
�

�h�e�}���dZddlZejdk7red��ddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
mZddl
mZddl
mZdd	l
mZdd
l
mZddl
mZddl
mZdd
l
mZddlmZdZej2Zej4ZdZdZdZdZGd�dej>�Z Gd�dej>�Z!Gd�de!�Z"Gd�de!�Z#Gd�de$�Z%Gd�dejL�Z'Gd �d!ejP�Z)Gd"�d#�Z*Gd$�d%ejV�Z,e'Z-Gd&�d'ej\�Z/Gd(�d)ej\�Z0e0Z1y)*z.Selector and proactor event loops for Windows.�N�win32z
win32 only�)�events)�base_subprocess)�futures)�
exceptions)�proactor_events)�selector_events)�tasks)�
windows_utils)�logger)�SelectorEventLoop�ProactorEventLoop�IocpProactor�DefaultEventLoopPolicy�WindowsSelectorEventLoopPolicy�WindowsProactorEventLoopPolicyi�i�g����MbP?g�������?c�X��eZdZdZdd��fd�
Z�fd�Zd�Zd
�fd�	Z�fd�Z�fd	�Z	�xZ
S)�_OverlappedFuturez�Subclass of Future which represents an overlapped operation.

    Cancelling it will immediately cancel the overlapped operation.
    N��loopc�f��t�|�|��|jr
|jd=||_y�Nr���)�super�__init__�_source_traceback�_ov)�self�ovr�	__class__s   ��=/opt/alt/python312/lib64/python3.12/asyncio/windows_events.pyrz_OverlappedFuture.__init__6s1���
���d��#��!�!��&�&�r�*����c����t�|��}|j�H|jjrdnd}|j	dd|�d|jj
d�d��|S)N�pending�	completedrzoverlapped=<z, �#x�>)r�
_repr_inforr%�insert�address�r�info�stater!s   �r"r)z_OverlappedFuture._repr_info<s\����w�!�#���8�8��!%���!1�!1�I�{�E��K�K��\�%���4�8�8�3C�3C�B�2G�q�I�J��r#c��|j�y	|jj�d|_y#t$rM}d||d�}|jr|j|d<|jj|�Yd}~d|_yd}~wwxYw)Nz&Cancelling an overlapped future failed��message�	exception�future�source_traceback)r�cancel�OSErrorr�_loop�call_exception_handler)r�exc�contexts   r"�_cancel_overlappedz$_OverlappedFuture._cancel_overlappedCs����8�8���
	7��H�H�O�O�������	7�C� ���G�
�%�%�.2�.D�.D��*�+��J�J�-�-�g�6�6�����	7�s�1�	B�<B�Bc�D��|j�t�|�	|��S�N)�msg)r;rr5�rr>r!s  �r"r5z_OverlappedFuture.cancelSs ������!��w�~�#�~�&�&r#c�D��t�|�|�|j�y�N)r�
set_exceptionr;�rr2r!s  �r"rBz_OverlappedFuture.set_exceptionWs���
���i�(����!r#c�2��t�|�|�d|_yrA)r�
set_resultr�r�resultr!s  �r"rEz_OverlappedFuture.set_result[s���
���6�"���r#rA)�__name__�
__module__�__qualname__�__doc__rr)r;r5rBrE�
__classcell__�r!s@r"rr0s0����
$(���� '�"��r#rc�d��eZdZdZdd��fd�
Zd�Z�fd�Zd�Zd�Zd�fd	�	Z	�fd
�Z
�fd�Z�xZS)
�_BaseWaitHandleFuturez2Subclass of Future which represents a wait handle.Nrc���t�|�|��|jr
|jd=||_||_||_d|_y)NrrT)rrrr�_handle�_wait_handle�_registered)rr �handle�wait_handlerr!s     �r"rz_BaseWaitHandleFuture.__init__csL���
���d��#��!�!��&�&�r�*�������'��� ��r#c�d�tj|jd�tjk(S�Nr)�_winapi�WaitForSingleObjectrQ�
WAIT_OBJECT_0�rs r"�_pollz_BaseWaitHandleFuture._pollqs)���+�+�D�L�L�!�<��%�%�&�	'r#c���t�|��}|jd|jd���|j�%|j	�rdnd}|j|�|j
�|jd|j
d���|S)Nzhandle=r'�signaled�waitingzwait_handle=)rr)�appendrQr\rRr,s   �r"r)z _BaseWaitHandleFuture._repr_infovs|����w�!�#�����g�d�l�l�2�.�/�0��<�<�#�"&�*�*�,�J�I�E��K�K������(��K�K�,�t�'8�'8��&<�=�>��r#c��d|_yrA)r)r�futs  r"�_unregister_wait_cbz)_BaseWaitHandleFuture._unregister_wait_cb�s����r#c��|jsyd|_|j}d|_	tj|�|jd�y#t$rh}|j
tjk7rAd||d�}|jr|j|d<|jj|�Yd}~yYd}~�~d}~wwxYw�NFz$Failed to unregister the wait handler0r4)rSrR�_overlapped�UnregisterWaitr6�winerror�ERROR_IO_PENDINGrr7r8rc�rrUr9r:s    r"�_unregister_waitz&_BaseWaitHandleFuture._unregister_wait�s������� ����'�'�� ���	��&�&�{�3�	
� � ��&���
	��|�|�{�;�;�;�E�!$�"���
�)�)�26�2H�2H�G�.�/��
�
�1�1�'�:��<��
	�s�A�	C�AB<�<Cc�D��|j�t�|�	|��Sr=)rkrr5r?s  �r"r5z_BaseWaitHandleFuture.cancel�s ��������w�~�#�~�&�&r#c�D��|j�t�|�	|�yrA)rkrrBrCs  �r"rBz#_BaseWaitHandleFuture.set_exception�s�������
���i�(r#c�D��|j�t�|�	|�yrA)rkrrErFs  �r"rEz _BaseWaitHandleFuture.set_result�s�������
���6�"r#rA)
rHrIrJrKrr\r)rcrkr5rBrErLrMs@r"rOrO`s6���<�8<� �'�
��
'�0'�)�#�#r#rOc�B��eZdZdZdd��fd�
Zd�Z�fd�Z�fd�Z�xZS)�_WaitCancelFuturezoSubclass of Future which represents a wait for the cancellation of a
    _WaitHandleFuture using an event.
    Nrc�:��t�|�||||��d|_y)Nr)rr�_done_callback)rr �eventrUrr!s     �r"rz_WaitCancelFuture.__init__�s!���
����U�K�d��;�"��r#c��td��)Nz'_WaitCancelFuture must not be cancelled)�RuntimeErrorr[s r"r5z_WaitCancelFuture.cancel�s���D�E�Er#c�`��t�|�|�|j�|j|�yyrA)rrErrrFs  �r"rEz_WaitCancelFuture.set_result�s/���
���6�"����*�����%�+r#c�`��t�|�|�|j�|j|�yyrA)rrBrrrCs  �r"rBz_WaitCancelFuture.set_exception�s/���
���i�(����*�����%�+r#)	rHrIrJrKrr5rErBrLrMs@r"rprp�s'����8<�#�
F�&�
&�&r#rpc�4��eZdZdd��fd�
Z�fd�Zd�Z�xZS)�_WaitHandleFutureNrc���t�|�||||��||_d|_t	j
dddd�|_d|_y)NrTF)rr�	_proactor�_unregister_proactorrf�CreateEvent�_event�
_event_fut)rr rTrU�proactorrr!s      �r"rz_WaitHandleFuture.__init__�sG���
����V�[�t��<�!���$(��!�!�-�-�d�D�%��F�����r#c����|j�-tj|j�d|_d|_|jj|j�d|_t�|�!|�yrA)	r~rX�CloseHandlerr{�_unregisterrrrc)rrbr!s  �r"rcz%_WaitHandleFuture._unregister_wait_cb�sY����;�;�"�������,��D�K�"�D�O�	
���"�"�4�8�8�,����
��#�C�(r#c���|jsyd|_|j}d|_	tj||j�|jj|j|j�|_y#t
$rh}|jtjk7rAd||d�}|jr|j|d<|jj|�Yd}~yYd}~��d}~wwxYwre)rSrRrf�UnregisterWaitExr~r6rhrirr7r8r{�_wait_cancelrcrrjs    r"rkz"_WaitHandleFuture._unregister_wait�s������� ����'�'�� ���	��(�(��d�k�k�B��.�.�5�5�d�k�k�6:�6N�6N�P�����
	��|�|�{�;�;�;�E�!$�"���
�)�)�26�2H�2H�G�.�/��
�
�1�1�'�:��<��
	�s� A?�?	C0�AC+�+C0)rHrIrJrrcrkrLrMs@r"ryry�s���BF��)�$Pr#ryc�2�eZdZdZd�Zd�Zd�Zd�Zd�ZeZ	y)�
PipeServerzXClass representing a pipe server.

    This is much like a bound, listening socket.
    c��||_tj�|_d|_d|_|j
d�|_y�NT)�_address�weakref�WeakSet�_free_instances�_pipe�_accept_pipe_future�_server_pipe_handle)rr+s  r"rzPipeServer.__init__�s;����
�&���0�����
�#'�� ��-�-�d�3��
r#c�L�|j|jd�c}|_|S)NF)r�r�)r�tmps  r"�_get_unconnected_pipez PipeServer._get_unconnected_pipes%��
�*�*�d�&>�&>�u�&E���T�Z��
r#c
�,�|j�rytjtjz}|r|tjz}tj
|j|tjtjztjztjtjtjtjtj�}tj|�}|j j#|�|SrA)�closedrX�PIPE_ACCESS_DUPLEX�FILE_FLAG_OVERLAPPED�FILE_FLAG_FIRST_PIPE_INSTANCE�CreateNamedPiper��PIPE_TYPE_MESSAGE�PIPE_READMODE_MESSAGE�	PIPE_WAIT�PIPE_UNLIMITED_INSTANCESr�BUFSIZE�NMPWAIT_WAIT_FOREVER�NULL�
PipeHandler��add)r�first�flags�h�pipes     r"r�zPipeServer._server_pipe_handle
s����;�;�=���*�*�W�-I�-I�I����W�:�:�:�E��#�#��M�M�5��%�%��(E�(E�E����
��,�,��!�!�=�#8�#8��(�(�'�,�,�

8���'�'��*����� � ��&��r#c��|jduSrA)r�r[s r"r�zPipeServer.closeds���
�
��%�&r#c�
�|j�!|jj�d|_|j�J|jD]}|j	��d|_d|_|jj
�yyrA)r�r5r�r��closer��clear)rr�s  r"r�zPipeServer.close"su���#�#�/��$�$�+�+�-�'+�D�$��=�=�$��,�,�
���
�
��
��D�J� �D�M�� � �&�&�(�%r#N)
rHrIrJrKrr�r�r�r��__del__�r#r"r�r��s'���4���$'�
)��Gr#r�c��eZdZdZy)�_WindowsSelectorEventLoopz'Windows version of selector event loop.N)rHrIrJrKr�r#r"r�r�1s��1r#r�c�D��eZdZdZd�fd�	Z�fd�Zd�Zd�Z	dd�Z�xZ	S)rz2Windows version of proactor event loop using IOCP.c�<��|�
t�}t�|�	|�yrA)rrr)rr�r!s  �r"rzProactorEventLoop.__init__8s�����#�~�H�
����"r#c����	|j|j�t�|�
�|j�U|jj
}|jj
�|�|jj|�d|_yy#|j�U|jj
}|jj
�|�|jj|�d|_wwxYwrA)	�	call_soon�_loop_self_readingr�run_forever�_self_reading_futurerr5r{r�)rr r!s  �r"r�zProactorEventLoop.run_forever=s����	1��N�N�4�2�2�3��G��!��(�(�4��.�.�2�2���)�)�0�0�2��>��N�N�.�.�r�2�,0��)�5��t�(�(�4��.�.�2�2���)�)�0�0�2��>��N�N�.�.�r�2�,0��)�5�s�)B�A#C1c��K�|jj|�}|�d{���}|�}|j||d|i��}||fS7�%�w)N�addr��extra)r{�connect_pipe�_make_duplex_pipe_transport)r�protocol_factoryr+�fr��protocol�transs       r"�create_pipe_connectionz(ProactorEventLoop.create_pipe_connectionPsZ�����N�N�'�'��0���w��#�%���0�0��x�8>��7H�1�J���h���	�s�!A�A	�&Ac��f�����K�t���d�����fd�	��j���gS�w)Nc�J��d}	|ri|j�}�jj|��j�r|j	�y��}�j||d�i���j
�}|�y�jj|�}|�_	|j��y#t$r9|r#|j�dk7r|j	��j��Yyt$rz}|r9|j�dk7r&�jd||d��|j	�n$�j rt#j$d|d���j��Yd}~yd}~wt&j($r|r|j	�YyYywxYw)	Nr�r�rzPipe accept failed)r1r2r�zAccept pipe failed on pipe %rT)�exc_info)rGr��discardr�r�r�r�r{�accept_piper��add_done_callback�BrokenPipeError�filenor�r6r8�_debugr
�warningr�CancelledError)	r�r�r�r9r+�loop_accept_piper�r�servers	    �����r"r�z>ProactorEventLoop.start_serving_pipe.<locals>.loop_accept_pipe[st����D�)
6���8�8�:�D��*�*�2�2�4�8��}�}���
�
���/�1�H��4�4��h�v�w�.?�5�A��3�3�5���<���N�N�.�.�t�4��*./��*��#�#�$4�5��+#�
1��D�K�K�M�R�/��J�J�L����/�0��
1��D�K�K�M�R�/��/�/�#7�%(� $�1��
�J�J�L��[�[��N�N�#B�#'�$�8����/�0�0���,�,�
!���J�J�L��
!�s1�A
B7�/B7�B7�7?F"�8F"�A0E5�5(F"�!F"rA)r�r�)rr�r+r�r�s```@@r"�start_serving_pipez$ProactorEventLoop.start_serving_pipeXs2������G�$��+	6�+	6�Z	
���'�(��x��s�*1c	
��K�|j�}
t||||||||f|
|d�|	��}	|
�d{���|S7�#ttf$r�t$r+|j�|j
��d{���7�wxYw�w)N)�waiterr�)�
create_future�_WindowsSubprocessTransport�
SystemExit�KeyboardInterrupt�
BaseExceptionr��_wait)rr��args�shell�stdin�stdout�stderr�bufsizer��kwargsr��transps            r"�_make_subprocess_transportz,ProactorEventLoop._make_subprocess_transport�s������#�#�%��,�T�8�T�5�-2�F�F�G�7�4:�%�7�06�7��	��L�L��
�
���-�.�	���	��L�L�N��,�,�.� � ��	�s1�'A>�8�6�8�A>�8�;A;�3A6�4A;�;A>rA)
rHrIrJrKrr�r�r�r�rLrMs@r"rr5s%���<�#�
1�&�1�j04�r#rc���eZdZdZefd�Zd�Zd�Zd�Zd d�Z	d�Z
ed	��Zd!d
�Z
d!d�Zd!d�Zd!d
�Zd"d�Zd!d�Zd�Zd�Zd�Zd�Zd�Zd d�Zd�Zd�Zd�Zd�Zd�Zd�Zd d�Zd�Z d�Z!d�Z"y)#rz#Proactor implementation using IOCP.c��d|_g|_tjtjt
d|�|_i|_tj�|_
g|_tj�|_yrW)
r7�_resultsrf�CreateIoCompletionPort�INVALID_HANDLE_VALUEr��_iocp�_cacher�r�rS�
_unregistered�_stopped_serving)r�concurrencys  r"rzIocpProactor.__init__�s_����
���
� �7�7��,�,�d�A�{�D��
����"�?�?�,������ '��� 1��r#c�2�|j�td��y)NzIocpProactor is closed)r�rur[s r"�
_check_closedzIocpProactor._check_closed�s���:�:���7�8�8�r#c���dt|j�zdt|j�zg}|j�|j	d�d|j
j�ddj|��d�S)Nzoverlapped#=%sz
result#=%sr��<� r()�lenr�r�r�r`r!rH�join)rr-s  r"�__repr__zIocpProactor.__repr__�s_�� �3�t�{�{�#3�3��s�4�=�=�1�1�3���:�:���K�K��!�� �N�N�3�3�S�X�X�d�^�D�Dr#c��||_yrA)r7)rrs  r"�set_loopzIocpProactor.set_loop�s	����
r#Nc�z�|js|j|�|j}g|_	|d}S#d}wxYwrA)r�r\)r�timeoutr�s   r"�selectzIocpProactor.select�s:���}�}��J�J�w���m�m����
�	���C��$�C�s�6�:c�\�|jj�}|j|�|SrA)r7r�rE)r�valuerbs   r"�_resultzIocpProactor._result�s%���j�j�&�&�(�����u���
r#c���	|j�S#t$rD}|jtjtj
fvrt
|j���d}~wwxYwrA��	getresultr6rhrf�ERROR_NETNAME_DELETED�ERROR_OPERATION_ABORTED�ConnectionResetErrorr��r��keyr r9s    r"�finish_socket_funczIocpProactor.finish_socket_func�sY��	��<�<�>�!���	��|�|�� A� A� +� C� C� E�E�*�C�H�H�5�5���	����	A�?A�Ac��|j|�tjt�}	t	|t
j
�r"|j
|j�||�n |j|j�|�|j|||j�S#t$r|jd�cYSwxYw)Nr#)
�_register_with_iocprf�
Overlappedr��
isinstance�socket�WSARecvr��ReadFiler�r��	_registerr�r�conn�nbytesr�r s     r"�recvzIocpProactor.recv�s���� � ��&�
�
#�
#�D�
)��	%��$��
�
�.��
�
�4�;�;�=�&�%�8����D�K�K�M�6�2��~�~�b�$��(?�(?�@�@���	%��<�<��$�$�	%���AB%�%C�Cc��|j|�tjt�}	t	|t
j
�r"|j
|j�||�n |j|j�|�|j|||j�S#t$r|jd�cYSwxYwrW)
rrfrr�rr	�WSARecvIntor��ReadFileIntor�r�rr�rr�bufr�r s     r"�	recv_intozIocpProactor.recv_into�s���� � ��&�
�
#�
#�D�
)��	#��$��
�
�.����t�{�{�}�c�5�9�������
�s�3��~�~�b�$��(?�(?�@�@���	#��<�<��?�"�	#�rc��|j|�tjt�}	|j	|j�||�|j|||j�S#t$r|jd�cYSwxYw)N)r#N)
rrfrr��WSARecvFromr�r�r�rrr
s     r"�recvfromzIocpProactor.recvfrom�sv��� � ��&�
�
#�
#�D�
)��	-��N�N�4�;�;�=�&�%�8��~�~�b�$��(?�(?�@�@���	-��<�<��,�,�	-�s�!A*�*B�Bc��|j|�tjt�}	|j	|j�||�d�}|j|||�S#t$r|jd�cYSwxYw)N�rNc���	|j�S#t$rD}|jtjtj
fvrt
|j���d}~wwxYwrAr�rs    r"�finish_recvz/IocpProactor.recvfrom_into.<locals>.finish_recvsY��
��|�|�~�%���
��<�<�K�$E�$E�$/�$G�$G�$I�I�.����9�9���
�r)	rrfrr��WSARecvFromIntor�r�r�r)rrrr�r rs      r"�
recvfrom_intozIocpProactor.recvfrom_into�sw��� � ��&�
�
#�
#�D�
)��	+����t�{�{�}�c�5�9�	��~�~�b�$��4�4���	+��<�<�	�*�*�	+�s�!A#�#B�?Bc���|j|�tjt�}|j	|j�|||�|j
|||j�SrA)rrfrr��	WSASendTor�rr)rrrr�r�r s      r"�sendtozIocpProactor.sendto
sQ��� � ��&�
�
#�
#�D�
)��
���T�[�[�]�C���5��~�~�b�$��(?�(?�@�@r#c�H�|j|�tjt�}t	|t
j
�r"|j
|j�||�n |j|j�|�|j|||j�SrA)rrfrr�rr	�WSASendr��	WriteFilerrrs     r"�sendzIocpProactor.sendsq��� � ��&�
�
#�
#�D�
)���d�F�M�M�*��J�J�t�{�{�}�c�5�1��L�L������,��~�~�b�$��(?�(?�@�@r#c�|���|j��|j�j��tjt
�}|j
�j��j����fd�}d�}|j|�|�}||��}tj||j��|S)Nc�,��|j�tjd�j��}�j	t
jtj|��j�j����j�fS)Nz@P)r��struct�packr��
setsockoptr	�
SOL_SOCKETrf�SO_UPDATE_ACCEPT_CONTEXT�
settimeout�
gettimeout�getpeername)r�rr rr�listeners    ��r"�
finish_acceptz*IocpProactor.accept.<locals>.finish_accept%sl����L�L�N��+�+�d�H�O�O�$5�6�C��O�O�F�-�-�'�@�@�#�
G��O�O�H�/�/�1�2���)�)�+�+�+r#c��vK�	|�d{���y7�#tj$r|j��wxYw�wrA)rr�r�)r3rs  r"�accept_coroz(IocpProactor.accept.<locals>.accept_coro.s2����
������,�,�
��
�
���
�s �9����9��%6�9r)r�_get_accept_socket�familyrfrr��AcceptExr�rr�
ensure_futurer7)rr2r r3r5r3�corors `     @r"�acceptzIocpProactor.accepts����� � ��*��&�&�x���7��
�
#�
#�D�
)��
���H�O�O�%�t�{�{�}�5�	,�	�����H�m�<���6�4�(��
���D�t�z�z�2��
r#c����jtjk(rQtj�j�|�|jj�}|jd�|S|j��	tj�j��j�tj"t$�}|j'�j�|��fd�}|j)|�|�S#t$r?}|jtjk7r��j!�ddk(r�Yd}~��d}~wwxYw)Nrrc���|j��jtjtj
d��SrW)r�r,r	r-rf�SO_UPDATE_CONNECT_CONTEXT)r�rr rs   �r"�finish_connectz,IocpProactor.connect.<locals>.finish_connectQs1����L�L�N��O�O�F�-�-�'�A�A�1�
F��Kr#)�typer	�
SOCK_DGRAMrf�
WSAConnectr�r7r�rEr�	BindLocalr7r6rh�errno�	WSAEINVAL�getsocknamerr��	ConnectExr)rrr+rb�er r?s `     r"�connectzIocpProactor.connect;s����9�9��)�)�)�
�"�"�4�;�;�=�'�:��*�*�*�*�,�C��N�N�4� ��J�� � ��&�	��!�!�$�+�+�-����=��
#�
#�D�
)��
���T�[�[�]�G�,�	��~�~�b�$��7�7��!�	��z�z�U�_�_�,�����!�!�$��)��*��		�s�.D�	E	�
5E�E	c	�6�|j|�tjt�}|dz}|dz	dz}|j	|j�t
j|j��|||dd�|j|||j�S)Nl��� r)
rrfrr��TransmitFiler��msvcrt�
get_osfhandlerr)r�sock�file�offset�countr �
offset_low�offset_highs        r"�sendfilezIocpProactor.sendfileZs���� � ��&�
�
#�
#�D�
)���k�)�
���|�{�2��
������
��,�,�T�[�[�]�;�"�K��q�!�	%�
�~�~�b�$��(?�(?�@�@r#c����|j��tjt�}|j	�j��}|r|j
��S�fd�}|j|�|�S)Nc�(��|j��SrA)r�)r�rr r�s   �r"�finish_accept_pipez4IocpProactor.accept_pipe.<locals>.finish_accept_pipeqs����L�L�N��Kr#)rrfrr��ConnectNamedPiper�r�r)rr�r �	connectedrXs `   r"r�zIocpProactor.accept_pipefsf���� � ��&�
�
#�
#�D�
)���'�'����
�6�	���<�<��%�%�	��~�~�b�$�(:�;�;r#c��<K�t}		tj|�}	tj|�S#t$r(}|jtj
k7r�Yd}~nd}~wwxYwt
|dzt�}tj|��d{���7���w)N�)�CONNECT_PIPE_INIT_DELAYrf�ConnectPiper6rh�ERROR_PIPE_BUSY�min�CONNECT_PIPE_MAX_DELAYr�sleeprr�)rr+�delayrTr9s     r"r�zIocpProactor.connect_pipews�����'���
�$�0�0��9����'�'��/�/���
��<�<�;�#>�#>�>��?��
��
���	�#9�:�E��+�+�e�$�$�$��s6�B�6�B�	A'�A"�B�"A'�'.B�B�Bc�(�|j||d�S)z�Wait for a handle.

        Return a Future object. The result of the future is True if the wait
        completed, or False if the wait did not complete (on timeout).
        F)�_wait_for_handle)rrTr�s   r"�wait_for_handlezIocpProactor.wait_for_handle�s���$�$�V�W�e�<�<r#c�:�|j|dd�}||_|Sr�)rerr)rrs�
done_callbackrbs    r"r�zIocpProactor._wait_cancel�s%���#�#�E�4��6��+����
r#c����|j�|�tj}ntj|dz�}tjt�}tj||j|j|�}|rt||||j���nt|||||j����jr
�jd=�fd�}�|d|f|j|j<�S)N�@�@rrc�$���j�SrA)r\)r�rr r�s   �r"�finish_wait_for_handlez=IocpProactor._wait_for_handle.<locals>.finish_wait_for_handle�s����7�7�9�r#r)r�rX�INFINITE�math�ceilrfrr��RegisterWaitWithQueuer�r+rpr7ryrr�)	rrTr��
_is_cancel�msr rUrlr�s	        @r"rezIocpProactor._wait_for_handle�s���������?��!�!�B����7�S�=�)�B��
#�
#�D�
)��!�7�7��D�J�J��
�
�B�0���!�"�f�k��
�
�K�A�!�"�f�k�4�'+�z�z�3�A�����#�#�B�'�	�$%�b�!�-C�"D����B�J�J���r#c��||jvrL|jj|�tj|j	�|j
dd�yyrW)rSr�rfr�r�r��r�objs  r"rz IocpProactor._register_with_iocp�sI���d�&�&�&���� � ��%��.�.�s�z�z�|�T�Z�Z��A�N�'r#c�^�|j�t||j��}|jr
|jd=|js	|dd|�}|j|�||||f|j|j<|S#t$r}|j|�Yd}~�>d}~wwxYwr)
r�rr7rr%rEr6rBr�r+)rr ru�callbackr�r�rHs       r"rzIocpProactor._register�s�������

�b�t�z�z�2������#�#�B�'��z�z�

$� ��t�R�0�����U�#�$%�b�#�x�"8����B�J�J������
#�����"�"��
#�s�
B�	B,�B'�'B,c�Z�|j�|jj|�y)a
Unregister an overlapped object.

        Call this method when its future has been cancelled. The event can
        already be signalled (pending in the proactor event queue). It is also
        safe if the event is never signalled (because it was cancelled).
        N)r�r�r`)rr s  r"r�zIocpProactor._unregister�s$��	
�������!�!�"�%r#c�R�tj|�}|jd�|SrW)r	r/)rr7�ss   r"r6zIocpProactor._get_accept_socket�s ���M�M�&�!��	���Q���r#c	�"�|�t}n<|dkrtd��tj|dz�}|tk\rtd��	t	j
|j|�}|�n�d}|\}}}}	|jj|�\}}	}
}|
|j vr|j#�nI|j%�s9	||||	�}|j'|�|j(j+|�d}��|j0D](}	|jj|	j2d��*|j0j5�y#t$rl|jj�r%|jjdd||||fzd��|dtjfvrtj|�Y��}wxYw#t,$r7}
|j/|
�|j(j+|�Yd}
~
��d}
~
wwxYw#d}wxYw)Nrznegative timeoutrjztimeout too bigz8GetQueuedCompletionStatus() returned an unexpected eventz)err=%s transferred=%s key=%#x address=%#x)r1�status)rm�
ValueErrorrnrorf�GetQueuedCompletionStatusr�r��pop�KeyErrorr7�	get_debugr8r�rXr�r�r5�donerEr�r`r6rBr�r+r�)rr�rrr|�err�transferredrr+r�r rurwr�rHs              r"r\zIocpProactor._poll�s����?��B�
�q�[��/�0�0����7�S�=�)�B��X�~� �!2�3�3�� �:�:�4�:�:�r�J�F��~���B�-3�*�C��c�7�
�'+�{�{���w�'?�$��2�s�H� �d�+�+�+����
��V�V�X�	�$�[�#�r�:�E�
�L�L��'��M�M�(�(��+��A�M�R�$�$�	.�B��K�K�O�O�B�J�J��-�	.���� � �"��E�

��:�:�'�'�)��J�J�5�5�%7�#N�&)�;��W�%E�$F�7���q�+�"B�"B�C�C��'�'��,��

��,�,��O�O�A�&��M�M�(�(��+�+��,���A�sC�4 E�
G�,H
�A1G�G�	H�,H�<H
�H�H
�
Hc�:�|jj|�yrA)r�r�rts  r"�
_stop_servingzIocpProactor._stop_serving-s��	
���!�!�#�&r#c�4�|j�yt|jj��D]:\}}}}|j	�r�t|t�r�*	|j��<d}tj�}||z}	|jrx|	tj�krCtjd|tj�|z
�tj�|z}	|j!|�|jr�xg|_t%j&|j�d|_y#t$rS}|j�<d||d�}|jr|j|d<|jj|�Yd}~��ad}~wwxYw)NzCancelling a future failedr0r4g�?z,%r is running after closing for %.1f seconds)r��listr��values�	cancelledrrpr5r6r7rr8�time�	monotonicr
�debugr\r�rXr�)
rrbr rurwr9r:�
msg_update�
start_time�next_msgs
          r"r�zIocpProactor.close3sa���:�:���'+�4�;�;�+=�+=�+?�&@�	C�"�C��S�(��}�}����C�!2�3��C��J�J�L�	C�0�
��^�^�%�
��
�*���k�k��4�>�>�+�+����K�!�4�>�>�#3�j�#@�B��>�>�+�j�8��
�J�J�z�"��k�k���
����D�J�J�'���
��;�	C��z�z�-�'C�),�&)�#��
�0�0�:=�:O�:O�G�$6�7��
�
�9�9�'�B���	C�s�D;�;	F�AF�Fc�$�|j�yrA)r�r[s r"r�zIocpProactor.__del__bs���
�
�r#rA)rr)#rHrIrJrKrmrr�r�r�r�r��staticmethodrrrrr r#r'r;rIrUr�r�rfr�rerrr�r6r\r�r�r�r�r#r"rr�s���-�#+�2�9�E��	��
����A�A�A�5�(A�A��88�>
A�<�"0�&=�� �DO��@&��
7#�r'�-�^r#rc��eZdZd�Zy)r�c	���tj|f|||||d�|���_�fd�}�jjjt
�jj��}	|	j|�y)N)r�r�r�r�r�c�\���jj�}�j|�yrA)�_proc�poll�_process_exited)r��
returncoders  �r"rwz4_WindowsSubprocessTransport._start.<locals>.callbackms!��������*�J�� � ��,r#)	r�Popenr�r7r{rf�intrQr�)
rr�r�r�r�r�r�r�rwr�s
`         r"�_startz"_WindowsSubprocessTransport._starthso���"�(�(��'��U�6�&��'�%�'��
�	-�
�J�J� � �0�0��T�Z�Z�5G�5G�1H�I��	���H�%r#N)rHrIrJr�r�r#r"r�r�fs��
&r#r�c��eZdZeZy)rN)rHrIrJr�
_loop_factoryr�r#r"rrx���%�Mr#rc��eZdZeZy)rN)rHrIrJrr�r�r#r"rr|r�r#r)2rK�sys�platform�ImportErrorrfrXrDrnrMr	r*r�r��rrrrr	r
rr�logr
�__all__r�rm�ERROR_CONNECTION_REFUSED�ERROR_CONNECTION_ABORTEDr]ra�FuturerrOrpry�objectr��BaseSelectorEventLoopr��BaseProactorEventLooprr�BaseSubprocessTransportr�r�BaseDefaultEventLoopPolicyrrrr�r#r"�<module>r�sY��4�
��<�<�7��
�l�
#�#�����
�
�
���������������|�|���������� ����-����-�`G#�G�N�N�G#�T&�-�&�01P�-�1P�h8��8�v2�� E� E�2�g��=�=�g�TD�D�N&�/�"I�"I�&�.��&�V�%F�%F�&�&�V�%F�%F�&�8�r#