U
e5d� � @ s� d dl Z e jdkred��d dlZd dlZd dlZd dlZd dlZd dlZd dl Z dZ
dZejZej
Z
e�� Zdded�d d
�ZG dd� d�ZG d
d� dej�ZdS )� NZwin32z
win32 only)�pipe�Popen�PIPE�
PipeHandlei F)TT)�duplex�
overlapped�bufsizec
C s$ t jd�t�� tt��d�}| r>tj}tj tj
B }|| }}ntj}tj
}d| }}|tjO }|d rp|tj
O }|d r�tj
}nd}d } }
z\t�||tjd||tjtj�} t�||dtjtj|tj�}
tj| dd�}|�d� | |
fW S | d k �rt�| � |
d k �rt�|
� � Y nX d S )Nz\\.\pipe\python-pipe-{:d}-{:d}-)�prefixr � T�r )�tempfileZmktemp�format�os�getpid�next�
_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 ZaddressZopenmode�accessZobsizeZibsizeZflags_and_attribsZh1Zh2Zov� r �-/usr/lib64/python3.8/asyncio/windows_utils.pyr sb ��
� �
r c @ s^ e Zd Zdd� Zdd� Zedd� �Zdd� Zej d �d
d�Z
ejfdd
�Z
dd� Zdd� ZdS )r c C s
|| _ d S �N��_handle��self�handler r r �__init__V s zPipeHandle.__init__c C s2 | j d k rd| j ��}nd}d| jj� d|� d�S )Nzhandle=�closed�<� �>)r � __class__�__name__r r r r �__repr__Y s
zPipeHandle.__repr__c C s | j S r r �r r r r r ` s zPipeHandle.handlec C s | j d krtd��| j S )NzI/O operation on closed pipe)r �
ValueErrorr% r r r �filenod s
zPipeHandle.fileno)r c C s | j d k r|| j � d | _ d S r r )r r r r r �closei s
zPipeHandle.closec C s* | j d k r&|d| ��t| d� | �� d S )Nz unclosed )�source)r �ResourceWarningr( )r Z_warnr r r �__del__n s
zPipeHandle.__del__c C s | S r r r% r r r � __enter__s s zPipeHandle.__enter__c C s | � � d S r )r( )r �t�v�tbr r r �__exit__v s zPipeHandle.__exit__N)r# �
__module__�__qualname__r r$ �propertyr r' r r r( �warnings�warnr+ r, r0 r r r r r Q s
r c s e Zd Zd� fdd� Z� ZS )r Nc sx d } }}d } }
}|t kr@tddd�\}} t�|tj�}n|}|t krhtdd�\}
}
t�|
d�}n|}|t kr�tdd�\}}t�|d�}n|tkr�|}n|}z�z t� j |f|||d�|�� W n0 | |
|fD ]}|d k r�t
�|� qւ Y n>X | d k �r
t| �| _
|
d k �rt|
�| _|d k �r2t|�| _W 5 |t k�rJt�|� |t k�r^t�|� |t k�rrt�|� X d S )N)FTT)r r )TFr r )�stdin�stdout�stderr)r r �msvcrtZopen_osfhandler �O_RDONLY�STDOUTr( �superr r r r r6 r7 r8 )r �argsr6 r7 r8 �kwdsZ stdin_rfdZ
stdout_wfdZ
stderr_wfdZstdin_whZ stdout_rhZ stderr_rhZstdin_rhZ stdout_whZ stderr_wh�h�r" r r r � sN ��
zPopen.__init__)NNN)r# r1 r2 r �
__classcell__r r r@ r r } s r )�sys�platform�ImportErrorr � itertoolsr9 r �
subprocessr r4 �__all__ZBUFSIZEr r; �countr r r r r r r r �