o ?Og@s ddlZejdkredddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl m Z ddl mZddl mZddl mZdd l mZdd l mZdd l mZdd l mZdd lmZdZdZdZdZdZdZdZGdddejZGdddejZ Gddde Z!Gddde Z"Gddde#Z$Gdddej%Z&Gd d!d!ej'Z(Gd"d#d#Z)Gd$d%d%ej*Z+e&Z,Gd&d'd'e j-Z.Gd(d)d)e j-Z/e/Z0dS)*NZwin32z win32 only)events)base_subprocess)futures) exceptions)proactor_events)selector_events)tasks) windows_utils)logger)SelectorEventLoopProactorEventLoop IocpProactorDefaultEventLoopPolicyWindowsSelectorEventLoopPolicyWindowsProactorEventLoopPolicyiigMbP?g?cs^eZdZ ddfdd ZfddZddZdfd d Zfd d Zfd dZZ S)_OverlappedFutureNloopcs&tj|d|jr|jd=||_dSNr)super__init___source_traceback_ov)selfovr __class__=/opt/alt/python310/lib64/python3.10/asyncio/windows_events.pyr6s z_OverlappedFuture.__init__csHt}|jdur"|jjrdnd}|dd|d|jjdd|S)NpendingZ completedrz overlapped=)r _repr_inforr"insertaddressrinfostaterr r!r%<s   z_OverlappedFuture._repr_infoc Cst|jdurdSz|jWn&ty4}zd||d}|jr$|j|d<|j|WYd}~nd}~wwd|_dS)Nz&Cancelling an overlapped future failedmessage exceptionfuturesource_traceback)rcancelOSErrorr_loopcall_exception_handler)rexccontextr r r!_cancel_overlappedCs   z$_OverlappedFuture._cancel_overlappedc|tj|dSN)msg)r6rr0rr9rr r!r0Sz_OverlappedFuture.cancelcst||dSN)r set_exceptionr6rr-rr r!r=Ws  z_OverlappedFuture.set_exceptioncst|d|_dSr<)r set_resultrrresultrr r!r?[s  z_OverlappedFuture.set_resultr<) __name__ __module__ __qualname__rr%r6r0r=r? __classcell__r r rr!r0s  rcsneZdZ ddfdd ZddZfddZd d Zd d Zdfd d ZfddZ fddZ Z S)_BaseWaitHandleFutureNrcs8tj|d|jr|jd=||_||_||_d|_dS)NrrT)rrrr_handle _wait_handle _registered)rrhandle wait_handlerrr r!rcs z_BaseWaitHandleFuture.__init__cCst|jdtjkSNr)_winapiZWaitForSingleObjectrGZ WAIT_OBJECT_0rr r r!_pollqs z_BaseWaitHandleFuture._pollcsdt}|d|jd|jdur!|rdnd}|||jdur0|d|jd|S)Nzhandle=r#ZsignaledZwaitingz wait_handle=)rr%appendrGrOrHr(rr r!r%vs    z _BaseWaitHandleFuture._repr_infocCs d|_dSr<)rrfutr r r!_unregister_wait_cbs z)_BaseWaitHandleFuture._unregister_wait_cbc Cs|jsdSd|_|j}d|_zt|Wn3tyH}z'|jtjkr>d||d}|jr1|j|d<|j |WYd}~dSWYd}~nd}~ww| ddSNFz$Failed to unregister the wait handler+r/) rIrH _overlappedZUnregisterWaitr1winerrorERROR_IO_PENDINGrr2r3rSrrKr4r5r r r!_unregister_waits*     z&_BaseWaitHandleFuture._unregister_waitcr7r8)rYrr0r:rr r!r0r;z_BaseWaitHandleFuture.cancelc|t|dSr<)rYrr=r>rr r!r=z#_BaseWaitHandleFuture.set_exceptioncrZr<)rYrr?r@rr r!r?r[z _BaseWaitHandleFuture.set_resultr<) rBrCrDrrOr%rSrYr0r=r?rEr r rr!rF`s   rFcsDeZdZ ddfdd ZddZfddZfd d ZZS) _WaitCancelFutureNrcstj||||dd|_dS)Nr)rr_done_callback)rreventrKrrr r!rs z_WaitCancelFuture.__init__cCstd)Nz'_WaitCancelFuture must not be cancelled) RuntimeErrorrNr r r!r0sz_WaitCancelFuture.cancelc(t||jdur||dSdSr<)rr?r]r@rr r!r?  z_WaitCancelFuture.set_resultcr`r<)rr=r]r>rr r!r=raz_WaitCancelFuture.set_exception)rBrCrDrr0r?r=rEr r rr!r\s  r\cs6eZdZddfdd ZfddZddZZS) _WaitHandleFutureNrcs<tj||||d||_d|_tdddd|_d|_dS)NrTF)rr _proactorZ_unregister_proactorrUZ CreateEvent_event _event_fut)rrrJrKproactorrrr r!rs  z_WaitHandleFuture.__init__csF|jdurt|jd|_d|_|j|jd|_t|dSr<) rdrM CloseHandlererc _unregisterrrrSrQrr r!rSs   z%_WaitHandleFuture._unregister_wait_cbc Cs|jsdSd|_|j}d|_z t||jWn3tyJ}z'|jtjkr@d||d}|jr3|j|d<|j |WYd}~dSWYd}~nd}~ww|j |j|j |_dSrT)rIrHrUZUnregisterWaitExrdr1rVrWrr2r3rc _wait_cancelrSrerXr r r!rYs.      z"_WaitHandleFuture._unregister_wait)rBrCrDrrSrYrEr r rr!rbs rbc@s:eZdZ ddZddZddZddZd d ZeZd S) PipeServercCs,||_t|_d|_d|_|d|_dSNT)_addressweakrefWeakSet_free_instances_pipe_accept_pipe_future_server_pipe_handle)rr'r r r!rs  zPipeServer.__init__cCs|j|d}|_|SNF)rprr)rtmpr r r!_get_unconnected_pipesz PipeServer._get_unconnected_pipec Csr|rdStjtjB}|r|tjO}t|j|tjtjBtj Btj t j t j tj tj}t |}|j||Sr<)closedrMZPIPE_ACCESS_DUPLEXZFILE_FLAG_OVERLAPPEDZFILE_FLAG_FIRST_PIPE_INSTANCEZCreateNamedPiperlZPIPE_TYPE_MESSAGEZPIPE_READMODE_MESSAGEZ PIPE_WAITZPIPE_UNLIMITED_INSTANCESr ZBUFSIZEZNMPWAIT_WAIT_FOREVERNULL PipeHandleroadd)rfirstflagshpiper r r!rr s"     zPipeServer._server_pipe_handlecCs |jduSr<)rlrNr r r!rv zPipeServer.closedcCsV|jdur |jd|_|jdur)|jD]}|qd|_d|_|jdSdSr<)rqr0rlrocloserpclear)rr}r r r!r"s     zPipeServer.closeN) rBrCrDrrurrrvr__del__r r r r!rjs  rjc@s eZdZdS)_WindowsSelectorEventLoopN)rBrCrDr r r r!r1srcsHeZdZ d fdd ZfddZddZdd Z d d d ZZS) r Ncs|durt}t|dSr<)rrr)rrfrr r!r8szProactorEventLoop.__init__c sz.||jtW|jdur-|jj}|j|dur(|js(|j |d|_dSdS|jdurM|jj}|j|durJ|jsJ|j |d|_wr<) call_soonZ_loop_self_readingr run_foreverZ_self_reading_futurerr0r"rcrhrrrr r!r=s        zProactorEventLoop.run_forevercs:|j|}|IdH}|}|j||d|id}||fS)Naddrextra)rc connect_pipe_make_duplex_pipe_transport)rprotocol_factoryr'fr}protocoltransr r r!create_pipe_connectionPs  z(ProactorEventLoop.create_pipe_connectioncs0tdfdd gS)Nc sTd}z7|r'|}j|r|WdS}j||did}|dur2WdSj|}Wnft yT|rL| dkrL| YdSt y}z-|rq| dkrq d||d|n jr|tjd|dd WYd}~dSd}~wtjy|r|YdSYdSw|_|dS) NrrrzPipe accept failed)r,r-r}zAccept pipe failed on pipe %rT)exc_info)rArodiscardrvrrrurc accept_pipeBrokenPipeErrorfilenorr1r3Z_debugr ZwarningrCancelledErrorrqadd_done_callback)rr}rr4r'loop_accept_piperrZserverr r!r[sR    z>ProactorEventLoop.start_serving_pipe..loop_accept_piper<)rjr)rrr'r rr!start_serving_pipeXs  -z$ProactorEventLoop.start_serving_pipec sx|} t||||||||f| |d| } z| IdHW| Sttfy)ty;| | IdHw)N)waiterr) create_future_WindowsSubprocessTransport SystemExitKeyboardInterrupt BaseExceptionrZ_wait) rrargsshellstdinstdoutstderrbufsizerkwargsrZtranspr r r!_make_subprocess_transports&   z,ProactorEventLoop._make_subprocess_transportr<) rBrCrDrrrrrrEr r rr!r 5s 5r c@seZdZ d:ddZddZddZdd Zd;d d Zd dZdrrcCsDd|_g|_ttjtd||_i|_t |_ g|_ t |_ dSrL) r2_resultsrUCreateIoCompletionPortINVALID_HANDLE_VALUErw_iocp_cachermrnrI _unregistered_stopped_serving)rZ concurrencyr r r!rs  zIocpProactor.__init__cCs|jdur tddS)NzIocpProactor is closed)rr_rNr r r! _check_closeds zIocpProactor._check_closedcCsFdt|jdt|jg}|jdur|dd|jjd|fS)Nzoverlapped#=%sz result#=%srvz<%s %s> )lenrrrrPrrBjoin)rr)r r r!__repr__s    zIocpProactor.__repr__cCs ||_dSr<)r2)rrr r r!set_loopr~zIocpProactor.set_loopNcCs.|js|||j}g|_z|Wd}Sd}wr<)rrO)rtimeoutrtr r r!selects  zIocpProactor.selectcCs|j}|||Sr<)r2rr?)rvaluerRr r r!_result  zIocpProactor._resultrcC|||tt}zt|tjr||||n|||Wnt y2| dYSwdd}| |||S)Nc SBz|WSty }z|jtjtjfvrt|jd}~wwr< getresultr1rVrUZERROR_NETNAME_DELETEDZERROR_OPERATION_ABORTEDConnectionResetErrorrrkeyrr4r r r! finish_recv  z&IocpProactor.recv..finish_recv) _register_with_iocprU Overlappedrw isinstancesocketZWSARecvrZReadFilerr _registerrconnnbytesr{rrr r r!recv     zIocpProactor.recvcCr)Nrc Srr<rrr r r!rrz+IocpProactor.recv_into..finish_recv) rrUrrwrrZ WSARecvIntorZ ReadFileIntorrr)rrbufr{rrr r r! recv_intorzIocpProactor.recv_intocCs^||tt}z ||||Wnty#|dYSwdd}||||S)N)rNc Srr<rrr r r!rrz*IocpProactor.recvfrom..finish_recv) rrUrrwZ WSARecvFromrrrrrr r r!recvfroms    zIocpProactor.recvfromcCs>||tt}|||||dd}||||S)Nc Srr<rrr r r! finish_sendrz(IocpProactor.sendto..finish_send)rrUrrwZ WSASendTorr)rrrr{rrrr r r!sendto s   zIocpProactor.sendtocCsZ||tt}t|tjr||||n|||dd}| |||S)Nc Srr<rrr r r!r&rz&IocpProactor.send..finish_send) rrUrrwrrZWSASendrZ WriteFiler)rrrr{rrr r r!sends    zIocpProactor.sendcsv||jtt}|fdd}dd}|||}||}t j ||j d|S)NcsD|td}tjtj|   fS)Nz@P) rstructZpackr setsockoptr SOL_SOCKETrUZSO_UPDATE_ACCEPT_CONTEXT settimeoutZ gettimeoutZ getpeername)rrrrrlistenerr r! finish_accept8s z*IocpProactor.accept..finish_acceptcs.z|IdHWdStjy|wr<)rrr)r.rr r r! accept_coroAsz(IocpProactor.accept..accept_coror) r_get_accept_socketfamilyrUrrwZAcceptExrrr Z ensure_futurer2)rrrrrr.coror rr!accept2s     zIocpProactor.acceptc sjtjkrt||j}|d|S| z t j Wn"t yL}z|j tjkr9ddkrBWYd}~nd}~wwtt}||fdd}|||S)Nrrcs|tjtjdSrL)rrrrrUZSO_UPDATE_CONNECT_CONTEXTrrrrr r!finish_connectds z,IocpProactor.connect..finish_connect)typerZ SOCK_DGRAMrUZ WSAConnectrr2rr?rZ BindLocalrr1rVerrnoZ WSAEINVALZ getsocknamerrwZ ConnectExr)rrr'rRerrr rr!connectNs(        zIocpProactor.connectc Csb||tt}|d@}|d?d@}||t||||dddd}||||S)Nr rc Srr<rrr r r!finish_sendfilewrz.IocpProactor.sendfile..finish_sendfile) rrUrrwZ TransmitFilermsvcrtZ get_osfhandler) rZsockfileoffsetcountrZ offset_lowZ offset_highrr r r!sendfilems      zIocpProactor.sendfilecsJ|tt}|}|r|Sfdd}|||S)Ncs |Sr<)rrr}r r!finish_accept_pipesz4IocpProactor.accept_pipe..finish_accept_pipe)rrUrrwZConnectNamedPiperrr)rr}rZ connectedrr rr!rs    zIocpProactor.accept_pipec stt} zt|}Wn)ty$}z |jtjkrWYd}~nd}~wwt|dt}t |IdHqt |S)NT) CONNECT_PIPE_INIT_DELAYrUZ ConnectPiper1rVZERROR_PIPE_BUSYminCONNECT_PIPE_MAX_DELAYr sleepr rx)rr'ZdelayrJr4r r r!rs     zIocpProactor.connect_pipecCs |||dSrs)_wait_for_handle)rrJrr r r!wait_for_handleszIocpProactor.wait_for_handlecCs||dd}||_|Srk)rr])rr^Z done_callbackrRr r r!riszIocpProactor._wait_cancelcs||dur tj}nt|d}tt}t||j |j |}|r.t ||||j dn t |||||j djr?jd=fdd}|d|f|j|j <S)N@@rrcsSr<)rOrrr r!finish_wait_for_handlesz=IocpProactor._wait_for_handle..finish_wait_for_handler)rrMINFINITEmathceilrUrrwZRegisterWaitWithQueuerr'r\r2rbrr)rrJrZ _is_cancelmsrrKrr rr!rs$     zIocpProactor._wait_for_handlecCs4||jvr|j|t||jdddSdSrL)rIryrUrrrrobjr r r!rs  z IocpProactor._register_with_iocpc Cs|t||jd}|jr|jd=|js:z|dd|}Wnty4}z ||WYd}~n d}~ww||||||f|j|j <|Sr) rrr2rr"r1r=r?rr')rrrcallbackrrrr r r!rs  zIocpProactor._registercCs ||j|dSr<)rrrPrr r r!rhszIocpProactor._unregistercCst|}|d|SrL)rr)rrsr r r!r rzIocpProactor._get_accept_socketc Cs|durt}n|dkrtdt|d}|tkrtd t|j|}|dur+nd}|\}}}}z |j|\}} } } Wn)t yh|j rZ|j dd||||fd|dtj fvrft|Yqw| |jvrs|n=|sz5z| ||| } Wnty} z|| |j|WYd} ~ nd} ~ ww|| |j|Wd}nd}wq|jD] } |j| jdq|jdS) Nrznegative timeoutrztimeout too bigTz8GetQueuedCompletionStatus() returned an unexpected eventz)err=%s transferred=%s key=%#x address=%#x)r,status)r ValueErrorrrrUZGetQueuedCompletionStatusrrpopKeyErrorr2Z get_debugr3rrMrgrr0Zdoner1r=rrPr?rr'r)rrrrerrZ transferredrr'rrrrrrr r r!rOsZ            )zIocpProactor._pollcCs|j|dSr<)rryrr r r! _stop_servingIszIocpProactor._stop_servingc Cs|jdurdSt|jD]D\}\}}}}|rqt|tr!qz|WqtyR}z|j durHd||d}|j rB|j |d<|j |WYd}~qd}~wwd}t } | |} |jr| t krwtd|t | t |} |||js`g|_t|jd|_dS)NzCancelling a future failedr+r/g?z,%r is running after closing for %.1f seconds)rlistritemsZ cancelledrr\r0r1r2rr3time monotonicr debugrOrrMrg) rr'rRrrrr4r5Z msg_updateZ start_timeZnext_msgr r r!rOsD            zIocpProactor.closecCs |dSr<)rrNr r r!r~s zIocpProactor.__del__)rr<)r)rN)rBrCrDrrrrrrrrrrrrrrrrrrirrrrhrrOrrrr r r r!rs:         "   9 /rc@seZdZddZdS)rc  sPtj|f|||||d|_fdd}jjtjj} | |dS)N)rrrrrcsj}|dSr<)_procZpollZ_process_exited)r returncoderNr r!rs z4_WindowsSubprocessTransport._start..callback) r Popenr r2rcrintrGr) rrrrrrrrrrr rNr!_starts z"_WindowsSubprocessTransport._startN)rBrCrDrr r r r!rs rc@eZdZeZdS)rN)rBrCrDr _loop_factoryr r r r!rrc@r)rN)rBrCrDr rr r r r!rrr)1sysplatform ImportErrorrUrMrrrrrr rmrrrrrrr r logr __all__rwrZERROR_CONNECTION_REFUSEDZERROR_CONNECTION_ABORTEDrrZFuturerrFr\rbobjectrjZBaseSelectorEventLooprZBaseProactorEventLoopr rZBaseSubprocessTransportrr ZBaseDefaultEventLoopPolicyrrrr r r r!sZ          0J4;jf