Edit file File name : windows_utils.cpython-36.pyc Content :3 \� � @ s� d Z ddlZejdkred��ddlZddlZddlZddlZddlZddl Z ddl Z ddlZddddd gZd Z e jZe jZej� Zeed�r�ejZnejejdfdd�Zdde d�dd�ZG dd � d �ZG dd� de j�ZdS )z* Various Windows specific bits and pieces � NZwin32z win32 only� socketpair�pipe�Popen�PIPE� PipeHandlei c C s | t jkrd}n| t jkr d}ntd��|t jkr:td��|dkrJtd��t j | ||�}z�|j|df� |jd� |j� dd � \}}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 )z�A socket pair usable as a self-pipe, for Windows. Origin: https://gist.github.com/4325783, by Geert Jansen. Public domain. z 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� N� FT)�socket�AF_INETZAF_INET6� ValueError�SOCK_STREAMZbindZlistenZgetsocknameZsetblockingZconnect�BlockingIOError�InterruptedErrorZaccept�close) Zfamily�type�proto�hostZlsockZaddrZportZcsockZssock�_� r �-/usr/lib64/python3.6/asyncio/windows_utils.pyr % s8 FT)�duplex� overlapped�bufsizec C s" t jdtj� tt�f d�}| r>tj}tjtj B }|| }}ntj }tj }d| }}|tjO }|d rp|tjO }|d r�tj}nd}d } } yZtj ||tjd||tjtj�} tj||dtjtj|tj�} tj| dd�}|jd� | | fS | dk �rtj| � | dk �rtj| � � Y nX dS )zELike os.pipe() but with overlapped support and using handles not fds.z\\.\pipe\python-pipe-%d-%d-)�prefixr r NT)r )�tempfileZmktemp�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_attribsZh1Zh2Zovr r r r S s@ c @ s\ e Zd ZdZdd� Zdd� Zedd� �Zdd � Ze j d �dd�Zd d� Zdd� Z dd� 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__� s zPipeHandle.__init__c C s* | j d k rd| j }nd}d| jj|f S )Nz handle=%r�closedz<%s %s>)r"