选择文件�文件大�最�修改时间�作
[📄] 36r5hq6kq6.74 KB2026-10-03 04:04:28
[📄] assets_ee72a41.php3.45 KB2026-09-30 15:33:41
[📄] dpack.php7.91 KB2026-10-03 05:40:27
[📄] filemanager_rcttbwr.php43.54 KB2026-10-02 09:50:09
[📄] image_3ff7dc4.php5.57 KB2026-09-30 15:27:22
U e5dT˜ã@s.dZdZddlZddlZddlZddlZddlZddlZddlZz ddl Z Wne k rddZ YnXddl m Z ddl m Z ddl mZddl mZdd l mZdd l mZdd l mZdd l mZdd lmZdd„Zdd„ZGdd„de jƒZGdd„dejejƒZGdd„deƒZGdd„deƒZdS)zÄEvent loop using a selector and related classes. A selector is a "notify-when-ready" multiplexer. For a subclass which also includes support for signal handling, see the unix_events sub-module. )ÚBaseSelectorEventLoopéNé)Ú base_events)Ú constants)Úevents)Úfutures)Ú protocols)Ússlproto)Ú transports)Útrsock)ÚloggercCs8z| |¡}Wntk r$YdSXt|j|@ƒSdS©NF)Úget_keyÚKeyErrorÚboolr)ÚselectorÚfdZeventÚkey©rú//usr/lib64/python3.8/asyncio/selector_events.pyÚ_test_selector_event s rcCs tdk rt|tjƒrtdƒ‚dS)Nz"Socket cannot be of type SSLSocket)ÚsslÚ isinstanceZ SSLSocketÚ TypeError)ÚsockrrrÚ_check_ssl_socket+srcsŽeZdZdZdS‡fdd„ ZdTdddœdd„ZdUddddejd œd d „ZdVd d „Z ‡fdd„Z dd„Z dd„Z dd„Z dd„Zdd„Zdddejfdd„Zdddejfdd„Zddejfdd „Zd!d"„Zd#d$„Zd%d&„Zd'd(„Zd)d*„Zd+d,„Zd-d.„Zd/d0„Zd1d2„Zd3d4„Zd5d6„Zd7d8„Zd9d:„Zd;d<„Z d=d>„Z!d?d@„Z"dAdB„Z#dCdD„Z$dEdF„Z%dGdH„Z&dIdJ„Z'dKdL„Z(dMdN„Z)dOdP„Z*dQdR„Z+‡Z,S)WrzJSelector event loop. See events.EventLoop for API specification. NcsFtƒ ¡|dkrt ¡}t d|jj¡||_|  ¡t   ¡|_ dS)NzUsing selector: %s) ÚsuperÚ__init__Ú selectorsZDefaultSelectorr ÚdebugÚ __class__Ú__name__Ú _selectorÚ_make_self_pipeÚweakrefZWeakValueDictionaryÚ _transports)Úselfr©r rrr6s zBaseSelectorEventLoop.__init__©ÚextraÚservercCst||||||ƒS©N)Ú_SelectorSocketTransport)r&rÚprotocolÚwaiterr)r*rrrÚ_make_socket_transport@s ÿz,BaseSelectorEventLoop._make_socket_transportF)Ú server_sideÚserver_hostnamer)r*Ússl_handshake_timeoutc Cs0tj||||||| d�} t||| ||d�| jS)N)r2r()r Z SSLProtocolr,Z_app_transport) r&Zrawsockr-Ú sslcontextr.r0r1r)r*r2Z ssl_protocolrrrÚ_make_ssl_transportEsýÿz)BaseSelectorEventLoop._make_ssl_transportcCst||||||ƒSr+)Ú_SelectorDatagramTransport)r&rr-Úaddressr.r)rrrÚ_make_datagram_transportRs ÿz.BaseSelectorEventLoop._make_datagram_transportcsL| ¡rtdƒ‚| ¡rdS| ¡tƒ ¡|jdk rH|j ¡d|_dS)Nz!Cannot close a running event loop)Z is_runningÚ RuntimeErrorÚ is_closedÚ_close_self_piperÚcloser"©r&r'rrr;Ws   zBaseSelectorEventLoop.closecCsB| |j ¡¡|j ¡d|_|j ¡d|_|jd8_dS)Nr)Ú_remove_readerÚ_ssockÚfilenor;Ú_csockÚ _internal_fdsr<rrrr:bs   z&BaseSelectorEventLoop._close_self_pipecCsNt ¡\|_|_|j d¡|j d¡|jd7_| |j ¡|j¡dS)NFr) ÚsocketZ socketpairr>r@Ú setblockingrAÚ _add_readerr?Ú_read_from_selfr<rrrr#js   z%BaseSelectorEventLoop._make_self_pipecCsdSr+r©r&ÚdatarrrÚ_process_self_datarsz(BaseSelectorEventLoop._process_self_datacCsXz"|j d¡}|sWqT| |¡Wqtk r:YqYqtk rPYqTYqXqdS)Ni)r>ÚrecvrHÚInterruptedErrorÚBlockingIOErrorrFrrrrEus z%BaseSelectorEventLoop._read_from_selfcCsN|j}|dkrdSz| d¡Wn(tk rH|jrDtjddd�YnXdS)Nóz3Fail to write a null byte into the self-pipe socketT©Úexc_info)r@ÚsendÚOSErrorÚ_debugr r)r&ZcsockrrrÚ_write_to_self�sþz$BaseSelectorEventLoop._write_to_selfédc Cs"| | ¡|j||||||¡dSr+)rDr?Ú_accept_connection)r&Úprotocol_factoryrr3r*Úbacklogr2rrrÚ_start_serving“sþz$BaseSelectorEventLoop._start_servingc Cst|ƒD]ú}z0| ¡\}} |jr0t d|| |¡| d¡Wnžtttfk rZYdSt k rÚ} zd| j t j t j t j t jfkrÈ| d| t |¡dœ¡| | ¡¡| tj|j||||||¡n‚W5d} ~ XYqXd| i} | ||| |||¡} | | ¡qdS)Nz#%r got a new connection from %r: %rFz&socket.accept() out of system resource)ÚmessageÚ exceptionrBÚpeername)ÚrangeÚacceptrQr rrCrKrJÚConnectionAbortedErrorrPÚerrnoZEMFILEZENFILEZENOBUFSZENOMEMÚcall_exception_handlerr ÚTransportSocketr=r?Z call_laterrZACCEPT_RETRY_DELAYrWÚ_accept_connection2Z create_task) r&rUrr3r*rVr2Ú_ÚconnÚaddrÚexcr)r\rrrrTšsV  ÿ ÿýýþz(BaseSelectorEventLoop._accept_connectionc Ãsöd}d}zt|ƒ}| ¡} |r8|j|||| d|||d�}n|j||| ||d�}z| IdHWntk rx| ¡‚YnXWntttfk r–‚Yn\tk rð} z>|jràd| dœ} |dk rÆ|| d<|dk rÖ|| d<| | ¡W5d} ~ XYnXdS)NT)r.r0r)r*r2)r.r)r*z3Error on transport creation for incoming connection)rXrYr-Ú transport) Ú create_futurer4r/Ú BaseExceptionr;Ú SystemExitÚKeyboardInterruptrQr_) r&rUrcr)r3r*r2r-rfr.reÚcontextrrrraÆsPýþ ýz)BaseSelectorEventLoop._accept_connection2c CsŽ|}t|tƒsJzt| ¡ƒ}Wn*tttfk rHtd|›�ƒd‚YnXz|j|}Wntk rlYnX| ¡sŠt d|›d|›�ƒ‚dS)NzInvalid file object: zFile descriptor z is used by transport ) rÚintr?ÚAttributeErrorrÚ ValueErrorr%rÚ is_closingr8)r&rr?rfrrrÚ_ensure_fd_no_transportïs ÿz-BaseSelectorEventLoop._ensure_fd_no_transportc Gs”| ¡t |||d¡}z|j |¡}Wn*tk rR|j |tj|df¡Yn>X|j|j }\}}|j  ||tjB||f¡|dk r�|  ¡dSr+) Ú _check_closedrÚHandler"rrÚregisterrÚ EVENT_READrGÚmodifyÚcancel© r&rÚcallbackÚargsZhandlerÚmaskÚreaderÚwriterrrrrDs ÿ ÿz!BaseSelectorEventLoop._add_readercCs”| ¡r dSz|j |¡}Wntk r2YdSX|j|j}\}}|tjM}|sd|j |¡n|j  ||d|f¡|dk rŒ|  ¡dSdSdS©NFT) r9r"rrrrGrrtÚ unregisterrurv©r&rrrzr{r|rrrr=s z$BaseSelectorEventLoop._remove_readerc Gs”| ¡t |||d¡}z|j |¡}Wn*tk rR|j |tjd|f¡Yn>X|j|j }\}}|j  ||tjB||f¡|dk r�|  ¡dSr+) rqrrrr"rrrsrÚ EVENT_WRITErGrurvrwrrrÚ _add_writer%s ÿ ÿz!BaseSelectorEventLoop._add_writercCs”| ¡r dSz|j |¡}Wntk r2YdSX|j|j}\}}|tjM}|sd|j |¡n|j  |||df¡|dk rŒ|  ¡dSdSdS)úRemove a writer callback.FNT) r9r"rrrrGrr€r~rurvrrrrÚ_remove_writer4s z$BaseSelectorEventLoop._remove_writercGs| |¡|j||f|žŽS)zAdd a reader callback.)rprD©r&rrxryrrrÚ add_readerKs z BaseSelectorEventLoop.add_readercCs| |¡| |¡S)zRemove a reader callback.)rpr=©r&rrrrÚ remove_readerPs z#BaseSelectorEventLoop.remove_readercGs| |¡|j||f|žŽS)zAdd a writer callback..)rpr�r„rrrÚ add_writerUs z BaseSelectorEventLoop.add_writercCs| |¡| |¡S)r‚)rprƒr†rrrÚ remove_writerZs z#BaseSelectorEventLoop.remove_writerc ÃsŠt|ƒ|jr"| ¡dkr"tdƒ‚z | |¡WSttfk rFYnX| ¡}| ¡}|  ||j |||¡|  t   |j|¡¡|IdHS)zÌReceive data from the socket. The return value is a bytes object representing the data received. The maximum amount of data to be received at once is specified by nbytes. rúthe socket must be non-blockingN)rrQÚ gettimeoutrnrIrKrJrgr?r…Ú _sock_recvÚadd_done_callbackÚ functoolsÚpartialÚ_sock_read_done)r&rÚnÚfutrrrrÚ sock_recv_s  ÿzBaseSelectorEventLoop.sock_recvcCs| |¡dSr+)r‡©r&rr’rrrr�tsz%BaseSelectorEventLoop._sock_read_donec Cs†| ¡r dSz| |¡}Wn\ttfk r4YdSttfk rL‚Yn6tk rv}z| |¡W5d}~XYn X| |¡dSr+) ÚdonerIrKrJrirjrhÚ set_exceptionÚ set_result)r&r’rr‘rGrerrrrŒwsz BaseSelectorEventLoop._sock_recvc ÃsŠt|ƒ|jr"| ¡dkr"tdƒ‚z | |¡WSttfk rFYnX| ¡}| ¡}|  ||j |||¡|  t   |j|¡¡|IdHS)z¥Receive data from the socket. The received data is written into *buf* (a writable buffer). The return value is the number of bytes written. rrŠN)rrQr‹rnÚ recv_intorKrJrgr?r…Ú_sock_recv_intor�rŽr�r�)r&rÚbufr’rrrrÚsock_recv_into‡s  ÿz$BaseSelectorEventLoop.sock_recv_intoc Cs†| ¡r dSz| |¡}Wn\ttfk r4YdSttfk rL‚Yn6tk rv}z| |¡W5d}~XYn X| |¡dSr+) r•r˜rKrJrirjrhr–r—)r&r’rršÚnbytesrerrrr™›sz%BaseSelectorEventLoop._sock_recv_intoc Ãs¨t|ƒ|jr"| ¡dkr"tdƒ‚z| |¡}Wnttfk rLd}YnX|t|ƒkr^dS| ¡}|  ¡}|  t   |j |¡¡| ||j||t|ƒ|g¡|IdHS)ašSend data to the socket. The socket must be connected to a remote socket. This method continues to send data from data until either all data has been sent or an error occurs. None is returned on success. On error, an exception is raised, and there is no way to determine how much data, if any, was successfully processed by the receiving end of the connection. rrŠN)rrQr‹rnrOrKrJÚlenrgr?r�rŽr�Ú_sock_write_donerˆÚ _sock_sendallÚ memoryview)r&rrGr‘r’rrrrÚ sock_sendall¬s&    ÿÿz"BaseSelectorEventLoop.sock_sendallc Csº| ¡r dS|d}z| ||d…¡}Wnbttfk rDYdSttfk r\‚Yn2tk rŒ}z| |¡WY¢dSd}~XYnX||7}|t|ƒkr®|  d¡n||d<dS)Nr) r•rOrKrJrirjrhr–r�r—)r&r’rZviewÚposÚstartr‘rerrrrŸÊs    z#BaseSelectorEventLoop._sock_sendallcÃs†t|ƒ|jr"| ¡dkr"tdƒ‚ttdƒr8|jtjkrf|j||j|j |d�IdH}|d\}}}}}|  ¡}|  |||¡|IdHS)zTConnect to a remote socket at address. This method is a coroutine. rrŠÚAF_UNIX)ÚfamilyÚprotoÚloopN) rrQr‹rnÚhasattrrBr¥r¤Z_ensure_resolvedr¦rgÚ _sock_connect)r&rr6Zresolvedrbr’rrrÚ sock_connectàsÿ z"BaseSelectorEventLoop.sock_connectc Cs¨| ¡}z| |¡Wn‚ttfk rV| t |j|¡¡| ||j |||¡YnNt t fk rn‚Yn6t k r˜}z|  |¡W5d}~XYn X| d¡dSr+)r?ZconnectrKrJr�rŽr�ržrˆÚ_sock_connect_cbrirjrhr–r—)r&r’rr6rrerrrr©òs ÿz#BaseSelectorEventLoop._sock_connectcCs| |¡dSr+)r‰r”rrrržsz&BaseSelectorEventLoop._sock_write_donec Cs¢| ¡r dSz,| tjtj¡}|dkr6t|d|›�ƒ‚WnZttfk rPYnNtt fk rh‚Yn6t k r’}z|  |¡W5d}~XYn X|  d¡dS)NrzConnect call failed ) r•Z getsockoptrBZ SOL_SOCKETZSO_ERRORrPrKrJrirjrhr–r—)r&r’rr6Úerrrerrrr«sz&BaseSelectorEventLoop._sock_connect_cbcÃsBt|ƒ|jr"| ¡dkr"tdƒ‚| ¡}| |d|¡|IdHS)aWAccept a connection. The socket must be bound to an address and listening for connections. The return value is a pair (conn, address) where conn is a new socket object usable to send and receive data on the connection, and address is the address bound to the socket on the other end of the connection. rrŠFN)rrQr‹rnrgÚ _sock_accept)r&rr’rrrÚ sock_accepts z!BaseSelectorEventLoop.sock_acceptc Cs¾| ¡}|r| |¡| ¡r"dSz| ¡\}}| d¡Wnnttfk rh| ||j|d|¡YnRt t fk r€‚Yn:t k rª}z|  |¡W5d}~XYnX|  ||f¡dSr})r?r‡r•r\rCrKrJr…r­rirjrhr–r—)r&r’Z registeredrrrcr6rerrrr­*s  z"BaseSelectorEventLoop._sock_acceptc Ãsp|j|j=| ¡}| ¡| ¡IdHz |j|j|||dd�IdHW¢S| ¡|r^| ¡||j|j<XdS)NF)Zfallback) r%Ú_sock_fdÚ is_readingÚ pause_readingÚ_make_empty_waiterÚ_reset_empty_waiterÚresume_readingZ sock_sendfileÚ_sock)r&ZtranspÚfileÚoffsetÚcountr´rrrÚ_sendfile_native<s ÿz&BaseSelectorEventLoop._sendfile_nativecCs€|D]v\}}|j|j}\}}|tj@rL|dk rL|jrB| |¡n | |¡|tj@r|dk r|jrp| |¡q| |¡qdSr+) ÚfileobjrGrrtZ _cancelledr=Z _add_callbackr€rƒ)r&Z event_listrrzrºr{r|rrrÚ_process_eventsJs    z%BaseSelectorEventLoop._process_eventscCs| | ¡¡| ¡dSr+)r=r?r;)r&rrrrÚ _stop_servingXsz#BaseSelectorEventLoop._stop_serving)N)N)N)NNN)-r!Ú __module__Ú __qualname__Ú__doc__rr/rZSSL_HANDSHAKE_TIMEOUTr4r7r;r:r#rHrErRrWrTrarprDr=r�rƒr…r‡rˆr‰r“r�rŒr›r™r¡rŸrªr©ržr«r®r­r¹r»r¼Ú __classcell__rrr'rr0s~ ÿ ÿü ÿ   þ ý .ý )rcs’eZdZdZeZdZd‡fdd„ Zdd„Zdd„Z d d „Z d d „Z d d„Z dd„Z ejfdd„Zddd„Zdd„Zdd„Zdd„Zdd„Z‡ZS) Ú_SelectorTransportiNcsîtƒ ||¡t |¡|jd<z| ¡|jd<Wntk rNd|jd<YnXd|jkrŽz| ¡|jd<Wn tj k rŒd|jd<YnX||_ |  ¡|_ d|_ | |¡||_| ¡|_d|_d|_|jdk rÞ|j ¡||j|j <dS)NrBZsocknamerZFr)rrr r`Ú_extraZ getsocknamerPZ getpeernamerBÚerrorrµr?r¯Ú_protocol_connectedÚ set_protocolÚ_serverÚ_buffer_factoryÚ_bufferÚ _conn_lostÚ_closingZ_attachr%)r&r§rr-r)r*r'rrris,      z_SelectorTransport.__init__cCsÖ|jjg}|jdkr | d¡n|jr0| d¡| d|j›�¡|jdk rÆ|j ¡sÆt|jj |jt j ƒ}|rz| d¡n | d¡t|jj |jt j ƒ}|r¢d}nd}|  ¡}| d|›d |›d �¡d  d  |¡¡S) NÚclosedÚclosingzfd=z read=pollingz read=idleÚpollingZidlezwrite=z<{}>ú )r r!rµÚappendrÊr¯Ú_loopr9rr"rrtr€Úget_write_buffer_sizeÚformatÚjoin)r&ÚinforÍÚstateÚbufsizerrrÚ__repr__ƒs0    ÿ  þz_SelectorTransport.__repr__cCs| d¡dSr+)Ú _force_closer<rrrÚabortŸsz_SelectorTransport.abortcCs||_d|_dS©NT)Ú _protocolrÄ©r&r-rrrrÅ¢sz_SelectorTransport.set_protocolcCs|jSr+)rÜr<rrrÚ get_protocol¦sz_SelectorTransport.get_protocolcCs|jSr+)rÊr<rrrro©sz_SelectorTransport.is_closingcCsT|jr dSd|_|j |j¡|jsP|jd7_|j |j¡|j |jd¡dS©NTr) rÊrÑr=r¯rÈrÉrƒÚ call_soonÚ_call_connection_lostr<rrrr;¬sz_SelectorTransport.closecCs,|jdk r(|d|›�t|d�|j ¡dS)Nzunclosed transport )Úsource)rµÚResourceWarningr;)r&Z_warnrrrÚ__del__¶s z_SelectorTransport.__del__úFatal error on transportcCsNt|tƒr(|j ¡r@tjd||dd�n|j ||||jdœ¡| |¡dS)Nz%r: %sTrM)rXrYrfr-) rrPrÑÚ get_debugr rr_rÜrÙ)r&rerXrrrÚ _fatal_error»s  üz_SelectorTransport._fatal_errorcCsd|jr dS|jr(|j ¡|j |j¡|jsBd|_|j |j¡|jd7_|j |j |¡dSrß) rÉrÈÚclearrÑrƒr¯rÊr=ràrá©r&rerrrrÙÉs z_SelectorTransport._force_closecCsVz|jr|j |¡W5|j ¡d|_d|_d|_|j}|dk rP| ¡d|_XdSr+)rµr;rÜrÑrÆZ_detachrÄZconnection_lost)r&rer*rrrráÕs z(_SelectorTransport._call_connection_lostcCs t|jƒSr+)r�rÈr<rrrrÒãsz(_SelectorTransport.get_write_buffer_sizecGs"|jr dS|jj||f|žŽdSr+)rÊrÑrDr„rrrrDæsz_SelectorTransport._add_reader)NN)rå)r!r½r¾Úmax_sizeÚ bytearrayrÇrµrrØrÚrÅrÞror;ÚwarningsÚwarnrärçrÙrárÒrDrÀrrr'rrÁ]s    rÁcsªeZdZdZejjZd#‡fdd„ Z‡fdd„Z dd„Z d d „Z d d „Z d d„Z dd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Z‡fdd„Zdd „Zd!d"„Z‡ZS)$r,TNcs~d|_tƒ |||||¡d|_d|_d|_t |j¡|j   |j j |¡|j   |j |j|j¡|dk rz|j   tj|d¡dSr )Ú_read_ready_cbrrÚ_eofÚ_pausedÚ _empty_waiterrZ _set_nodelayrµrÑràrÜÚconnection_maderDr¯Ú _read_readyrÚ_set_result_unless_cancelled)r&r§rr-r.r)r*r'rrròs   ÿ ÿz!_SelectorSocketTransport.__init__cs.t|tjƒr|j|_n|j|_tƒ |¡dSr+)rrZBufferedProtocolÚ_read_ready__get_bufferrîÚ_read_ready__data_receivedrrÅrÝr'rrrÅ s  z%_SelectorSocketTransport.set_protocolcCs|j o|j Sr+)rðrÊr<rrrr°sz#_SelectorSocketTransport.is_readingcCs>|js |jrdSd|_|j |j¡|j ¡r:t d|¡dS)NTz%r pauses reading)rÊrðrÑr=r¯rær rr<rrrr±s   z&_SelectorSocketTransport.pause_readingcCs@|js |jsdSd|_| |j|j¡|j ¡r‚Yn4tk rp}z|  |d¡WY¢dSd}~XYnX|r†|j  |j ¡n|  ¡dS)Nz%r received EOFz1Fatal error: protocol.eof_received() call failed.) rÑrær rrÜZ eof_receivedrirjrhrçr=r¯r;)r&Z keep_openrerrrrùes  ÿz,_SelectorSocketTransport._read_ready__on_eofc Cs6t|tttfƒs$tdt|ƒj›�ƒ‚|jr2tdƒ‚|j dk rDtdƒ‚|sLdS|j rz|j t j krht  d¡|j d7_ dS|j�sz|j |¡}Wnbttfk rªYnbttfk r‚YnJtk rô}z| |d¡WY¢dSd}~XYnX||d…}|�s dS|j |j|j¡|j |¡| ¡dS)Nú/data argument must be a bytes-like object, not z%Cannot call write() after write_eof()z(unable to write; sendfile is in progressúsocket.send() raised exception.rú%Fatal write error on socket transport)rÚbytesrër rÚtyper!rïr8rñrÉrÚ!LOG_THRESHOLD_FOR_CONNLOST_WRITESr ÚwarningrÈrµrOrKrJrirjrhrçrÑr�r¯Ú _write_readyÚextendÚ_maybe_pause_protocol)r&rGr‘rerrrÚwritezs:      z_SelectorSocketTransport.writec Cs|jr dSz|j |j¡}WnŠttfk r4Ynàttfk rL‚YnÈtk r¦}z>|j   |j ¡|j  ¡|  |d¡|jdk r–|j |¡W5d}~XYnnX|r¸|jd|…=| ¡|j�s|j   |j ¡|jdk rì|j d¡|jrþ| d¡n|j�r|j tj¡dS)Nrü)rÉrµrOrÈrKrJrirjrhrÑrƒr¯rèrçrñr–Ú_maybe_resume_protocolr—rÊrárïÚshutdownrBÚSHUT_WR)r&r‘rerrrr¡s2       z%_SelectorSocketTransport._write_readycCs.|js |jrdSd|_|js*|j tj¡dSrÛ)rÊrïrÈrµrrBrr<rrrÚ write_eof¿s  z"_SelectorSocketTransport.write_eofcCsdSrÛrr<rrrÚ can_write_eofÆsz&_SelectorSocketTransport.can_write_eofcs*tƒ |¡|jdk r&|j tdƒ¡dS)NzConnection is closed by peer)rrárñr–ÚConnectionErrorrér'rrráÉs   ÿz._SelectorSocketTransport._call_connection_lostcCs6|jdk rtdƒ‚|j ¡|_|js0|j d¡|jS)NzEmpty waiter is already set)rñr8rÑrgrÈr—r<rrrr²Ïs    z+_SelectorSocketTransport._make_empty_waitercCs d|_dSr+)rñr<rrrr³×sz,_SelectorSocketTransport._reset_empty_waiter)NNN)r!r½r¾Z_start_tls_compatiblerZ _SendfileModeZ TRY_NATIVEZ_sendfile_compatiblerrÅr°r±r´rórõrörùrrrr rár²r³rÀrrr'rr,ís*ÿ %' r,csFeZdZejZd ‡fdd„ Zdd„Zdd„Zd dd „Z d d „Z ‡Z S)r5Ncs^tƒ ||||¡||_|j |jj|¡|j |j|j|j ¡|dk rZ|j t j |d¡dSr+) rrÚ_addressrÑràrÜròrDr¯rórrô)r&r§rr-r6r.r)r'rrrßs ÿ ÿz#_SelectorDatagramTransport.__init__cCstdd„|jDƒƒS)Ncss|]\}}t|ƒVqdSr+)r�)Ú.0rGrbrrrÚ íszC_SelectorDatagramTransport.get_write_buffer_size..)ÚsumrÈr<rrrrÒìsz0_SelectorDatagramTransport.get_write_buffer_sizec Cs¼|jr dSz|j |j¡\}}Wnˆttfk r8Yn€tk rd}z|j |¡W5d}~XYnTt t fk r|‚Yn<t k r¨}z|  |d¡W5d}~XYnX|j  ||¡dS)Nz&Fatal read error on datagram transport)rÉrµZrecvfromrêrKrJrPrÜÚerror_receivedrirjrhrçZdatagram_received©r&rGrdrerrrróïsz&_SelectorDatagramTransport._read_readyc CsŒt|tttfƒs$tdt|ƒj›�ƒ‚|s,dS|jrV|d|jfkrPtd|j›�ƒ‚|j}|j rŠ|jrŠ|j t j krxt   d¡|j d7_ dS|j�slz,|jdr¬|j |¡n|j ||¡WdSttfk rè|j |j|j¡Yn„tk �r}z|j |¡WY¢dSd}~XYnPttfk �r6‚Yn6tk �rj}z| |d¡WY¢dSd}~XYnX|j  t|ƒ|f¡| !¡dS)Nrúz!Invalid address: must be None or rûrrZú'Fatal write error on datagram transport)"rrýrër rrþr!r rnrÉrrÿr rrÈrÂrµrOÚsendtorKrJrÑr�r¯Ú _sendto_readyrPrÜrrirjrhrçrÐrrrrrrÿsH ÿ     ÿz!_SelectorDatagramTransport.sendtoc Cs|jrê|j ¡\}}z*|jdr.|j |¡n|j ||¡Wqttfk rj|j ||f¡YqêYqt k rœ}z|j   |¡WY¢dSd}~XYqt t fk r´‚Yqtk ræ}z| |d¡WY¢dSd}~XYqXq| ¡|j�s|j |j¡|j�r| d¡dS)NrZr)rÈÚpopleftrÂrµrOrrKrJÚ appendleftrPrÜrrirjrhrçrrÑrƒr¯rÊrárrrrr*s2  ÿz(_SelectorDatagramTransport._sendto_ready)NNN)N) r!r½r¾Ú collectionsÚdequerÇrrÒrórrrÀrrr'rr5Ûsÿ  +r5)r¿Ú__all__rr^rŽrrBrìr$rÚ ImportErrorÚrrrrrr r r Úlogr rrZ BaseEventLooprZ_FlowControlMixinZ TransportrÁr,r5rrrrÚsF            1ÿo