PNG  IHDR;IDATxܻn0K )(pA 7LeG{ §㻢|ذaÆ 6lذaÆ 6lذaÆ 6lom$^yذag5bÆ 6lذaÆ 6lذa{ 6lذaÆ `}HFkm,mӪôô! x|'ܢ˟;E:9&ᶒ}{v]n&6 h_tڠ͵-ҫZ;Z$.Pkž)!o>}leQfJTu іچ\X=8Rن4`Vwl>nG^is"ms$ui?wbs[m6K4O.4%/bC%t Mז -lG6mrz2s%9s@-k9=)kB5\+͂Zsٲ Rn~GRC wIcIn7jJhۛNCS|j08yiHKֶۛkɈ+;SzL/F*\Ԕ#"5m2[S=gnaPeғL lذaÆ 6l^ḵaÆ 6lذaÆ 6lذa; _ذaÆ 6lذaÆ 6lذaÆ RIENDB`  oY.l@sddlZddlZddlZddlZddlZddlZddlmZddlmZddlm Z ddlm Z ddlm Z ddlm Z dd lm Z dd lmZdd lmZdd lmZd dddgZdZdZdZdZdZdZGddde jZGddde jZGdddeZGdddeZGdddeZ Gd d!d!e j!Z"Gd"dde j#Z$Gd#ddZ%Gd$d%d%ej&Z'e"Z(Gd&d'd'ej)Z*e*Z+dS)(N)events)base_subprocess)futures)proactor_events)selector_events)tasks) windows_utils) _overlapped) coroutine)loggerSelectorEventLoopProactorEventLoop IocpProactorDefaultEventLoopPolicyliigMbP?g?cs|eZdZddfddZfddZddZfd d Zfd d Zfd dZS)_OverlappedFutureloopNcs3tjd||jr&|jd=||_dS)Nrr)super__init___source_traceback_ov)selfovr) __class__-/opt/python35/lib/python3.5/windows_events.pyr-s  z_OverlappedFuture.__init__csZtj}|jdk rV|jjr0dnd}|jdd||jjf|S)NpendingZ completedrzoverlapped=<%s, %#x>)r _repr_inforrinsertaddress)rinfostate)rrrr3s  z_OverlappedFuture._repr_infocCs|jdkrdSy|jjWnctk r}zCddd|d|i}|jrg|j|d<|jj|WYdd}~XnXd|_dS)Nmessagez&Cancelling an overlapped future failed exceptionfuturesource_traceback)rcancelOSErrorr_loopcall_exception_handler)rexccontextrrr_cancel_overlapped:s   #z$_OverlappedFuture._cancel_overlappedcs|jtjS)N)r-rr')r)rrrr'Js z_OverlappedFuture.cancelcstj||jdS)N)r set_exceptionr-)rr$)rrrr.Nsz_OverlappedFuture.set_exceptioncstj|d|_dS)N)r set_resultr)rresult)rrrr/Rsz_OverlappedFuture.set_result) __name__ __module__ __qualname__rrr-r'r.r/rr)rrr's  rcseZdZddfddZddZfddZd d Zd d Zfd dZfddZ fddZ S)_BaseWaitHandleFuturerNcsNtjd||jr&|jd=||_||_||_d|_dS)NrrTr)rrrr_handle _wait_handle _registered)rrhandle wait_handler)rrrrZs     z_BaseWaitHandleFuture.__init__cCstj|jdtjkS)Nr)_winapiZWaitForSingleObjectr5Z WAIT_OBJECT_0)rrrr_pollhsz_BaseWaitHandleFuture._pollcs~tj}|jd|j|jdk rW|jrDdnd}|j||jdk rz|jd|j|S)Nz handle=%#xsignaledZwaitingzwait_handle=%#x)rrappendr5r;r6)rr!r")rrrrms z _BaseWaitHandleFuture._repr_infocCs d|_dS)N)r)rfutrrr_unregister_wait_cbwsz)_BaseWaitHandleFuture._unregister_wait_cbcCs|js dSd|_|j}d|_ytj|Wnytk r}zY|jtjkrddd|d|i}|jr|j|d<|jj |dSWYdd}~XnX|j ddS)NFr#z$Failed to unregister the wait handler$r%r&) r7r6r ZUnregisterWaitr(winerrorERROR_IO_PENDINGrr)r*r?)rr9r+r,rrr_unregister_wait|s"       z&_BaseWaitHandleFuture._unregister_waitcs|jtjS)N)rBrr')r)rrrr's z_BaseWaitHandleFuture.cancelcs|jtj|dS)N)rBrr.)rr$)rrrr.s z#_BaseWaitHandleFuture.set_exceptioncs|jtj|dS)N)rBrr/)rr0)rrrr/s z _BaseWaitHandleFuture.set_result) r1r2r3rr;rr?rBr'r.r/rr)rrr4Ws    r4csFeZdZddfddZddZfddZS) _WaitCancelFuturerNcs)tj|||d|d|_dS)Nr)rr_done_callback)rreventr9r)rrrrsz_WaitCancelFuture.__init__cCstddS)Nz'_WaitCancelFuture must not be cancelled) RuntimeError)rrrrr'sz_WaitCancelFuture.cancelcs3tt|j|jdk r/|j|dS)N)rrC_schedule_callbacksrD)r)rrrrGsz%_WaitCancelFuture._schedule_callbacks)r1r2r3rr'rGrr)rrrCs  rCcsFeZdZddfddZfddZddZS) _WaitHandleFuturerNcsVtj|||d|||_d|_tjdddd|_d|_dS)NrTF)rr _proactorZ_unregister_proactorr Z CreateEvent_event _event_fut)rrr8r9proactorr)rrrrs   z_WaitHandleFuture.__init__csa|jdk r1tj|jd|_d|_|jj|jd|_tj|dS)N) rJr: CloseHandlerKrI _unregisterrrr?)rr>)rrrr?s   z%_WaitHandleFuture._unregister_wait_cbcCs|js dSd|_|j}d|_ytj||jWnytk r}zY|jtjkrddd|d|i}|jr|j|d<|j j |dSWYdd}~XnX|j j |j|j |_dS)NFr#z$Failed to unregister the wait handler$r%r&)r7r6r ZUnregisterWaitExrJr(r@rArr)r*rI _wait_cancelr?rK)rr9r+r,rrrrBs$       z"_WaitHandleFuture._unregister_wait)r1r2r3rr?rBrr)rrrHs rHc@sReZdZddZddZddZddZd d ZeZd S) PipeServercCs@||_tj|_d|_d|_|jd|_dS)NT)_addressweakrefWeakSet_free_instances_pipe_accept_pipe_future_server_pipe_handle)rr rrrrs    zPipeServer.__init__cCs |j|jd}|_|S)NF)rUrW)rtmprrr_get_unconnected_pipesz PipeServer._get_unconnected_pipec Cs|jrdStjtjB}|r3|tjO}tj|j|tjtjBtj Btj t j t j tj tj}t j|}|jj||S)N)closedr:ZPIPE_ACCESS_DUPLEXZFILE_FLAG_OVERLAPPEDZFILE_FLAG_FIRST_PIPE_INSTANCEZCreateNamedPiperQZPIPE_TYPE_MESSAGEZPIPE_READMODE_MESSAGEZ PIPE_WAITZPIPE_UNLIMITED_INSTANCESr BUFSIZEZNMPWAIT_WAIT_FOREVERNULL PipeHandlerTadd)rfirstflagshpiperrrrWs     zPipeServer._server_pipe_handlecCs |jdkS)N)rQ)rrrrrZszPipeServer.closedcCsu|jdk r%|jjd|_|jdk rqx|jD]}|jq>Wd|_d|_|jjdS)N)rVr'rQrTcloserUclear)rrbrrrrcs    zPipeServer.closeN) r1r2r3rrYrWrZrc__del__rrrrrPs     rPc@seZdZddZdS)_WindowsSelectorEventLoopcCs tjS)N)r socketpair)rrrr _socketpair&sz%_WindowsSelectorEventLoop._socketpairN)r1r2r3rhrrrrrf#s rfcsjeZdZdfddZddZeddZedd Zedd d ZS) rNcs)|dkrt}tj|dS)N)rrr)rrL)rrrr-s  zProactorEventLoop.__init__cCs tjS)N)r rg)rrrrrh2szProactorEventLoop._socketpairccsN|jj|}|EdH}|}|j||dd|i}||fS)Nextraaddr)rI connect_pipe_make_duplex_pipe_transport)rprotocol_factoryr frbprotocoltransrrrcreate_pipe_connection5s   z(ProactorEventLoop.create_pipe_connectioncsAtdfddjgS)Ncsbd}y|rj|j}jj|jrE|jdS}j||ddij}|dkrdSjj|}Wnt k r#}zh|r|j d krj ddd|d|i|jnj rt jd|d d WYdd}~Xn;tjk rG|rC|jYnX|_|jdS) Nrirjrr#zPipe accept failedr$rbzAccept pipe failed on pipe %rexc_infoTr)r0rTdiscardrZrcrlrYrI accept_piper(filenor*Z_debugr warningrCancelledErrorrVadd_done_callback)rnrbror+)r loop_accept_pipermrserverrrryBs<           z>ProactorEventLoop.start_serving_pipe..loop_accept_pipe)rPZ call_soon)rrmr r)r ryrmrrzrstart_serving_pipe>s !( z$ProactorEventLoop.start_serving_pipec ks|j} t||||||||d| d|| } y | EdHWn+tk rv} z | } WYdd} ~ XnXd} | dk r| j| jEdH| | S)Nwaiterri) create_future_WindowsSubprocessTransport Exceptionrc_wait)rroargsshellstdinstdoutstderrbufsizerikwargsr|Ztranspr+errrrr_make_subprocess_transportms      z,ProactorEventLoop._make_subprocess_transport) r1r2r3rrhr rqr{rrr)rrr*s   /c@s0eZdZdddZddZddZdd d Zd d Zd ddZd ddZ ddZ ddZ ddZ e ddZdddZddZddZd d!Zd"d#Zd$d%Zd&d'Zdd(d)Zd*d+Zd,d-Zd.d/ZdS)0rlcCsdd|_g|_tjtjtd||_i|_tj |_ g|_ tj |_ dS)Nr) r)_resultsr CreateIoCompletionPortINVALID_HANDLE_VALUEr\_iocp_cacherRrSr7 _unregistered_stopped_serving)rZ concurrencyrrrrs    zIocpProactor.__init__cCs)d|jjt|jt|jfS)Nz<%s overlapped#=%s result#=%s>)rr1lenrr)rrrr__repr__szIocpProactor.__repr__cCs ||_dS)N)r))rrrrrset_loopszIocpProactor.set_loopNcCs,|js|j||j}g|_|S)N)rr;)rtimeoutrXrrrselects     zIocpProactor.selectcCs |jj}|j||S)N)r)r}r/)rvaluer>rrr_results zIocpProactor._resultrc Cs|j|tjt}yHt|tjrM|j|j||n|j|j|Wnt k r|j dSYnXdd}|j |||S)NcSsay|jSWnLtk r\}z,|jtjkrGt|jnWYdd}~XnXdS)N) getresultr(r@r ERROR_NETNAME_DELETEDConnectionResetErrorr)rpkeyrr+rrr finish_recvs z&IocpProactor.recv..finish_recv) _register_with_iocpr Overlappedr\ isinstancesocketZWSARecvruZReadFileBrokenPipeErrorr _register)rconnnbytesr`rrrrrrecvs   zIocpProactor.recvcCs|j|tjt}t|tjrJ|j|j||n|j|j|dd}|j |||S)NcSsay|jSWnLtk r\}z,|jtjkrGt|jnWYdd}~XnXdS)N)rr(r@r rrr)rprrr+rrr finish_sends z&IocpProactor.send..finish_send) rr rr\rrZWSASendruZ WriteFiler)rrbufr`rrrrrsends  zIocpProactor.sendcs|j|jjtjt}|jjjfdd}tdd}|j ||}||}t j |d|j |S)Ncs^|jtjdj}jtjtj|j j j fS)Nz@P) rstructpackru setsockoptr SOL_SOCKETr ZSO_UPDATE_ACCEPT_CONTEXT settimeout gettimeout getpeername)rprrr)rlistenerrr finish_accepts    z*IocpProactor.accept..finish_acceptc ss6y |EdHWn"tjk r1|jYnXdS)N)rrwrc)r%rrrr accept_coros   z(IocpProactor.accept..accept_coror) r_get_accept_socketfamilyr rr\ZAcceptExrur rrZ ensure_futurer))rrrrrr%coror)rrraccepts   zIocpProactor.acceptcs|jytjjjWnStk r}z3|jtjkrTj ddkrmWYdd}~XnXtj t }|j j|fdd}|j ||S)Nrrcs'|jjtjtjdS)Nr)rrrrr ZSO_UPDATE_CONNECT_CONTEXT)rprr)rrrfinish_connects   z,IocpProactor.connect..finish_connect)rr Z BindLocalrurr(r@errnoZ WSAEINVAL getsocknamerr\Z ConnectExr)rrr errr)rrconnects zIocpProactor.connectcsi|jtjt}|jj}|rD|jSfdd}|j||S)Ncs|jS)N)r)rprr)rbrrfinish_accept_pipes z4IocpProactor.accept_pipe..finish_accept_pipe)rr rr\ZConnectNamedPiperurr)rrbrZ connectedrr)rbrrts  zIocpProactor.accept_pipeccst}xytj|}PWn:tk rY}z|jtjkrGWYdd}~XnXt|dt}tj |d|j EdHq Wt j |S)Nr) CONNECT_PIPE_INIT_DELAYr Z ConnectPiper(r@ZERROR_PIPE_BUSYminCONNECT_PIPE_MAX_DELAYrsleepr)r r])rr delayr8r+rrrrkszIocpProactor.connect_pipecCs|j||dS)NF)_wait_for_handle)rr8rrrrwait_for_handle*szIocpProactor.wait_for_handlecCs"|j|dd}||_|S)NT)rrD)rrEZ done_callbackr>rrrrO2s zIocpProactor._wait_cancelcs|dkrtj}ntj|d}tjt}tj||j|j |}|r|t |||d|j nt ||||d|j j rj d=fdd}|d|f|j|j <S)Ng@@rrcs jS)N)r;)rprr)rnrrfinish_wait_for_handleMsz=IocpProactor._wait_for_handle..finish_wait_for_handlerr)r:INFINITEmathceilr rr\ZRegisterWaitWithQueuerr rCr)rHrr)rr8rZ _is_cancelmsrr9rr)rnrr9s      zIocpProactor._wait_for_handlecCsB||jkr>|jj|tj|j|jdddS)Nr)r7r^r rrur)robjrrrrYsz IocpProactor._register_with_iocpcCst|d|j}|jr(|jd=|jsy|dd|}Wn2tk r{}z|j|WYdd}~XnX|j|||||f|j|j<|S)Nrrr) rr)rrr(r.r/rr )rrrcallbackrnrrrrrrcs     zIocpProactor._registercCs|jj|dS)N)rr=)rrrrrrNszIocpProactor._unregistercCs tj|}|jd|S)Nr)rr)rrsrrrrs zIocpProactor._get_accept_socketcCs|dkrt}nF|dkr0tdn+tj|d}|tkr[tdxutj|j|}|dkrPd}|\}}}}y"|jj|\}} } } Wnrt k r.|j j r|j j dddd||||fi|dtj fkr'tj|w^YnX| |jkrK|jq^|js^y| ||| } WnBtk r} z"|j| |jj|WYdd} ~ Xq^X|j| |jj|q^Wx'|jD]} |jj| jdqW|jjdS) Nrznegative timeoutg@@ztimeout too bigr#z8GetQueuedCompletionStatus() returned an unexpected eventstatusz)err=%s transferred=%s key=%#x address=%#x)r ValueErrorrrr ZGetQueuedCompletionStatusrrpopKeyErrorr)Z get_debugr*rr:rMrr'doner(r.rr=r/rr rd)rrrrrZ transferredrr rnrrrrrrrrr;sJ      "      # zIocpProactor._pollcCs|jj|dS)N)rr^)rrrrr _stop_servingszIocpProactor._stop_servingcCs7xt|jjD]\}\}}}}|jr=qt|trOqy|jWqtk r}zR|jdk rddd|d|i}|j r|j |d<|jj |WYdd}~XqXqWx)|jr|j dst j dqWg|_|jdk r3tj|jd|_dS)Nr#zCancelling a future failedr$r%r&rz"taking long time to close proactor)listritems cancelledrrCr'r(r)rr*r;r debugrrr:rM)rr r>rrrr+r,rrrrcs,.    '  zIocpProactor.closecCs|jdS)N)rc)rrrrreszIocpProactor.__del__)r1r2r3rrrrrrrrrrtr rkrrOrrrrNrr;rrcrerrrrrs,          7  c@seZdZddZdS)r~c swtj|d|d|d|d|d||_fdd}jjjtjj} | j|dS)Nrrrrrcs jj}j|dS)N)_procpollZ_process_exited)rn returncode)rrrrsz4_WindowsSubprocessTransport._start..callback) r Popenrr)rIrintr5rx) rrrrrrrrrrnr)rr_starts !z"_WindowsSubprocessTransport._startN)r1r2r3rrrrrr~s r~c@seZdZeZdS)_WindowsDefaultEventLoopPolicyN)r1r2r3r Z _loop_factoryrrrrrs r),r:rrrrrRrrrrrrr r Z coroutinesr logr __all__r\rZERROR_CONNECTION_REFUSEDZERROR_CONNECTION_ABORTEDrrFuturerr4rCrHobjectrPZBaseSelectorEventLooprfZBaseProactorEventLooprrZBaseSubprocessTransportr~r ZBaseDefaultEventLoopPolicyrrrrrrsH        0J4;]j