B 0‘cvã@sŒddlZddlZddlZddlZddlZddlZddlZddlZddlZddl m Z ddl m Z ddl m Z ddl m Z ddl mZddl mZdd l mZdd lmZd ZdZd Zd ZdZdZdZGdd„de jƒZGdd„de jƒZGdd„deƒZGdd„deƒZGdd„deƒZ Gdd„dej!ƒZ"Gdd„de j#ƒZ$Gdd „d ƒZ%Gd!d"„d"e j&ƒZ'e"Z(Gd#d$„d$e j)ƒZ*Gd%d&„d&e j)ƒZ+e*Z,dS)'éNé)Úevents)Úbase_subprocess)Úfutures)Úproactor_events)Úselector_events)Útasks)Ú windows_utils)Úlogger)ÚSelectorEventLoopÚProactorEventLoopÚ IocpProactorÚDefaultEventLoopPolicyÚWindowsSelectorEventLoopPolicyÚWindowsProactorEventLoopPolicylÿÿiÉiÔgü©ñÒMbP?gš™™™™™¹?csZeZdZddœ‡fdd„ Z‡fdd„Zdd„Z‡fd d „Z‡fd d „Z‡fd d„Z‡Z S)Ú_OverlappedFutureN)Úloopcs&tƒj|d|jr|jd=||_dS)N)réÿÿÿÿ)ÚsuperÚ__init__Ú_source_tracebackÚ_ov)ÚselfÚovr)Ú __class__©ú;/opt/alt/python37/lib64/python3.7/asyncio/windows_events.pyr0sz_OverlappedFuture.__init__csHtƒ ¡}|jdk rD|jjr dnd}| dd|›d|jjd›d¡|S)NÚpendingZ completedrz overlapped=)rÚ _repr_inforrÚinsertÚaddress)rÚinfoÚstate)rrrr6s    z_OverlappedFuture._repr_infoc Csr|jdkrdSy|j ¡WnJtk rf}z,d||dœ}|jrJ|j|d<|j |¡Wdd}~XYnXd|_dS)Nz&Cancelling an overlapped future failed)ÚmessageÚ exceptionÚfutureÚsource_traceback)rÚcancelÚOSErrorrÚ_loopÚcall_exception_handler)rÚexcÚcontextrrrÚ_cancel_overlapped=s  z$_OverlappedFuture._cancel_overlappedcs| ¡tƒ ¡S)N)r.rr()r)rrrr(Msz_OverlappedFuture.cancelcstƒ |¡| ¡dS)N)rÚ set_exceptionr.)rr%)rrrr/Qs z_OverlappedFuture.set_exceptioncstƒ |¡d|_dS)N)rÚ set_resultr)rÚresult)rrrr0Us z_OverlappedFuture.set_result) Ú__name__Ú __module__Ú __qualname__rrr.r(r/r0Ú __classcell__rr)rrr*s    rcsjeZdZddœ‡fdd„ Zdd„Z‡fdd„Zd d „Zd d „Z‡fd d„Z‡fdd„Z ‡fdd„Z ‡Z S)Ú_BaseWaitHandleFutureN)rcs8tƒj|d|jr|jd=||_||_||_d|_dS)N)rrT)rrrrÚ_handleÚ _wait_handleÚ _registered)rrÚhandleÚ wait_handler)rrrr]sz_BaseWaitHandleFuture.__init__cCst |jd¡tjkS)Nr)Ú_winapiZWaitForSingleObjectr7Z WAIT_OBJECT_0)rrrrÚ_pollks z_BaseWaitHandleFuture._pollcsdtƒ ¡}| d|jd›¡|jdk rB| ¡r4dnd}| |¡|jdk r`| d|jd›¡|S)Nzhandle=z#xZsignaledZwaitingz wait_handle=)rrÚappendr7r=r8)rr"r#)rrrrps    z _BaseWaitHandleFuture._repr_infocCs d|_dS)N)r)rÚfutrrrÚ_unregister_wait_cbzsz)_BaseWaitHandleFuture._unregister_wait_cbc Cs”|js dSd|_|j}d|_yt |¡WnZtk r„}z<|jtjkrtd||dœ}|jrd|j|d<|j  |¡dSWdd}~XYnX|  d¡dS)NFz$Failed to unregister the wait handle)r$r%r&r') r9r8Ú _overlappedZUnregisterWaitr)ÚwinerrorÚERROR_IO_PENDINGrr*r+r@)rr;r,r-rrrÚ_unregister_waits"   z&_BaseWaitHandleFuture._unregister_waitcs| ¡tƒ ¡S)N)rDrr()r)rrrr(—sz_BaseWaitHandleFuture.cancelcs| ¡tƒ |¡dS)N)rDrr/)rr%)rrrr/›sz#_BaseWaitHandleFuture.set_exceptioncs| ¡tƒ |¡dS)N)rDrr0)rr1)rrrr0Ÿsz _BaseWaitHandleFuture.set_result) r2r3r4rr=rr@rDr(r/r0r5rr)rrr6Zs   r6csBeZdZddœ‡fdd„ Zdd„Z‡fdd„Z‡fd d „Z‡ZS) Ú_WaitCancelFutureN)rcstƒj||||dd|_dS)N)r)rrÚ_done_callback)rrÚeventr;r)rrrr©sz_WaitCancelFuture.__init__cCs tdƒ‚dS)Nz'_WaitCancelFuture must not be cancelled)Ú RuntimeError)rrrrr(®sz_WaitCancelFuture.cancelcs$tƒ |¡|jdk r | |¡dS)N)rr0rF)rr1)rrrr0±s  z_WaitCancelFuture.set_resultcs$tƒ |¡|jdk r | |¡dS)N)rr/rF)rr%)rrrr/¶s  z_WaitCancelFuture.set_exception)r2r3r4rr(r0r/r5rr)rrrE¤s rEcs6eZdZddœ‡fdd„ Z‡fdd„Zdd„Z‡ZS) Ú_WaitHandleFutureN)rcs<tƒj||||d||_d|_t dddd¡|_d|_dS)N)rTF)rrÚ _proactorZ_unregister_proactorrAZ CreateEventÚ_eventÚ _event_fut)rrr:r;Úproactorr)rrrr½s z_WaitHandleFuture.__init__csF|jdk r"t |j¡d|_d|_|j |j¡d|_tƒ |¡dS)N) rKr<Ú CloseHandlerLrJÚ _unregisterrrr@)rr?)rrrr@Äs   z%_WaitHandleFuture._unregister_wait_cbc Cs¢|js dSd|_|j}d|_yt ||j¡WnZtk rˆ}z<|jtjkrxd||dœ}|jrh|j|d<|j   |¡dSWdd}~XYnX|j   |j|j ¡|_dS)NFz$Failed to unregister the wait handle)r$r%r&r')r9r8rAZUnregisterWaitExrKr)rBrCrr*r+rJÚ _wait_cancelr@rL)rr;r,r-rrrrDÖs$    z"_WaitHandleFuture._unregister_wait)r2r3r4rr@rDr5rr)rrrI¼s rIc@s8eZdZdd„Zdd„Zdd„Zdd„Zd d „ZeZd S) Ú PipeServercCs,||_t ¡|_d|_d|_| d¡|_dS)NT)Ú_addressÚweakrefÚWeakSetÚ_free_instancesÚ_pipeÚ_accept_pipe_futureÚ_server_pipe_handle)rr!rrrrõs  zPipeServer.__init__cCs|j| d¡}|_|S)NF)rVrX)rÚtmprrrÚ_get_unconnected_pipeÿsz PipeServer._get_unconnected_pipec Csr| ¡r dStjtjB}|r&|tjO}t |j|tjtjBtj Btj t j t j tj tj¡}t  |¡}|j |¡|S)N)Úclosedr<ZPIPE_ACCESS_DUPLEXZFILE_FLAG_OVERLAPPEDZFILE_FLAG_FIRST_PIPE_INSTANCEZCreateNamedPiperRZPIPE_TYPE_MESSAGEZPIPE_READMODE_MESSAGEZ PIPE_WAITZPIPE_UNLIMITED_INSTANCESr ZBUFSIZEZNMPWAIT_WAIT_FOREVERÚNULLÚ PipeHandlerUÚadd)rÚfirstÚflagsÚhÚpiperrrrXs      zPipeServer._server_pipe_handlecCs |jdkS)N)rR)rrrrr[szPipeServer.closedcCsV|jdk r|j ¡d|_|jdk rRx|jD] }| ¡q,Wd|_d|_|j ¡dS)N)rWr(rRrUÚcloserVÚclear)rrbrrrrcs     zPipeServer.closeN) r2r3r4rrZrXr[rcÚ__del__rrrrrQðs   rQc@s eZdZdS)Ú_WindowsSelectorEventLoopN)r2r3r4rrrrrf+srfcs8eZdZd ‡fdd„ Zdd„Zdd„Zd dd „Z‡ZS) r Ncs|dkrtƒ}tƒ |¡dS)N)r rr)rrM)rrrr2szProactorEventLoop.__init__cÃs8|j |¡}|IdH}|ƒ}|j||d|id}||fS)NÚaddr)Úextra)rJÚ connect_pipeÚ_make_duplex_pipe_transport)rÚprotocol_factoryr!ÚfrbÚprotocolÚtransrrrÚcreate_pipe_connection7s    z(ProactorEventLoop.create_pipe_connectioncƒs.tˆƒ‰d‡‡‡‡‡fdd„ ‰ˆ ˆ¡ˆgS)Nc sd}yj|rL| ¡}ˆj |¡ˆ ¡r2| ¡dSˆƒ}ˆj||dˆidˆ ¡}|dkr`dSˆj |¡}Wn„t k rÒ}zF|r¬|  ¡dkr¬ˆ  d||dœ¡| ¡nˆj rÂt jd|ddWdd}~XYn2tjk rò|rî| ¡YnX|ˆ_| ˆ¡dS) Nrg)rhrzPipe accept failed)r$r%rbzAccept pipe failed on pipe %rT)Úexc_info)r1rUÚdiscardr[rcrjrZrJÚ accept_piper)Úfilenor+Z_debugr ZwarningrÚCancelledErrorrWÚadd_done_callback)rlrbrmr,)r!Úloop_accept_piperkrÚserverrrrvBs<   z>ProactorEventLoop.start_serving_pipe..loop_accept_pipe)N)rQZ call_soon)rrkr!r)r!rvrkrrwrÚstart_serving_pipe?s( z$ProactorEventLoop.start_serving_pipec Ësl| ¡} t||||||||f| |dœ| —Ž} y| IdHWn,tk rf|  ¡|  ¡IdH‚YnX| S)N)Úwaiterrh)Ú create_futureÚ_WindowsSubprocessTransportÚ ExceptionrcZ_wait) rrmÚargsÚshellÚstdinÚstdoutÚstderrÚbufsizerhÚkwargsryZtransprrrÚ_make_subprocess_transportms  z,ProactorEventLoop._make_subprocess_transport)N)N)r2r3r4rrorxr„r5rr)rrr /s0r c@sâeZdZd6dd„Zdd„Zdd„Zdd „Zd7d d „Zd d„Zd8dd„Z d9dd„Z d:dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zd;d d!„Zd"d#„Zd$d%„Zd&d'„Zd(d)„Zd*d+„Zd,d-„Zdú )ÚlenrŠr†r‰r>rr2Újoin)rr"rrrÚ__repr__s    zIocpProactor.__repr__cCs ||_dS)N)r*)rrrrrÚset_loop—szIocpProactor.set_loopNcCs |js| |¡|j}g|_|S)N)r†r=)rÚtimeoutrYrrrÚselectšs  zIocpProactor.selectcCs|j ¡}| |¡|S)N)r*rzr0)rÚvaluer?rrrÚ_result¡s  zIocpProactor._resultrcCsz| |¡t t¡}y4t|tjƒr6| | ¡||¡n| | ¡|¡Wnt k rb|  d¡SXdd„}|  |||¡S)Nóc SsPy| ¡Stk rJ}z$|jtjtjfkr8t|jŽ‚n‚Wdd}~XYnXdS)N)Ú getresultr)rBrAÚERROR_NETNAME_DELETEDÚERROR_OPERATION_ABORTEDÚConnectionResetErrorr})rnÚkeyrr,rrrÚ finish_recv±s  z&IocpProactor.recv..finish_recv) Ú_register_with_iocprAÚ Overlappedr\Ú isinstanceÚsocketZWSARecvrsZReadFileÚBrokenPipeErrorr–Ú _register)rÚconnÚnbytesr`rrrrrÚrecv¦s     zIocpProactor.recvcCsz| |¡t t¡}y4t|tjƒr6| | ¡||¡n| | ¡|¡Wnt k rb|  d¡SXdd„}|  |||¡S)Nr—c SsPy| ¡Stk rJ}z$|jtjtjfkr8t|jŽ‚n‚Wdd}~XYnXdS)N)r˜r)rBrAr™ršr›r})rnrœrr,rrrrÈs  z+IocpProactor.recv_into..finish_recv) ržrArŸr\r r¡Z WSARecvIntorsZ ReadFileIntor¢r–r£)rr¤Úbufr`rrrrrÚ recv_into½s     zIocpProactor.recv_intocCsZ| |¡t t¡}t|tjƒr4| | ¡||¡n| | ¡|¡dd„}|  |||¡S)Nc SsPy| ¡Stk rJ}z$|jtjtjfkr8t|jŽ‚n‚Wdd}~XYnXdS)N)r˜r)rBrAr™ršr›r})rnrœrr,rrrÚ finish_sendÜs  z&IocpProactor.send..finish_send) ržrArŸr\r r¡ZWSASendrsZ WriteFiler£)rr¤r§r`rr©rrrÚsendÔs    zIocpProactor.sendcsv| ˆ¡| ˆj¡‰t t¡}| ˆ ¡ˆ ¡¡‡‡fdd„}dd„}| |ˆ|¡}||ˆƒ}t j ||j d|S)NcsD| ¡t dˆ ¡¡}ˆ tjtj|¡ˆ  ˆ  ¡¡ˆˆ  ¡fS)Nz@P) r˜ÚstructÚpackrsÚ setsockoptr¡Ú SOL_SOCKETrAZSO_UPDATE_ACCEPT_CONTEXTÚ settimeoutZ gettimeoutZ getpeername)rnrœrr§)r¤ÚlistenerrrÚ finish_acceptîs  z*IocpProactor.accept..finish_acceptcÓs4y|IdHWn tjk r.| ¡‚YnXdS)N)rrtrc)r&r¤rrrÚ accept_coro÷s z(IocpProactor.accept..accept_coro)r) ržÚ_get_accept_socketÚfamilyrArŸr\ZAcceptExrsr£rZ ensure_futurer*)rr°rr±r²r&Úcoror)r¤r°rÚacceptès     zIocpProactor.acceptc s˜| ˆ¡yt ˆ ¡ˆj¡WnBtk rb}z$|jtjkr@‚ˆ  ¡ddkrR‚Wdd}~XYnXt  t ¡}|  ˆ ¡|¡‡fdd„}|  |ˆ|¡S)Nrrcs| ¡ˆ tjtjd¡ˆS)Nr)r˜r­r¡r®rAZSO_UPDATE_CONNECT_CONTEXT)rnrœr)r¤rrÚfinish_connects z,IocpProactor.connect..finish_connect)ržrAZ BindLocalrsr´r)rBÚerrnoZ WSAEINVALZ getsocknamerŸr\Z ConnectExr£)rr¤r!Úerr·r)r¤rÚconnects    zIocpProactor.connectc Csb| |¡t t¡}|d@}|d?d@}| | ¡t | ¡¡|||dd¡dd„}| |||¡S)Nlÿÿé rc SsPy| ¡Stk rJ}z$|jtjtjfkr8t|jŽ‚n‚Wdd}~XYnXdS)N)r˜r)rBrAr™ršr›r})rnrœrr,rrrÚfinish_sendfile%s  z.IocpProactor.sendfile..finish_sendfile) ržrArŸr\Z TransmitFilersÚmsvcrtZ get_osfhandler£) rZsockÚfileÚoffsetÚcountrZ offset_lowZ offset_highr¼rrrÚsendfiles       zIocpProactor.sendfilecsJ| ˆ¡t t¡}| ˆ ¡¡}|r0| ˆ¡S‡fdd„}| |ˆ|¡S)Ncs | ¡ˆS)N)r˜)rnrœr)rbrrÚfinish_accept_pipe;sz4IocpProactor.accept_pipe..finish_accept_pipe)ržrArŸr\ZConnectNamedPipersr–r£)rrbrZ connectedrÂr)rbrrr0s    zIocpProactor.accept_pipec Ãszt}xjyt |¡}PWn0tk rF}z|jtjkr6‚Wdd}~XYnXt|dtƒ}tj ||j dIdHqWt   |¡S)Né)r) ÚCONNECT_PIPE_INIT_DELAYrAZ ConnectPiper)rBZERROR_PIPE_BUSYÚminÚCONNECT_PIPE_MAX_DELAYrZsleepr*r r])rr!Zdelayr:r,rrrriAs  zIocpProactor.connect_pipecCs| ||d¡S)NF)Ú_wait_for_handle)rr:r“rrrÚwait_for_handleTszIocpProactor.wait_for_handlecCs| |dd¡}||_|S)NT)rÇrF)rrGZ done_callbackr?rrrrP\szIocpProactor._wait_cancelcs¢| ¡|dkrtj}nt |d¡}t t¡}t ||j |j |¡}|r\t ||||j d‰nt |||||j d‰ˆjr~ˆjd=‡fdd„}ˆ|d|f|j|j <ˆS)Ng@@)rrcsˆ ¡S)N)r=)rnrœr)rlrrÚfinish_wait_for_handleysz=IocpProactor._wait_for_handle..finish_wait_for_handler)rr<ÚINFINITEÚmathÚceilrArŸr\ZRegisterWaitWithQueuer‰r!rEr*rIrrŠ)rr:r“Z _is_cancelÚmsrr;rÉr)rlrrÇcs     zIocpProactor._wait_for_handlecCs0||jkr,|j |¡t | ¡|jdd¡dS)Nr)r9r^rAr‡rsr‰)rÚobjrrrrž…s  z IocpProactor._register_with_iocpc CsŠ| ¡t||jd}|jr$|jd=|jsry|dd|ƒ}Wn,tk rf}z| |¡Wdd}~XYn X| |¡||||f|j|j <|S)N)rr) rrr*rrr)r/r0rŠr!)rrrÎÚcallbackrlr•r¹rrrr£s zIocpProactor._registercCs| ¡|j |¡dS)N)rr‹r>)rrrrrrO¯szIocpProactor._unregistercCst |¡}| d¡|S)Nr)r¡r¯)rr´Úsrrrr³¹s  zIocpProactor._get_accept_socketc CsŒ|dkrt}n0|dkr tdƒ‚nt |d¡}|tkr>tdƒ‚xt |j|¡}|dkrZPd}|\}}}}y|j |¡\}} } } WnVt k rØ|j   ¡rº|j   dd||||fdœ¡|dtj fkrÒt |¡wBYnX| |jkrî| ¡qB| ¡sBy| ||| ƒ} Wn:tk r@} z| | ¡|j |¡Wdd} ~ XYqBX| | ¡|j |¡qBWx |jD]} |j | jd¡qdW|j ¡dS)Nrznegative timeoutg@@ztimeout too bigz8GetQueuedCompletionStatus() returned an unexpected eventz)err=%s transferred=%s key=%#x address=%#x)r$Ústatus)rÊÚ ValueErrorrËrÌrAZGetQueuedCompletionStatusr‰rŠÚpopÚKeyErrorr*Z get_debugr+rˆr<rNrŒr(Zdoner)r/r†r>r0r‹r!rd)rr“rÍrÑÚerrZ transferredrœr!rlrrÎrÏr•r¹rrrr=¾sJ         zIocpProactor._pollcCs|j |¡dS)N)rŒr^)rrÎrrrÚ _stop_servingõszIocpProactor._stop_servingc Cs |jdkrdSxšt|j ¡ƒD]ˆ\}\}}}}| ¡r8qt|tƒrDqy | ¡Wqtk r¤}z6|j dk r”d||dœ}|j rˆ|j |d<|j   |¡Wdd}~XYqXqWd}t   ¡} | |} xD|jr| t   ¡kröt d|t   ¡| ¡t   ¡|} | |¡qÀWg|_t |j¡d|_dS)NzCancelling a future failed)r$r%r&r'gð?z,%r is running after closing for %.1f seconds)r‰ÚlistrŠÚitemsZ cancelledr rEr(r)r*rr+ÚtimeZ monotonicr Údebugr=r†r<rN) rr!r?rrÎrÏr,r-Z msg_updateZ start_timeZnext_msgrrrrcûs:      "    zIocpProactor.closecCs | ¡dS)N)rc)rrrrre*szIocpProactor.__del__)r…)N)r)r)r)N)N)r2r3r4rrr‘r’r”r–r¦r¨rªr¶rºrÁrrrirÈrPrÇržr£rOr³r=rÖrcrerrrrr s2      "    7/r c@seZdZdd„ZdS)r{c  sPtj|f|||||dœ|—Žˆ_‡fdd„}ˆjj tˆjjƒ¡} |  |¡dS)N)r~rr€rr‚csˆj ¡}ˆ |¡dS)N)Ú_procZpollZ_process_exited)rlÚ returncode)rrrrÏ5s z4_WindowsSubprocessTransport._start..callback) r ÚPopenrÛr*rJrÈÚintr7ru) rr}r~rr€rr‚rƒrÏrlr)rrÚ_start0s   z"_WindowsSubprocessTransport._startN)r2r3r4rßrrrrr{.sr{c@seZdZeZdS)rN)r2r3r4r Ú _loop_factoryrrrrr@src@seZdZeZdS)rN)r2r3r4r ràrrrrrDsr)-rAr<r¸rËr½r¡r«rÙrSÚrrrrrrr Úlogr Ú__all__r\rÊZERROR_CONNECTION_REFUSEDZERROR_CONNECTION_ABORTEDrÄrÆZFuturerr6rErIÚobjectrQZBaseSelectorEventLooprfZBaseProactorEventLoopr r ZBaseSubprocessTransportr{r ZBaseDefaultEventLoopPolicyrrrrrrrÚsN        0J4;P2