U e5d<}ã@sPdZddlZddlZddlZddlZddlZddlZddlZddlm Z ddlm Z ddlm Z ddlm Z ddlm Z dd lmZdd lmZdd lmZdd lmZd d„ZGdd„dejejƒZGdd„deejƒZGdd„deejƒZGdd„deƒZGdd„deƒZGdd„deeejƒZGdd„deeejƒZGdd„de j ƒZ!dS))ÚBaseProactorEventLoopéNé)Ú base_events)Ú constants)Úfutures)Ú exceptions)Ú protocols)Ússlproto)Ú transports)Útrsock)ÚloggercCs–t |¡|jd<z| ¡|jd<Wn0tjk rR|j ¡rNtj d|dd�YnXd|jkr’z|  ¡|jd<Wn tjk r�d|jd<YnXdS)NÚsocketZsocknamezgetsockname() failed on %rT©Úexc_infoÚpeername) r ÚTransportSocketÚ_extraZ getsocknamer ÚerrorÚ_loopÚ get_debugr ÚwarningZ getpeername)Ú transportÚsock©rú//usr/lib64/python3.8/asyncio/proactor_events.pyÚ_set_socket_extras ÿ  rcs~eZdZd‡fdd„ Zdd„Zdd„Zdd „Zd d „Zd d „Zdd„Z e j fdd„Z ddd„Z dd„Zdd„Zdd„Z‡ZS)Ú_ProactorBasePipeTransportNcsœtƒ ||¡| |¡||_| |¡||_d|_d|_d|_d|_ d|_ d|_ d|_ |jdk rl|j  ¡|j |jj|¡|dk r˜|j tj|d¡dS)NrF)ÚsuperÚ__init__Ú _set_extraÚ_sockÚ set_protocolÚ_serverÚ_bufferÚ _read_futÚ _write_futÚ_pending_writeÚ _conn_lostÚ_closingÚ _eof_writtenZ_attachrÚ call_soonÚ _protocolZconnection_maderZ_set_result_unless_cancelled©ÚselfÚlooprÚprotocolÚwaiterÚextraÚserver©Ú __class__rrr2s(     ÿz#_ProactorBasePipeTransport.__init__cCsÄ|jjg}|jdkr | d¡n|jr0| d¡|jdk rP| d|j ¡›�¡|jdk rl| d|j›�¡|jdk rˆ| d|j›�¡|jr¤| dt |jƒ›�¡|j r´| d¡d  d   |¡¡S) NÚclosedÚclosingzfd=zread=zwrite=zwrite_bufsize=z EOF writtenz<{}>ú ) r4Ú__name__r Úappendr(Úfilenor$r%r#Úlenr)ÚformatÚjoin)r-ÚinforrrÚ__repr__Hs         z#_ProactorBasePipeTransport.__repr__cCs||jd<dS)NÚpipe)r©r-rrrrrZsz%_ProactorBasePipeTransport._set_extracCs ||_dS©N©r+)r-r/rrrr!]sz'_ProactorBasePipeTransport.set_protocolcCs|jSrBrC©r-rrrÚ get_protocol`sz'_ProactorBasePipeTransport.get_protocolcCs|jSrB)r(rDrrrÚ is_closingcsz%_ProactorBasePipeTransport.is_closingcCs\|jr dSd|_|jd7_|js>|jdkr>|j |jd¡|jdk rX|j ¡d|_dS)NTr) r(r'r#r%rr*Ú_call_connection_lostr$ÚcancelrDrrrÚclosefs  z _ProactorBasePipeTransport.closecCs*|jdk r&|d|›�t|d�| ¡dS)Nzunclosed transport )Úsource)r ÚResourceWarningrI)r-Z_warnrrrÚ__del__qs z"_ProactorBasePipeTransport.__del__úFatal error on pipe transportc CsVzDt|tƒr*|j ¡rBtjd||dd�n|j ||||jdœ¡W5| |¡XdS)Nz%r: %sTr)ÚmessageÚ exceptionrr/) Ú _force_closeÚ isinstanceÚOSErrorrrr ÚdebugÚcall_exception_handlerr+)r-ÚexcrNrrrÚ _fatal_errorvs  ü z'_ProactorBasePipeTransport._fatal_errorcCs |jdk r6|j ¡s6|dkr*|j d¡n |j |¡|jr@dSd|_|jd7_|jrj|j ¡d|_|jr€|j ¡d|_d|_ d|_ |j   |j |¡dS)NTrr)Ú _empty_waiterÚdoneÚ set_resultZ set_exceptionr(r'r%rHr$r&r#rr*rG)r-rUrrrrP…s"   z'_ProactorBasePipeTransport._force_closec Cs^z|j  |¡W5t|jdƒr,|j tj¡|j ¡d|_|j}|dk rX| ¡d|_XdS)NÚshutdown) Úhasattrr rZr Z SHUT_RDWRrIr"Z_detachr+Zconnection_lost)r-rUr2rrrrG™s  z0_ProactorBasePipeTransport._call_connection_lostcCs"|j}|jdk r|t|jƒ7}|SrB)r&r#r;)r-ÚsizerrrÚget_write_buffer_sizeªs z0_ProactorBasePipeTransport.get_write_buffer_size)NNN)rM)r8Ú __module__Ú __qualname__rr?rr!rErFrIÚwarningsÚwarnrLrVrPrGr]Ú __classcell__rrr3rr.sÿ  rcsPeZdZd‡fdd„ Zdd„Zdd„Zdd „Zd d „Zd d „Zddd„Z ‡Z S)Ú_ProactorReadPipeTransportNcs:d|_d|_tƒ ||||||¡|j |j¡d|_dS)NTF)Ú _pending_dataÚ_pausedrrrr*Ú _loop_readingr,r3rrrµs z#_ProactorReadPipeTransport.__init__cCs|j o|j SrB)rer(rDrrrÚ is_reading¾sz%_ProactorReadPipeTransport.is_readingcCs0|js |jrdSd|_|j ¡r,t d|¡dS)NTz%r pauses reading)r(rerrr rSrDrrrÚ pause_readingÁs   z(_ProactorReadPipeTransport.pause_readingcCsn|js |jsdSd|_|jdkr0|j |jd¡|j}d|_|dk rT|j |j|¡|j ¡rjt   d|¡dS)NFz%r resumes reading) r(rer$rr*rfrdÚ_data_receivedrr rS©r-ÚdatarrrÚresume_readingÔs   z)_ProactorReadPipeTransport.resume_readingc Cs‚|j ¡rt d|¡z|j ¡}WnLttfk r>‚Yn4tk rp}z|  |d¡WY¢dSd}~XYnX|s~|  ¡dS)Nz%r received EOFz1Fatal error: protocol.eof_received() call failed.) rrr rSr+Z eof_receivedÚ SystemExitÚKeyboardInterruptÚ BaseExceptionrVrI)r-Z keep_openrUrrrÚ _eof_receivedæs  ÿz(_ProactorReadPipeTransport._eof_receivedc Cs |jr||_dS|s | ¡dSt|jtjƒr�zt |j|¡Wqœtt fk rZ‚Yqœt k rŒ}z|  |d¡WY¢dSd}~XYqœXn |j  |¡dS)Nz3Fatal error: protocol.buffer_updated() call failed.) rerdrprQr+rZBufferedProtocolZ_feed_data_to_buffered_protormrnrorVZ data_received)r-rkrUrrrriös"ÿz)_ProactorReadPipeTransport._data_receivedc Cstd}�zRzp|dk r2d|_| ¡r*| ¡}n| ¡|jrHd}WW�¢dS|dkr\WW�¢dS|jsv|jj  |j d¡|_WnÆt k rÆ}z0|jsž|  |d¡n|j  ¡r¶tjddd�W5d}~XYn�tk rð}z| |¡W5d}~XYnftk �r}z|  |d¡W5d}~XYn8tjk �r>|j�s:‚YnX|j�sV|j |j¡W5|dk �rn| |¡XdS)Nói€z"Fatal read error on pipe transportz*Read error on pipe transport while closingTr)rir$rXÚresultrHr(rerÚ _proactorÚrecvr ÚConnectionAbortedErrorrVrr rSÚConnectionResetErrorrPrRrÚCancelledErrorÚadd_done_callbackrf)r-ÚfutrkrUrrrrfs@    ÿ z(_ProactorReadPipeTransport._loop_reading)NNN)N) r8r^r_rrgrhrlrprirfrbrrr3rrc±sÿ rccsZeZdZdZ‡fdd„Zdd„Zddd„Zd d „Zd d „Zd d„Z dd„Z dd„Z ‡Z S)Ú_ProactorBaseWritePipeTransportTcstƒj||Žd|_dSrB)rrrW©r-ÚargsÚkwr3rrrGsz(_ProactorBaseWritePipeTransport.__init__cCsÈt|tttfƒs$tdt|ƒj›�ƒ‚|jr2tdƒ‚|j dk rDtdƒ‚|sLdS|j rz|j t j krht  d¡|j d7_ dS|jdkr–|jt|ƒd�n.|js°t|ƒ|_| ¡n|j |¡| ¡dS)Nz/data argument must be a bytes-like object, not zwrite_eof() already calledz(unable to write; sendfile is in progresszsocket.send() raised exception.r)rk)rQÚbytesÚ bytearrayÚ memoryviewÚ TypeErrorÚtyper8r)Ú RuntimeErrorrWr'rÚ!LOG_THRESHOLD_FOR_CONNLOST_WRITESr rr%Ú _loop_writingr#Ú_maybe_pause_protocolÚextendrjrrrÚwriteKs,ÿ       z%_ProactorBaseWritePipeTransport.writeNc CsVzô|dk r |jdkr |jr WdSd|_d|_|r8| ¡|dkrL|j}d|_|s„|jrf|j |jd¡|jrz|j   t j ¡|  ¡nN|jj |j |¡|_|j ¡sÄt|ƒ|_|j |j¡| ¡n|j |j¡|jdk rò|jdkrò|j d¡Wn\tk �r"}z| |¡W5d}~XYn0tk �rP}z| |d¡W5d}~XYnXdS)Nrz#Fatal write error on pipe transport)r%r(r&rrr#rr*rGr)r rZr ÚSHUT_WRÚ_maybe_resume_protocolrsÚsendrXr;rxr…r†rWrYrvrPrRrV)r-ÚfrkrUrrrr…qs8    z-_ProactorBaseWritePipeTransport._loop_writingcCsdS©NTrrDrrrÚ can_write_eofšsz-_ProactorBaseWritePipeTransport.can_write_eofcCs | ¡dSrB)rIrDrrrÚ write_eof�sz)_ProactorBaseWritePipeTransport.write_eofcCs| d¡dSrB©rPrDrrrÚabort sz%_ProactorBaseWritePipeTransport.abortcCs:|jdk rtdƒ‚|j ¡|_|jdkr4|j d¡|jS)NzEmpty waiter is already set)rWrƒrZ create_futurer%rYrDrrrÚ_make_empty_waiter£s     z2_ProactorBaseWritePipeTransport._make_empty_waitercCs d|_dSrB)rWrDrrrÚ_reset_empty_waiter«sz3_ProactorBaseWritePipeTransport._reset_empty_waiter)NN) r8r^r_Z_start_tls_compatiblerrˆr…rŽr�r‘r’r“rbrrr3rrzAs & )rzcs$eZdZ‡fdd„Zdd„Z‡ZS)Ú_ProactorWritePipeTransportcs4tƒj||Ž|jj |jd¡|_|j |j¡dS)Né) rrrrsrtr r$rxÚ _pipe_closedr{r3rrr°sz$_ProactorWritePipeTransport.__init__cCs@| ¡r dS|jrdSd|_|jdk r4| tƒ¡n| ¡dSrB)Z cancelledr(r$r%rPÚBrokenPipeErrorrI)r-ryrrrr–µs z(_ProactorWritePipeTransport._pipe_closed)r8r^r_rr–rbrrr3rr”¯s r”csXeZdZdZd‡fdd„ Zdd„Zdd„Zd d „Zdd d „Zdd d„Z ddd„Z ‡Z S)Ú_ProactorDatagramTransportiNcs>||_d|_tƒj|||||d�t ¡|_|j |j ¡dS)N)r0r1) Ú_addressrWrrÚ collectionsÚdequer#rr*rf)r-r.rr/Úaddressr0r1r3rrrÇs  z#_ProactorDatagramTransport.__init__cCst||ƒdSrB©rrArrrrÓsz%_ProactorDatagramTransport._set_extracCstdd„|jDƒƒS)Ncss|]\}}t|ƒVqdSrB)r;)Ú.0rkÚ_rrrÚ ×szC_ProactorDatagramTransport.get_write_buffer_size..)Úsumr#rDrrrr]Ösz0_ProactorDatagramTransport.get_write_buffer_sizecCs| d¡dSrBr�rDrrrr‘Ùsz _ProactorDatagramTransport.abortcCs´t|tttfƒstdt|ƒƒ‚|s&dS|jdk rN|d|jfkrNtd|j›�ƒ‚|jr‚|jr‚|jt j krpt   d¡|jd7_dS|j  t|ƒ|f¡|jdkr¨| ¡| ¡dS)Nz,data argument must be bytes-like object (%r)z!Invalid address: must be None or z!socket.sendto() raised exception.r)rQr~rr€r�r‚r™Ú ValueErrorr'rr„r rr#r9r%r…r†)r-rkÚaddrrrrÚsendtoÜs&ÿ ÿ    z!_ProactorDatagramTransport.sendtoc Cs z–|jrWdSd|_|r | ¡|jr2|jrN|jrN|jrH|j |jd¡WdS|j  ¡\}}|jdk r||jj   |j |¡|_n|jj j |j ||d�|_WnZtk rÄ}z|j |¡W5d}~XYnDtk rð}z| |d¡W5d}~XYnX|j |j¡| ¡dS)N)r£z'Fatal write error on datagram transport)r'r%rrr#r™r(rr*rGÚpopleftrsr‹r r¤rRr+Úerror_receivedÚ ExceptionrVrxr…rŠ)r-ryrkr£rUrrrr…øs2  ÿ þ z(_ProactorDatagramTransport._loop_writingc Cs4d}�zz¨|jrWW�¢dSd|_|dk rf| ¡}|jrFd}WW¢ØdS|jdk r^||j}}n|\}}|jrvWW¢¨dS|jdk r˜|jj  |j |j ¡|_n|jj  |j |j ¡|_WnJt k rÞ}z|j |¡W5d}~XYn8tjk rú|jsö‚YnX|jdk �r|j |j¡W5|�r.|j ||¡XdSrB)r+Zdatagram_receivedr'r$rrr(r™rrsrtr Úmax_sizeZrecvfromrRr¦rrwrxrf)r-ryrkr£ÚresrUrrrrfs>      ÿ ÿ  z(_ProactorDatagramTransport._loop_reading)NNN)N)N)N) r8r^r_r¨rrr]r‘r¤r…rfrbrrr3rr˜Åsÿ   !r˜c@seZdZdd„Zdd„ZdS)Ú_ProactorDuplexPipeTransportcCsdS)NFrrDrrrrŽJsz*_ProactorDuplexPipeTransport.can_write_eofcCst‚dSrB)ÚNotImplementedErrorrDrrrr�Msz&_ProactorDuplexPipeTransport.write_eofN)r8r^r_rŽr�rrrrrªEsrªcs>eZdZejjZd ‡fdd„ Zdd„Zdd„Z dd „Z ‡Z S) Ú_ProactorSocketTransportNcs$tƒ ||||||¡t |¡dSrB)rrrZ _set_nodelayr,r3rrrXsz!_ProactorSocketTransport.__init__cCst||ƒdSrBr�rArrrr]sz#_ProactorSocketTransport._set_extracCsdSr�rrDrrrrŽ`sz&_ProactorSocketTransport.can_write_eofcCs2|js |jrdSd|_|jdkr.|j tj¡dSr�)r(r)r%r rZr r‰rDrrrr�cs   z"_ProactorSocketTransport.write_eof)NNN) r8r^r_rZ _SendfileModeZ TRY_NATIVEZ_sendfile_compatiblerrrŽr�rbrrr3rr¬Qsÿr¬csîeZdZ‡fdd„Zd3dd„Zd4ddddddœdd „Zd5d d „Zd6d d „Zd7dd„Zd8dd„Z ‡fdd„Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zd d!„Zd"d#„Zd$d%„Zd9d&d'„Zd(d)„Zd:d+d,„Zd-d.„Zd/d0„Zd1d2„Z‡ZS);rcshtƒ ¡t d|jj¡||_||_d|_i|_ |  |¡|  ¡t   ¡t  ¡krdt |j ¡¡dS)NzUsing proactor: %s)rrr rSr4r8rsÚ _selectorÚ_self_reading_futureÚ_accept_futuresZset_loopÚ_make_self_pipeÚ threadingÚcurrent_threadÚ main_threadÚsignalÚ set_wakeup_fdÚ_csockr:)r-Zproactorr3rrrms  zBaseProactorEventLoop.__init__NcCst||||||ƒSrB)r¬)r-rr/r0r1r2rrrÚ_make_socket_transportzs ÿz,BaseProactorEventLoop._make_socket_transportF)Ú server_sideÚserver_hostnamer1r2Ússl_handshake_timeoutc Cs0tj||||||| d�} t||| ||d�| jS)N)rº©r1r2)r Z SSLProtocolr¬Z_app_transport) r-Zrawsockr/Ú sslcontextr0r¸r¹r1r2rºZ ssl_protocolrrrÚ_make_ssl_transportsýÿz)BaseProactorEventLoop._make_ssl_transportcCst||||||ƒSrB)r˜)r-rr/rœr0r1rrrÚ_make_datagram_transportŒs ÿz.BaseProactorEventLoop._make_datagram_transportcCst|||||ƒSrB)rª©r-rr/r0r1rrrÚ_make_duplex_pipe_transport‘s ÿz1BaseProactorEventLoop._make_duplex_pipe_transportcCst|||||ƒSrB)rcr¿rrrÚ_make_read_pipe_transport–sz/BaseProactorEventLoop._make_read_pipe_transportcCst|||||ƒSrB)r”r¿rrrÚ_make_write_pipe_transportšs ÿz0BaseProactorEventLoop._make_write_pipe_transportcsj| ¡rtdƒ‚| ¡rdSt ¡t ¡kr6t d¡| ¡|  ¡|j   ¡d|_ d|_ t ƒ  ¡dS)Nz!Cannot close a running event loopéÿÿÿÿ)Z is_runningrƒÚ is_closedr±r²r³r´rµÚ_stop_accept_futuresÚ_close_self_pipersrIr­rrDr3rrrI s  zBaseProactorEventLoop.closecÃs|j ||¡IdHSrB)rsrt)r-rÚnrrrÚ sock_recv´szBaseProactorEventLoop.sock_recvcÃs|j ||¡IdHSrB)rsZ recv_into)r-rZbufrrrÚsock_recv_into·sz$BaseProactorEventLoop.sock_recv_intocÃs|j ||¡IdHSrB)rsr‹)r-rrkrrrÚ sock_sendallºsz"BaseProactorEventLoop.sock_sendallcÃs|j ||¡IdHSrB)rsZconnect)r-rrœrrrÚ sock_connect½sz"BaseProactorEventLoop.sock_connectcÃs|j |¡IdHSrB)rsÚacceptrArrrÚ sock_acceptÀsz!BaseProactorEventLoop.sock_acceptc Ãs(z | ¡}Wn2ttjfk r>}zt d¡‚W5d}~XYnXzt |¡j}Wn,t k r|}zt d¡‚W5d}~XYnX|r†|n|}|s’dSt |dƒ}|r®t |||ƒn|} t ||ƒ}d} zLt | ||ƒ}|dkrà| W¢0S|j   ||||¡IdH||7}| |7} qÂW5| dk�r"|  |¡XdS)Nznot a regular filerlÿÿ)r:ÚAttributeErrorÚioÚUnsupportedOperationrZSendfileNotAvailableErrorÚosÚfstatÚst_sizerRÚminÚseekrsÚsendfile) r-rÚfileÚoffsetÚcountr:ÚerrZfsizeZ blocksizeZend_posZ total_sentrrrÚ_sock_sendfile_nativeÃs0     z+BaseProactorEventLoop._sock_sendfile_nativecÃsZ| ¡}| ¡| ¡IdHz |j|j|||dd�IdHW¢S| ¡|rT| ¡XdS)NF)Zfallback)rgrhr’r“rlZ sock_sendfiler )r-Ztranspr×rØrÙrlrrrÚ_sendfile_nativeàsÿz&BaseProactorEventLoop._sendfile_nativecCsL|jdk r|j ¡d|_|j ¡d|_|j ¡d|_|jd8_dS)Nr)r®rHÚ_ssockrIr¶Ú _internal_fdsrDrrrrÆìs    z&BaseProactorEventLoop._close_self_pipecCs:t ¡\|_|_|j d¡|j d¡|jd7_dS)NFr)r Z socketpairrÝr¶Z setblockingrÞrDrrrr°ös  z%BaseProactorEventLoop._make_self_pipec Cs®z4|dk r| ¡|j|k r"WdS|j |jd¡}Wnbtjk rLYdSttfk rd‚YnFt k r–}z|  d||dœ¡W5d}~XYnX||_|  |j ¡dS)Niz.Error on reading from the event loop self pipe)rNrOr.) rrr®rsrtrÝrrwrmrnrorTrxÚ_loop_self_reading)r-rŒrUrrrrßýs$ ýz(BaseProactorEventLoop._loop_self_readingcCsN|j}|dkrdSz| d¡Wn(tk rH|jrDtjddd�YnXdS)Nóz3Fail to write a null byte into the self-pipe socketTr)r¶r‹rRÚ_debugr rS)r-ZcsockrrrÚ_write_to_selfsþz$BaseProactorEventLoop._write_to_selfédcs(d‡‡‡‡‡‡‡fdd„ ‰ˆ ˆ¡dS)Nc s,zŠ|dk rn| ¡\}}ˆjr,t dˆ||¡ˆƒ}ˆdk rXˆj||ˆdd|iˆˆd�nˆj||d|iˆd�ˆ ¡r|WdSˆj ˆ¡}Wn„t k rð}zHˆ  ¡dkrʈ  d|t   ˆ¡dœ¡ˆ ¡nˆjràtjd ˆdd �W5d}~XYn8tjk �rˆ ¡YnX|ˆjˆ  ¡<| ˆ¡dS) Nz#%r got a new connection from %r: %rTr)r¸r1r2rºr»rÃzAccept failed on a socket)rNrOr zAccept failed on socket %rr)rrrár rSr½r·rÄrsrÌrRr:rTr rrIrrwr¯rx)rŒZconnr£r/rU©r.Úprotocol_factoryr-r2rrºr¼rrr./s\ ÿýþ ý ÿz2BaseProactorEventLoop._start_serving..loop)N)r*)r-rårr¼r2ZbacklogrºrrärÚ_start_serving+s%z$BaseProactorEventLoop._start_servingcCsdSrBr)r-Z event_listrrrÚ_process_eventsVsz%BaseProactorEventLoop._process_eventscCs&|j ¡D] }| ¡q |j ¡dSrB)r¯ÚvaluesrHÚclear)r-ÚfuturerrrrÅZs z*BaseProactorEventLoop._stop_accept_futurescCs6|j | ¡d¡}|r| ¡|j |¡| ¡dSrB)r¯Úpopr:rHrsÚ _stop_servingrI)r-rrêrrrrì_s  z#BaseProactorEventLoop._stop_serving)NNN)N)NNN)NN)NN)NN)N)NNrãN)r8r^r_rr·r½r¾rÀrÁrÂrIrÈrÉrÊrËrÍrÛrÜrÆr°rßrârærçrÅrìrbrrr3rrks\ ÿ ÿü ÿ ÿ ÿ ÿ     þ +r)"Ú__all__rÏrÑr r`r´r±ršÚrrrrrr r r Úlogr rZ_FlowControlMixinZ BaseTransportrZ ReadTransportrcZWriteTransportrzr”r˜Z Transportrªr¬Z BaseEventLooprrrrrÚsP         ÿ ÿ ÿn þ þ