ruạṛ
a ���d� � @ 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�}| 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 | du�rt�| � | du�rt�| � � Y n0 dS )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/lib64/python3.9/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 rtd��| j S )NzI/O operation on closed pipe)r1 � ValueErrorr= r- r- r. �filenod s zPipeHandle.fileno)r# c C s | j d ur|| j � d | _ d S r/ r0 )r3 r# r- r- r. �closei s zPipeHandle.closec C s* | j d ur&|d| ��t| d� | �� d S )Nz unclosed )�source)r1 �ResourceWarningr@ )r3 �_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@ )r3 �t�v�tbr- r- r. �__exit__v s zPipeHandle.__exit__N)r; � __module__�__qualname__�__doc__r5 r<