a DOg@sddlZejdkredddlZddlZddlZddlZddlZddlZddl 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\eZdZddfdd ZfddZddZdfd d Zfd d Zfd dZZ S)_OverlappedFutureNloopcs&tj|d|jr|jd=||_dSNr)super__init___source_traceback_ov)selfovr __class__;/opt/alt/python39/lib64/python3.9/asyncio/windows_events.pyr6sz_OverlappedFuture.__init__csHt}|jdurD|jjr dnd}|dd|d|jjdd|S)NpendingZ completedrz overlapped=)r _repr_inforr"insertaddressrinfostaterr r!r%<s    z_OverlappedFuture._repr_infoc Cst|jdurdSz|jWnLtyh}z4d||d}|jrH|j|d<|j|WYd}~n d}~00d|_dS)Nz&Cancelling an overlapped future failedmessage exceptionfuturesource_traceback)rcancelOSErrorr_loopcall_exception_handler)rexccontextr r r!_cancel_overlappedCs  "z$_OverlappedFuture._cancel_overlappedcs|tj|dSN)msg)r6rr0rr8rr r!r0Ssz_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_result)N) __name__ __module__ __qualname__rr%r6r0r;r= __classcell__r r rr!r0s   rcsleZdZddfdd 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!rcsz_BaseWaitHandleFuture.__init__cCst|jdtjkSNr)_winapiZWaitForSingleObjectrEZ WAIT_OBJECT_0rr r r!_pollqs z_BaseWaitHandleFuture._pollcsdt}|d|jd|jdurB|r4dnd}|||jdur`|d|jd|S)Nzhandle=r#ZsignaledZwaitingz wait_handle=)rr%appendrErMrFr(rr r!r%vs    z _BaseWaitHandleFuture._repr_infocCs d|_dSr:)rrfutr r r!_unregister_wait_cbsz)_BaseWaitHandleFuture._unregister_wait_cbc Cs|js dSd|_|j}d|_zt|Wnfty}zN|jtjkr|d||d}|jrb|j|d<|j |WYd}~dSWYd}~n d}~00| ddSNFz$Failed to unregister the wait handler+r/) rGrF _overlappedZUnregisterWaitr1winerrorERROR_IO_PENDINGrr2r3rQrrIr4r5r r r!_unregister_waits$   $z&_BaseWaitHandleFuture._unregister_waitcs|tj|dSr7)rWrr0r9rr r!r0sz_BaseWaitHandleFuture.cancelcs|t|dSr:)rWrr;r<rr r!r;sz#_BaseWaitHandleFuture.set_exceptioncs|t|dSr:)rWrr=r>rr r!r=sz _BaseWaitHandleFuture.set_result)N) r@rArBrrMr%rQrWr0r;r=rCr r rr!rD`s  rDcsBeZdZddfdd ZddZfddZfd d ZZS) _WaitCancelFutureNrcstj||||dd|_dS)Nr)rr_done_callback)rreventrIrrr r!rsz_WaitCancelFuture.__init__cCs tddS)Nz'_WaitCancelFuture must not be cancelled) RuntimeErrorrLr r r!r0sz_WaitCancelFuture.cancelcs$t||jdur ||dSr:)rr=rYr>rr r!r=s  z_WaitCancelFuture.set_resultcs$t||jdur ||dSr:)rr;rYr<rr r!r;s  z_WaitCancelFuture.set_exception)r@rArBrr0r=r;rCr r rr!rXs rXcs6eZdZddfdd ZfddZddZZS) _WaitHandleFutureNrcs<tj||||d||_d|_tdddd|_d|_dS)NrTF)rr _proactorZ_unregister_proactorrSZ CreateEvent_event _event_fut)rrrHrIproactorrrr r!rs z_WaitHandleFuture.__init__csF|jdur"t|jd|_d|_|j|jd|_t|dSr:) r^rK CloseHandler_r] _unregisterrrrQrOrr r!rQs   z%_WaitHandleFuture._unregister_wait_cbc Cs|js dSd|_|j}d|_zt||jWnfty}zN|jtjkrd||d}|jrf|j|d<|j |WYd}~dSWYd}~n d}~00|j |j|j |_dSrR)rGrFrSZUnregisterWaitExr^r1rTrUrr2r3r] _wait_cancelrQr_rVr r r!rWs(   $ z"_WaitHandleFuture._unregister_wait)r@rArBrrQrWrCr r rr!r\s r\c@s8eZdZddZddZddZddZd 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)rjrl)rtmpr r r!_get_unconnected_pipesz PipeServer._get_unconnected_pipec Csr|r dStjtjB}|r&|tjO}t|j|tjtjBtj Btj t j t j tj tj}t |}|j||Sr:)closedrKZPIPE_ACCESS_DUPLEXZFILE_FLAG_OVERLAPPEDZFILE_FLAG_FIRST_PIPE_INSTANCEZCreateNamedPiperfZPIPE_TYPE_MESSAGEZPIPE_READMODE_MESSAGEZ PIPE_WAITZPIPE_UNLIMITED_INSTANCESr ZBUFSIZEZNMPWAIT_WAIT_FOREVERNULL PipeHandleriadd)rfirstflagshpiper r r!rl s"     zPipeServer._server_pipe_handlecCs |jduSr:)rfrLr r r!rpszPipeServer.closedcCsR|jdur|jd|_|jdurN|jD] }|q*d|_d|_|jdSr:)rkr0rfricloserjclear)rrwr r r!rx"s     zPipeServer.closeN) r@rArBrrorlrprx__del__r r r r!rds   rdc@s eZdZdS)_WindowsSelectorEventLoopN)r@rArBr r r r!r{1sr{csDeZdZd fdd ZfddZddZdd Zd d d ZZS)r Ncs|durt}t|dSr:)rrr)rr`rr r!r8szProactorEventLoop.__init__c szV||jtW|jdur|jj}|j|durP|jsP|j |d|_n>|jdur|jj}|j|dur|js|j |d|_0dSr:) call_soonZ_loop_self_readingr run_foreverZ_self_reading_futurerr0r"r]rbrrrr r!r}=s        zProactorEventLoop.run_forevercs8|j|}|IdH}|}|j||d|id}||fS)Naddrextra)r] connect_pipe_make_duplex_pipe_transport)rprotocol_factoryr'frwprotocoltransr r r!create_pipe_connectionPs  z(ProactorEventLoop.create_pipe_connectioncs.tdfdd gS)Nc s d}zn|rN|}j|r4|WdS}j||did}|durdWdSj|}Wnt y}zN|r| dkr d||d|nj rt jd|ddWYd}~n8d}~0tjy|r|Yn0|_|dS) NrrrzPipe accept failed)r,r-rwzAccept pipe failed on pipe %rT)exc_info)r?ridiscardrprxrror] accept_piper1filenor3Z_debugr ZwarningrCancelledErrorrkadd_done_callback)rrwrr4r'loop_accept_piperrZserverr r!r[sB   z>ProactorEventLoop.start_serving_pipe..loop_accept_pipe)N)rdr|)rrr'r rr!start_serving_pipeXs( z$ProactorEventLoop.start_serving_pipec s|} t||||||||f| |d| } z| IdHWn@ttfyRYn*tyz| | IdHYn0| S)N)waiterr) create_future_WindowsSubprocessTransport SystemExitKeyboardInterrupt BaseExceptionrxZ_wait) rrargsshellstdinstdoutstderrbufsizerkwargsrZtranspr r r!_make_subprocess_transports"  z,ProactorEventLoop._make_subprocess_transport)N)N) r@rArBrr}rrrrCr r rr!r 5s  0r c@seZdZd:ddZddZddZdd Zd;d d Zd dZdddZ d?ddZ d@ddZ ddZddZddZd d!Zd"d#ZdAd$d%Zd&d'Zd(d)Zd*d+Zd,d-Zd.d/Zd0d1ZdBd2d3Zd4d5Zd6d7Zd8d9Zd S)CrrcCsDd|_g|_ttjtd||_i|_t |_ g|_ t |_ dSrJ) r2_resultsrSCreateIoCompletionPortINVALID_HANDLE_VALUErq_iocp_cachergrhrG _unregistered_stopped_serving)rZ concurrencyr r r!rs  zIocpProactor.__init__cCs|jdurtddS)NzIocpProactor is closed)rr[rLr r r! _check_closeds zIocpProactor._check_closedcCsFdt|jdt|jg}|jdur0|dd|jjd|fS)Nzoverlapped#=%sz result#=%srpz<%s %s> )lenrrrrNrr@join)rr)r r r!__repr__s     zIocpProactor.__repr__cCs ||_dSr:)r2)rrr r r!set_loopszIocpProactor.set_loopNcCs |js|||j}g|_|Sr:)rrM)rtimeoutrnr r r!selects  zIocpProactor.selectcCs|j}|||Sr:)r2rr=)rvaluerPr r r!_results  zIocpProactor._resultrcCs|||tt}z4t|tjr6||||n|||Wnt yd| dYS0dd}| |||S)Nc SsTz |WStyN}z,|jtjtjfvr8t|jnWYd}~n d}~00dSr: getresultr1rTrSZERROR_NETNAME_DELETEDZERROR_OPERATION_ABORTEDConnectionResetErrorrrkeyrr4r r r! finish_recvs  z&IocpProactor.recv..finish_recv) _register_with_iocprS Overlappedrq isinstancesocketZWSARecvrZReadFileBrokenPipeErrorr _registerrconnnbytesrurrr r r!recvs     zIocpProactor.recvcCs|||tt}z4t|tjr6||||n|||Wnt yd| dYS0dd}| |||S)Nrc SsTz |WStyN}z,|jtjtjfvr8t|jnWYd}~n d}~00dSr:rrr r r!rs  z+IocpProactor.recv_into..finish_recv) rrSrrqrrZ WSARecvIntorZ ReadFileIntorrr)rrbufrurrr r r! recv_intos     zIocpProactor.recv_intocCs^||tt}z||||WntyF|dYS0dd}||||S)N)rNc SsTz |WStyN}z,|jtjtjfvr8t|jnWYd}~n d}~00dSr:rrr r r!rs  z*IocpProactor.recvfrom..finish_recv) rrSrrqZ WSARecvFromrrrrrr r r!recvfroms    zIocpProactor.recvfromcCs>||tt}|||||dd}||||S)Nc SsTz |WStyN}z,|jtjtjfvr8t|jnWYd}~n d}~00dSr:rrr r r! finish_send s  z(IocpProactor.sendto..finish_send)rrSrrqZ WSASendTorr)rrrrurrrr r r!sendtos    zIocpProactor.sendtocCsZ||tt}t|tjr4||||n|||dd}| |||S)Nc SsTz |WStyN}z,|jtjtjfvr8t|jnWYd}~n d}~00dSr:rrr r r!rs  z&IocpProactor.send..finish_send) rrSrrqrrZWSASendrZ WriteFiler)rrrrurrr r r!sends    zIocpProactor.sendcsv||jtt}|fdd}dd}|||}||}t j ||j d|S)NcsD|td}tjtj|   fS)Nz@P) rstructZpackr setsockoptr SOL_SOCKETrSZSO_UPDATE_ACCEPT_CONTEXT settimeoutZ gettimeoutZ getpeername)rrrrrlistenerr r! finish_accept/sz*IocpProactor.accept..finish_acceptcs2z|IdHWntjy,|Yn0dSr:)rrrx)r.rr r r! accept_coro8s z(IocpProactor.accept..accept_coror) r_get_accept_socketfamilyrSrrqZAcceptExrrr Z ensure_futurer2)rrrrrr.coror rr!accept)s     zIocpProactor.acceptc sjtjkr4t||j}|d|S| zt j WnDt y}z,|j tjkrrddkrWYd}~n d}~00tt}||fdd}|||S)Nrrcs|tjtjdSrJ)rrrrrSZSO_UPDATE_CONNECT_CONTEXTrrrrr r!finish_connect[s z,IocpProactor.connect..finish_connect)typerZ SOCK_DGRAMrSZ WSAConnectrr2rr=rZ BindLocalrr1rTerrnoZ WSAEINVALZ getsocknamerrqZ ConnectExr)rrr'rPerrr rr!connectEs"       zIocpProactor.connectc Csb||tt}|d@}|d?d@}||t||||dddd}||||S)Nr rc SsTz |WStyN}z,|jtjtjfvr8t|jnWYd}~n d}~00dSr:rrr r r!finish_sendfilens  z.IocpProactor.sendfile..finish_sendfile) rrSrrqZ TransmitFilermsvcrtZ get_osfhandler) rZsockfileoffsetcountrZ offset_lowZ offset_highrr r r!sendfileds      zIocpProactor.sendfilecsJ|tt}|}|r0|Sfdd}|||S)Ncs |Sr:)rrrwr r!finish_accept_pipesz4IocpProactor.accept_pipe..finish_accept_pipe)rrSrrqZConnectNamedPiperrr)rrwrZ connectedrr rr!rys    zIocpProactor.accept_pipec stt}zt|}WqjWn2tyH}z|jtjkr4WYd}~n d}~00t|dt}t |IdHqt |S)N) CONNECT_PIPE_INIT_DELAYrSZ ConnectPiper1rTZERROR_PIPE_BUSYminCONNECT_PIPE_MAX_DELAYr sleepr rr)rr'ZdelayrHr4r r r!rs  zIocpProactor.connect_pipecCs|||dSrm)_wait_for_handle)rrHrr r r!wait_for_handleszIocpProactor.wait_for_handlecCs||dd}||_|Sre)rrY)rrZZ done_callbackrPr r r!rcszIocpProactor._wait_cancelcs||durtj}nt|d}tt}t||j |j |}|r\t ||||j dnt |||||j djr~jd=fdd}|d|f|j|j <S)N@@rrcsSr:)rMrrr r!finish_wait_for_handlesz=IocpProactor._wait_for_handle..finish_wait_for_handler)rrKINFINITEmathceilrSrrqZRegisterWaitWithQueuerr'rXr2r\rr)rrHrZ _is_cancelmsrrIrr rr!rs$    zIocpProactor._wait_for_handlecCs0||jvr,|j|t||jdddSrJ)rGrsrSrrrrobjr r r!rs  z IocpProactor._register_with_iocpc Cs|t||jd}|jr$|jd=|jstz|dd|}Wn.tyh}z||WYd}~nd}~00||||||f|j|j <|Sr) rrr2rr"r1r;r=rr')rrrcallbackrrrr r r!rs  zIocpProactor._registercCs||j|dSr:)rrrNr~r r r!rbszIocpProactor._unregistercCst|}|d|SrJ)rr)rrsr r r!rs  zIocpProactor._get_accept_socketc Cs|durt}n0|dkr tdnt|d}|tkr>tdt|j|}|durXqZd}|\}}}}z|j|\}} } } WnVt y|j r|j dd||||fd|dtj fvrt|Yq>Yn0| |jvr|q>|s>z| ||| } Wn<ty@} z"|| |j|WYd} ~ q>d} ~ 00|| |j|q>|jD]} |j| jdq`|jdS)Nrznegative timeoutrztimeout too bigz8GetQueuedCompletionStatus() returned an unexpected eventz)err=%s transferred=%s key=%#x address=%#x)r,status)r ValueErrorrrrSZGetQueuedCompletionStatusrrpopKeyErrorr2Z get_debugr3rrKrarr0Zdoner1r;rrNr=rr'ry)rrrrerrZ transferredrr'rrrrrrr r r!rMsL           "  zIocpProactor._pollcCs|j|dSr:)rrsrr r r! _stop_serving>szIocpProactor._stop_servingc Cs|jdurdSt|jD]\}\}}}}|r6qt|trBqz |Wqty}z>|j durd||d}|j r|j |d<|j |WYd}~qd}~00qd}t } | |} |jr| t krtd|t | t |} ||qg|_t|jd|_dS)NzCancelling a future failedr+r/g?z,%r is running after closing for %.1f seconds)rlistritemsZ cancelledrrXr0r1r2rr3time monotonicr debugrMrrKra) rr'rPrrrr4r5Z msg_updateZ start_timeZnext_msgr r r!rxDs>     $     zIocpProactor.closecCs |dSr:)rxrLr r r!rzsszIocpProactor.__del__)r)N)r)r)r)rN)r)N)N)r@rArBrrrrrrrrrrrrrrrrrrcrrrrbrrMrrxrzr r r r!rs6        "    7/rc@seZdZddZdS)rc  sPtj|f|||||d|_fdd}jjtjj} | |dS)N)rrrrrcsj}|dSr:)_procZpollZ_process_exited)r returncoderLr r!r~s z4_WindowsSubprocessTransport._start..callback) r Popenrr2r]rintrEr) rrrrrrrrrrr rLr!_startys z"_WindowsSubprocessTransport._startN)r@rArBrr r r r!rwsrc@seZdZeZdS)rN)r@rArBr _loop_factoryr r r r!rsrc@seZdZeZdS)rN)r@rArBr rr r r r!rsr)1sysplatform ImportErrorrSrKrrrrrrrgrrrrrrr r logr __all__rqrZERROR_CONNECTION_REFUSEDZERROR_CONNECTION_ABORTEDrrZFuturerrDrXr\objectrdZBaseSelectorEventLoopr{ZBaseProactorEventLoopr rZBaseSubprocessTransportrr ZBaseDefaultEventLoopPolicyrrrr r r r!sV          0J4;e`