й¼]¼ ã @ sD d d l Z e j d k r' e d ƒ ‚ d d l Z d d l Z d d l Z d d l Z d d l Z d d l Z d d l Z d d l Z d d d d d g Z d Z e j Z e j Z e j ƒ Z e e d ƒ rÛ e j Z n e j e j d d d „ Z d d d d d e d d „ Z Gd d „ d ƒ Z Gd d „ d e j ƒ Z d S)é NÚwin32z win32 onlyÚ socketpairÚpipeÚPopenÚPIPEÚ PipeHandlei c C sk | t j k r d } n$ | t j k r0 d } n t d ƒ ‚ | t j k rW t d ƒ ‚ | d k ro t d ƒ ‚ t j | | | ƒ } zÏ | j | d f ƒ | j d ƒ | j ƒ d d … \ } } t j | | | ƒ } yb | j d ƒ y | j | | f ƒ Wn t t f k rYn X| j d ƒ | j ƒ \ } } Wn | j ƒ ‚ Yn XWd | j ƒ X| | f S)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)ÚsocketÚAF_INETÚAF_INET6Ú ValueErrorÚSOCK_STREAMÚbindÚlistenÚgetsocknameÚsetblockingÚconnectÚBlockingIOErrorÚInterruptedErrorÚacceptÚclose) ÚfamilyÚtypeÚprotoÚhostZlsockÚaddrÚportZcsockZssockÚ_© r ú2/opt/alt/python35/lib64/python3.5/windows_utils.pyr % s8 ÚduplexFÚ overlappedTÚbufsizec C s‹ t j d d t j ƒ t t ƒ f ƒ } | rW t j } t j t j B} | | } } n t j } t j } d | } } | t j O} | d rš | t j O} | d r° t j } n d } d } } y‡ t j | | t j d | | t j t j ƒ } t j | | d t j t j | t j ƒ } t j | d d ƒ} | j d ƒ | | f SWn= | d k rft j | ƒ | d k rt j | ƒ ‚ Yn Xd S)NÚprefixz\\.\pipe\python-pipe-%d-%d-r r r" T)ÚtempfileÚmktempÚ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_attribsZh1Zh2Zovr r r r S s@ c @ s e Z d Z d d „ Z d d „ Z e d d „ ƒ Z d d „ Z d e j d d „ Z d d „ Z d d „ Z d d „ Z d S)r c C s | | _ d S)N)Ú_handle)ÚselfÚhandler r r Ú__init__ˆ s zPipeHandle.__init__c C s9 | j d k r d | j } n d } d | j j | f S)Nz handle=%rÚclosedz<%s %s>)r/ Ú __class__Ú__name__)r0 r1 r r r Ú__repr__‹ s zPipeHandle.__repr__c C s | j S)N)r/ )r0 r r r r1 ’ s zPipeHandle.handlec C s" | j d k r t d ƒ ‚ | j S)NzI/O operatioon on closed pipe)r/ r )r0 r r r Úfileno– s zPipeHandle.filenor, c C s) | j d k r% | | j ƒ d | _ d S)N)r/ )r0 r, r r r r › s zPipeHandle.closec C s1 | j d k r- t j d | t ƒ | j ƒ d S)Nzunclosed %r)r/ ÚwarningsÚwarnÚResourceWarningr )r0 r r r Ú__del__ s zPipeHandle.__del__c C s | S)Nr )r0 r r r Ú __enter__¥ s zPipeHandle.__enter__c C s | j ƒ d S)N)r )r0 ÚtÚvÚtbr r r Ú__exit__¨ s zPipeHandle.__exit__N)r5 Ú __module__Ú__qualname__r2 r6 Úpropertyr1 r7 r+ r, r r; r<