�
��Vc� c s � d Z ddlZej dk r ed� � �ddlZddlZddlZddlZddlZddl Z ddl
Z
dZdZej
Z
ej Z ej � � Zdded �d
�Z G d� d� � Z G d
� dej � � ZdS )z)Various Windows specific bits and pieces.� NZwin32z
win32 only)�pipe�Popen�PIPE�
PipeHandlei F)TT)�duplex�
overlapped�bufsizec
sR � t j d� t j � � t t � � � � �� � }| r*t j }t j t j
z }||}}nt j }t j
}d|}}|t j z }|d r|t j
z }|d r
t j
}nd}dx} }
t j ||t j d||t j t j � � } t j ||dt j t j |t j � � }
t j | d�� � }|� d� � | |
fS # | �t j | � � |
�t j |
� � � xY w)zELike os.pipe() but with overlapped support and using handles not fds.z\\.\pipe\python-pipe-{:d}-{:d}-)Zprefixr i NT�r )�tempfileZmktempZformat�osZgetpidZnext�
_mmap_counter�_winapiZPIPE_ACCESS_DUPLEXZGENERIC_READZ
GENERIC_WRITEZPIPE_ACCESS_INBOUNDZFILE_FLAG_FIRST_PIPE_INSTANCEZFILE_FLAG_OVERLAPPEDZCreateNamedPipeZ PIPE_WAITZNMPWAIT_WAIT_FOREVERZNULLZ
CreateFileZ
OPEN_EXISTINGZConnectNamedPipeZGetOverlappedResult�CloseHandle)r r r ZaddressZopenmodeZaccessZobsizeZibsizeZflags_and_attribsZh1Zh2Zovs �./usr/lib64/python3.11/asyncio/windows_utils.pyr r s� � ��o�1�8�8��I�K�K��m�,�,�.� .�/� /� /�G� � $��-���%��(=�=�� �'�����.���&���G�����5�5�H��!�}� 1��G�0�0���!�}� �#�8������N�B���
�
$��X�w�0�
�v�v�w�;�W�\�K� K�� �
��V�Q���g�.C��w�|�-� -�� �
%�b�T�
:�
:�
:��
���t�$�$�$��2�v�
���
� $����#�#�#�
� $����#�#�#�
���s
�BE7 �7/F&c sp � e Zd ZdZd� Zd� Zed� � � Zd� Ze j
d�d�Zej
fd�Zd � Zd
� ZdS )r z�Wrapper for an overlapped pipe handle which is vaguely file-object like.
The IOCP event loop can use these instead of socket objects.
c s � || _ d S �N��_handle��self�handle� r �__init__zPipeHandle.__init__V s
� ������ c sP � | j �d| j ��}nd}d| j j � d|� d�S )Nzhandle=Zclosedz<z z>)r � __class__�__name__r r r �__repr__zPipeHandle.__repr__Y s@ � ��<� �/�t�|�/�/�F�F��F�6�4�>�*�6�6�V�6�6�6�6r c s � | j S r r �r � r r zPipeHandle.handle` s
� ��|�r c s<