a
´iÄ ã @ 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Ú_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 ÚaddressZopenmodeÚaccessZobsizeZibsizeZflags_and_attribsZh1Zh2Zov© 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ú<ú ú>)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 u rtdƒ‚| j S )NzI/O operation on closed pipe)r Ú
ValueErrorr( r r r Úfilenod s
zPipeHandle.fileno)r c C s | j d ur|| j ƒ d | _ d S r r )r r r r r Úclosei s
zPipeHandle.closec C s* | j d ur&|d| ›�t| d� | ¡ d S )Nz unclosed )Úsource)r ÚResourceWarningr+ )r Ú_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&