o ?Og@sV dZddlZddlZddlZddlZddlZddlZddlZddlm Z ddlm Z ddlm Z ddlm Z ddlm Z dd lmZdd lmZdd lmZdd lmZd dZGdddejejZGdddeejZGdddeejZGdddeZGdddeejZGdddeeejZGdddeeejZ Gddde j!Z"dS))BaseProactorEventLoopN) base_events) constants)futures) exceptions) protocols)sslproto) transports)trsock)loggercCst||jd<z ||jd<Wntjy(|jr&tj d|ddYnwd|jvrIz | |jd<WdStjyHd|jd<YdSwdS)NsocketZsocknamezgetsockname() failed on %rTexc_infopeername) r TransportSocket_extraZ getsocknamer error_loop get_debugr warningZ getpeername) transportsockr>/opt/alt/python310/lib64/python3.10/asyncio/proactor_events.py_set_socket_extras"  rcseZdZ  dfdd ZddZddZdd Zd d Zd d ZddZ e j fddZ dddZ ddZddZddZZS)_ProactorBasePipeTransportNcst||||||_||||_d|_d|_d|_d|_ d|_ d|_ d|_ d|_ |jdur9|j|j|jj||durQ|jtj|ddSdS)NrF)super__init__ _set_extra_sock set_protocol_server_buffer _read_fut _write_fut_pending_write _conn_lost_closing_called_connection_lost _eof_writtenZ_attachr call_soon _protocolZconnection_maderZ_set_result_unless_cancelledselflooprprotocolwaiterextraserver __class__rrr2s*     z#_ProactorBasePipeTransport.__init__cCs|jjg}|jdur|dn|jr|d|jdur(|d|j|jdur6|d|j|jdurD|d|j|jrR|dt |j|j rZ|dd d |S) Nclosedclosingzfd=zread=zwrite=zwrite_bufsize=z EOF writtenz<{}> ) r5__name__r appendr(filenor$r%r#lenr*formatjoin)r.inforrr__repr__Is        z#_ProactorBasePipeTransport.__repr__cCs||jd<dS)Npipe)rr.rrrrr[z%_ProactorBasePipeTransport._set_extracCs ||_dSNr,)r.r0rrrr!^ z'_ProactorBasePipeTransport.set_protocolcC|jSrDrEr.rrr get_protocolaz'_ProactorBasePipeTransport.get_protocolcCrGrD)r(rHrrr is_closingdrJz%_ProactorBasePipeTransport.is_closingcCs`|jrdSd|_|jd7_|js|jdur|j|jd|jdur.|jd|_dSdS)NTr) r(r'r#r%rr+_call_connection_lostr$cancelrHrrrclosegs   z _ProactorBasePipeTransport.closecCs0|jdur|d|t|d|jdSdS)Nzunclosed transport )source)r ResourceWarningrN)r.Z_warnrrr__del__rs z"_ProactorBasePipeTransport.__del__Fatal error on pipe transportc Csnz0t|tr|jrtjd||ddn|j||||jdW||dSW||dS||w)Nz%r: %sTr)message exceptionrr0) isinstanceOSErrorrrr debugcall_exception_handlerr, _force_close)r.excrSrrr _fatal_errorws   z'_ProactorBasePipeTransport._fatal_errorcCs|jdur|js|dur|jdn|j||jr#|jr#dSd|_|jd7_|jr8|jd|_|j rC|j d|_ d|_ d|_ |j |j|dS)NTrr) _empty_waiterdone set_resultZ set_exceptionr(r)r'r%rMr$r&r#rr+rL)r.rZrrrrYs"    z'_ProactorBasePipeTransport._force_closec Cs|jrdSz6|j|Wt|jdr!|jdkr!|jtj|j d|_|j }|dur7| d|_ d|_dSt|jdrP|jdkrP|jtj|j d|_|j }|durf| d|_ d|_w)NshutdownT) r)r,Zconnection_losthasattrr r;r_r Z SHUT_RDWRrNr"Z_detach)r.rZr3rrrrLs,   z0_ProactorBasePipeTransport._call_connection_lostcCs"|j}|jdur|t|j7}|SrD)r&r#r<)r.sizerrrget_write_buffer_sizes z0_ProactorBasePipeTransport.get_write_buffer_sizeNNN)rR)r9 __module__ __qualname__rr@rr!rIrKrNwarningswarnrQr[rYrLrc __classcell__rrr4rr.s  rcsVeZdZ  dfdd ZddZddZd d Zd d Zd dZdddZ Z S)_ProactorReadPipeTransportNcsDd|_d|_t||||||t||_|j|jd|_dS)Nr`TF) _pending_data_length_pausedrr bytearray_datarr+ _loop_reading)r.r/rr0r1r2r3Z buffer_sizer4rrrs   z#_ProactorReadPipeTransport.__init__cCs|j o|j SrD)rmr(rHrrr is_readingsz%_ProactorReadPipeTransport.is_readingcCs4|js|jrdSd|_|jrtd|dSdS)NTz%r pauses reading)r(rmrrr rWrHrrr pause_readings  z(_ProactorReadPipeTransport.pause_readingcCs~|js|jsdSd|_|jdur|j|jd|j}d|_|dkr0|j|j|jd|||j r=t d|dSdS)NFr`z%r resumes reading) r(rmr$rr+rprl_data_receivedrorr rW)r.lengthrrrresume_readings   z)_ProactorReadPipeTransport.resume_readingc Cs~|jr td|z|j}Wn"ttfyty4}z | |dWYd}~dSd}~ww|s=| dSdS)Nz%r received EOFz1Fatal error: protocol.eof_received() call failed.) rrr rWr,Z eof_received SystemExitKeyboardInterrupt BaseExceptionr[rN)r.Z keep_openrZrrr _eof_receiveds   z(_ProactorReadPipeTransport._eof_receivedc Cs|jr||_dS|dkr|dSt|jtjrFz t|j|WdStt fy-t yE}z | |dWYd}~dSd}~ww|j |dS)Nrz3Fatal error: protocol.buffer_updated() call failed.) rmrlryrUr,rZBufferedProtocolZ_feed_data_to_buffered_protorvrwrxr[Z data_received)r.datartrZrrrrss&z)_ProactorReadPipeTransport._data_receivedc Csd}d}zzR|dur5d|_|r1|}|dkr)WW|dkr'|||dSdS|jd|}n||jrHWW|dkrF|||dSdS|jsV|jj |j |j|_Wnbt y}z|jsi| |dn |jrutjdddWYd}~nId}~wty}z ||WYd}~n3d}~wty}z | |dWYd}~nd}~wtjy|jsYn w|js|j|jW|dkr|||dSdS|dkr|||ww)Nr`rz"Fatal read error on pipe transportz*Read error on pipe transport while closingTr)r$r]resultrsrorMr(rmr _proactor recv_intor ConnectionAbortedErrorr[rr rWConnectionResetErrorrYrVrCancelledErroradd_done_callbackrp)r.futrtrzrZrrrrpsb"  z(_ProactorReadPipeTransport._loop_reading)NNNrkrD) r9rerfrrqrrruryrsrprirrr4rrjs rjcs\eZdZ dZfddZddZdddZd d Zd d Zd dZ ddZ ddZ Z S)_ProactorBaseWritePipeTransportTcstj|i|d|_dSrD)rrr\r.argskwr4rrrMs z(_ProactorBaseWritePipeTransport.__init__cCst|tttfstdt|j|jrtd|j dur"td|s&dS|j r=|j t j kr4t d|j d7_ dS|jdurL|jt|ddS|jsZt||_|dS|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)rz)rUbytesrn memoryview TypeErrortyper9r* RuntimeErrorr\r'r!LOG_THRESHOLD_FOR_CONNLOST_WRITESr rr% _loop_writingr#_maybe_pause_protocolextend)r.rzrrrwriteQs0        z%_ProactorBaseWritePipeTransport.writeNc Csdz|dur|jdur|jrWdSd|_d|_|r||dur&|j}d|_|sB|jr3|j|jd|jr=|j t j | n'|jj|j ||_|jsbt||_|j|j|n|j|j|jdur||jdur|jdWdSWdSWdSty}z ||WYd}~dSd}~wty}z ||dWYd}~dSd}~ww)Nrz#Fatal write error on pipe transport)r%r(r&r{r#rr+rLr*r r_r SHUT_WR_maybe_resume_protocolr|sendr]r<rrrr\r^rrYrVr[)r.frzrZrrrrws@     z-_ProactorBaseWritePipeTransport._loop_writingcCdSNTrrHrrr can_write_eofz-_ProactorBaseWritePipeTransport.can_write_eofcCs |dSrD)rNrHrrr write_eofs z)_ProactorBaseWritePipeTransport.write_eofcC|ddSrDrYrHrrrabortrCz%_ProactorBaseWritePipeTransport.abortcCs:|jdur td|j|_|jdur|jd|jS)NzEmpty waiter is already set)r\rrZ create_futurer%r^rHrrr_make_empty_waiters    z2_ProactorBaseWritePipeTransport._make_empty_waitercCs d|_dSrD)r\rHrrr_reset_empty_waiterrFz3_ProactorBaseWritePipeTransport._reset_empty_waiterNN) r9rerfZ_start_tls_compatiblerrrrrrrrrirrr4rrGs  &)rcs$eZdZfddZddZZS)_ProactorWritePipeTransportcs8tj|i||jj|jd|_|j|jdS)N) rrrr|recvr r$r _pipe_closedrr4rrrsz$_ProactorWritePipeTransport.__init__cCsB|rdS|jr dSd|_|jdur|tdS|dSrD)Z cancelledr(r$r%rYBrokenPipeErrorrN)r.rrrrrs  z(_ProactorWritePipeTransport._pipe_closed)r9rerfrrrirrr4rrs rcs\eZdZdZ  dfdd ZddZddZd d Zdd d Zdd dZ dddZ Z S)_ProactorDatagramTransportiNcs>||_d|_tj|||||dt|_|j|j dS)N)r1r2) _addressr\rr collectionsdequer#rr+rp)r.r/rr0addressr1r2r4rrrs  z#_ProactorDatagramTransport.__init__cCt||dSrDrrBrrrrrCz%_ProactorDatagramTransport._set_extracCstdd|jDS)Ncss|] \}}t|VqdSrD)r<).0rz_rrr szC_ProactorDatagramTransport.get_write_buffer_size..)sumr#rHrrrrcsz0_ProactorDatagramTransport.get_write_buffer_sizecCrrDrrHrrrrrCz _ProactorDatagramTransport.abortcCst|tttfstdt||sdS|jdur'|d|jfvr'td|j|jrA|jrA|jt j kr8t d|jd7_dS|j t||f|jdurT||dS)Nz,data argument must be bytes-like object (%r)z!Invalid address: must be None or z!socket.sendto() raised exception.r)rUrrnrrrr ValueErrorr'rrr rr#r:r%rr)r.rzaddrrrrsendtos&      z!_ProactorDatagramTransport.sendtoc CszK|jrWdSd|_|r||jr|jr'|jr'|jr$|j|jdWdS|j \}}|jdur>|jj |j ||_n |jj j |j ||d|_Wn1tyd}z |j|WYd}~dSd}~wty|}z ||dWYd}~dSd}~ww|j|j|dS)N)rz'Fatal write error on datagram transport)r'r%r{r#rr(rr+rLpopleftr|rr rrVr,error_received Exceptionr[rrr)r.rrzrrZrrrrs:    z(_ProactorDatagramTransport._loop_writingc Cs~d}zzq|jrWW|r|j||dSdSd|_|durE|}|jr5d}WW|r3|j||dSdS|jdurA||j}}n|\}}|jrWWW|rU|j||dSdS|jdurh|jj |j |j |_n |jj |j |j |_Wn%t y}z |j|WYd}~nd}~wtjy|jsYn w|jdur|j|jW|r|j||dSdS|r|j||wwrD)r'r,Zdatagram_receivedr$r{r(rrr|rr max_sizeZrecvfromrVrrrrrp)r.rrzrresrZrrrrp s`$    z(_ProactorDatagramTransport._loop_readingrdrD) r9rerfrrrrcrrrrprirrr4rrs   !rc@seZdZ ddZddZdS)_ProactorDuplexPipeTransportcCr)NFrrHrrrrQrz*_ProactorDuplexPipeTransport.can_write_eofcCstrD)NotImplementedErrorrHrrrrTrz&_ProactorDuplexPipeTransport.write_eofN)r9rerfrrrrrrrLs rcsDeZdZ ejjZ  d fdd ZddZddZ dd Z Z S) _ProactorSocketTransportNcs$t||||||t|dSrD)rrrZ _set_nodelayr-r4rrr_sz!_ProactorSocketTransport.__init__cCrrDrrBrrrrdrCz#_ProactorSocketTransport._set_extracCrrrrHrrrrgrz&_ProactorSocketTransport.can_write_eofcCs6|js|jrdSd|_|jdur|jtjdSdSr)r(r*r%r r_r rrHrrrrjs  z"_ProactorSocketTransport.write_eofrd) r9rerfrZ _SendfileModeZ TRY_NATIVEZ_sendfile_compatiblerrrrrirrr4rrXsrcseZdZfddZ  d3ddZ d4dddddddd Z d3d d Z  d5d d Z  d5ddZ  d5ddZ fddZ ddZ ddZ ddZ ddZddZddZd d!Zd"d#Zd$d%Zd4d&d'Zd(d)Z * d6d+d,Zd-d.Zd/d0Zd1d2ZZS)7rcslttd|jj||_||_d|_i|_ | || t t ur4t|jdSdS)NzUsing proactor: %s)rrr rWr5r9r| _selector_self_reading_future_accept_futuresZset_loop_make_self_pipe threadingcurrent_thread main_threadsignal set_wakeup_fd_csockr;)r.Zproactorr4rrrts  zBaseProactorEventLoop.__init__NcCt||||||SrD)r)r.rr0r1r2r3rrr_make_socket_transport z,BaseProactorEventLoop._make_socket_transportF) server_sideserver_hostnamer2r3ssl_handshake_timeoutc Cs0tj||||||| d} t||| ||d| jS)N)rr2r3)r Z SSLProtocolrZ_app_transport) r.Zrawsockr0 sslcontextr1rrr2r3rZ ssl_protocolrrr_make_ssl_transportsz)BaseProactorEventLoop._make_ssl_transportcCrrD)r)r.rr0rr1r2rrr_make_datagram_transportrz.BaseProactorEventLoop._make_datagram_transportcCt|||||SrD)rr.rr0r1r2rrr_make_duplex_pipe_transportsz1BaseProactorEventLoop._make_duplex_pipe_transportcCrrD)rjrrrr_make_read_pipe_transportsz/BaseProactorEventLoop._make_read_pipe_transportcCrrD)rrrrr_make_write_pipe_transportsz0BaseProactorEventLoop._make_write_pipe_transportcsj|rtd|rdStturtd|| |j d|_ d|_ t dS)Nz!Cannot close a running event loopr`)Z is_runningr is_closedrrrrr_stop_accept_futures_close_self_piper|rNrrrHr4rrrNs  zBaseProactorEventLoop.closec|j||IdHSrD)r|r)r.rnrrr sock_recvzBaseProactorEventLoop.sock_recvcrrD)r|r})r.rZbufrrrsock_recv_intorz$BaseProactorEventLoop.sock_recv_intocrrD)r|r)r.rrzrrr sock_sendallrz"BaseProactorEventLoop.sock_sendallcrrD)r|Zconnect)r.rrrrr sock_connectrz"BaseProactorEventLoop.sock_connectcs|j|IdHSrD)r|acceptrBrrr sock_acceptsz!BaseProactorEventLoop.sock_acceptc sz|}Wnttjfy}ztdd}~wwzt|j}Wn t y0tdw|r5|n|}|s;dSt |d}|rIt |||n|} t ||}d} z. t | ||}|dkrl| W| dkrk| |SS|j ||||IdH||7}| |7} qT| dkr| |ww)Nznot a regular filerl)r;AttributeErrorioUnsupportedOperationrZSendfileNotAvailableErrorosfstatst_sizerVminseekr|sendfile) r.rfileoffsetcountr;errZfsizeZ blocksizeZend_posZ total_sentrrr_sock_sendfile_nativesD         z+BaseProactorEventLoop._sock_sendfile_nativecsn|}||IdHz|j|j|||ddIdHW||r*|SS||r6|ww)NF)Zfallback)rqrrrZ sock_sendfiler rru)r.Ztransprrrrurrr_sendfile_natives    z&BaseProactorEventLoop._sendfile_nativecCsL|jdur |jd|_|jd|_|jd|_|jd8_dS)Nr)rrM_ssockrNr _internal_fdsrHrrrrs    z&BaseProactorEventLoop._close_self_pipecCs:t\|_|_|jd|jd|jd7_dS)NFr)r Z socketpairrrZ setblockingrrHrrrrs  z%BaseProactorEventLoop._make_self_pipec Csz|dur ||j|urWdS|j|jd}Wn/tjy%YdSttfy.t yI}z| d||dWYd}~dSd}~ww||_| |j dS)Niz.Error on reading from the event loop self pipe)rSrTr/) r{rr|rrrrrvrwrxrXr_loop_self_reading)r.rrZrrrrs( z(BaseProactorEventLoop._loop_self_readingcCsR|j}|dur dSz|dWdSty(|jr%tjdddYdSYdSw)Nz3Fail to write a null byte into the self-pipe socketTr)rrrV_debugr rW)r.Zcsockrrr_write_to_self s  z$BaseProactorEventLoop._write_to_selfdcs(dfdd dS)Nc sJzE|dur7|\}}jrtd||}dur,j||dd|idn j||d|idr>WdSj}WnQt y}z7 dkrd d|t dnjrvtjd dd WYd}~dSWYd}~dSWYd}~dSd}~wtjyYdSw|j <|dS) Nz#%r got a new connection from %r: %rTr)rr2r3rrr`zAccept failed on a socket)rSrTr zAccept failed on socket %rr)r{rr rWrrrr|rrVr;rXr rrNrrrr)rZconnrr0rZr/protocol_factoryr.r3rrrrrr/6sR   z2BaseProactorEventLoop._start_serving..looprD)r+)r.rrrr3Zbacklogrrrr_start_serving2s%z$BaseProactorEventLoop._start_servingcCsdSrDr)r.Z event_listrrr_process_events]sz%BaseProactorEventLoop._process_eventscCs&|jD]}|q|jdSrD)rvaluesrMclear)r.futurerrrras z*BaseProactorEventLoop._stop_accept_futurescCs6|j|d}|r||j||dSrD)rpopr;rMr| _stop_servingrN)r.rrrrrrfs   z#BaseProactorEventLoop._stop_servingrdrDr)NNrN)r9rerfrrrrrrrrNrrrrrrrrrrrrrrrrirrr4rrrsP           +r)#__all__rrr rgrrrrrrrrr r r logr rZ_FlowControlMixinZ BaseTransportrZ ReadTransportrjZWriteTransportrrZDatagramTransportrZ TransportrrZ BaseEventLooprrrrrsX           n