File: //lib/python3.10/asyncio/__pycache__/windows_utils.cpython-310.pyc
o
    E�h�  �                   @   s�   d Z ddlZejdkred��ddlZddlZddlZddlZddlZddl	Z	ddl
Z
dZdZej
Z
ejZe�� Zdded	�d
d�ZG dd
� d
�ZG dd� dej�ZdS )z)Various Windows specific bits and pieces.�    N�win32z
win32 only)�pipe�Popen�PIPE�
PipeHandlei    F)TT)�duplex�
overlapped�bufsizec              
   C   s  t jd�t�� tt��d�}| rtj}tj	tj
B }||}}ntj}tj
}d|}}|tjO }|d r8|tj
O }|d r@tj
}nd}d }	}
z.t�||tjd||tjtj�}	t�||dtjtj|tj�}
tj|	dd�}|�d� |	|
fW S    |	dur�t�|	� |
dur�t�|
� � )zELike os.pipe() but with overlapped support and using handles not fds.z\\.\pipe\python-pipe-{:d}-{:d}-)�prefixr   �   NT�r   )�tempfile�mktemp�format�os�getpid�next�
_mmap_counter�_winapi�PIPE_ACCESS_DUPLEX�GENERIC_READ�
GENERIC_WRITE�PIPE_ACCESS_INBOUND�FILE_FLAG_FIRST_PIPE_INSTANCE�FILE_FLAG_OVERLAPPED�CreateNamedPipe�	PIPE_WAIT�NMPWAIT_WAIT_FOREVER�NULL�
CreateFile�
OPEN_EXISTING�ConnectNamedPipe�GetOverlappedResult�CloseHandle)r   r   r	   �address�openmode�access�obsize�ibsize�flags_and_attribs�h1�h2�ov� r-   �,/usr/lib/python3.10/asyncio/windows_utils.pyr       sJ   ��
��
r   c                   @   sb   e Zd ZdZdd� Zdd� Zedd� �Zdd	� Ze	j
d
�dd�Zej
fd
d�Zdd� Zdd� 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                 C   s
   || _ d S �N��_handle��self�handler-   r-   r.   �__init__V   s   
zPipeHandle.__init__c                 C   s2   | j d urd| j ��}nd}d| jj� d|� d�S )Nzhandle=�closed�<� �>)r1   �	__class__�__name__r2   r-   r-   r.   �__repr__Y   s   
zPipeHandle.__repr__c                 C   s   | j S r/   r0   �r3   r-   r-   r.   r4   `   s   zPipeHandle.handlec                 C   s   | j d u r	td��| j S )NzI/O operation on closed pipe)r1   �
ValueErrorr=   r-   r-   r.   �filenod   s   
zPipeHandle.fileno)r#   c                C   s"