MINI MINI MANI MO
3
  \                 @   s   d dl Z e jdkredd dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
Z
dddddgZd	Zej
Z
ejZej ZeedrejZnejejd fd
dZdded
ddZG dd dZG dd dejZdS )    NZwin32z
win32 only
socketpairpipePopenPIPE
PipeHandlei    c       
      C   s  | t jkrd}n| t jkr d}ntd|t jkr:td|dkrJtdt j | ||}z|j|df |jd |j d d \}}t j | ||}yP|jd	 y|j	||f W n t
tfk
r   Y nX |jd
 |j \}}	W n   |j
   Y nX W d |j
  X ||fS )Nz	127.0.0.1z::1z?Only AF_INET and AF_INET6 socket address families are supportedz)Only SOCK_STREAM socket type is supportedr   zOnly protocol zero is supported      FT)socketAF_INETZAF_INET6
ValueErrorSOCK_STREAMZbindZlistenZgetsocknameZsetblockingZconnectBlockingIOErrorInterruptedErrorZacceptclose)
ZfamilytypeprotohostZlsockZaddrZportZcsockZssock_ r   -/usr/lib64/python3.6/asyncio/windows_utils.pyr   %   s8    
FT)duplex
overlappedbufsizec             C   s"  t jdtj ttf d}| r>tj}tjtj	B }|| }}ntj
}tj	}d| }}|tjO }|d rp|tjO }|d rtj}nd}d  }	}
yZtj
||tjd||tjtj}	tj||dtjtj|tj}
tj|	dd}|jd |	|
fS    |	d k	rtj|	 |
d k	rtj|
  Y nX d S )Nz\\.\pipe\python-pipe-%d-%d-)prefixr   r   T)r   )tempfileZmktemposgetpidnext
_mmap_counter_winapiZPIPE_ACCESS_DUPLEXZGENERIC_READZ
GENERIC_WRITEZPIPE_ACCESS_INBOUNDZFILE_FLAG_FIRST_PIPE_INSTANCEZFILE_FLAG_OVERLAPPEDZCreateNamedPipeZ	PIPE_WAITZNMPWAIT_WAIT_FOREVERZNULLZ
CreateFileZ
OPEN_EXISTINGZConnectNamedPipeZGetOverlappedResultCloseHandle)r   r   r   ZaddressZopenmodeaccessZobsizeZibsizeZflags_and_attribsZh1Zh2Zovr   r   r   r   S   s@    
c               @   sX   e Zd Zdd Zdd Zedd Zdd Zej	d	d
dZ
dd
 Zdd Zdd Z
dS )r   c             C   s
   || _ d S )N)_handle)selfhandler   r   r   __init__   s    zPipeHandle.__init__c             C   s*   | j d k	rd| j  }nd}d| jj|f S )Nz	handle=%rclosedz<%s %s>)r"