HEX
Server: Apache/2.4.65 (Unix) OpenSSL/1.1.1k
System: Linux vps109042.inmotionhosting.com 4.18.0 #1 SMP Mon Sep 30 15:36:27 MSK 2024 x86_64
User: cisa (1010)
PHP: 8.2.30
Disabled: NONE
Upload Files
File: //opt/imh-python/lib/python3.9/asyncio/__pycache__/selector_events.cpython-39.opt-2.pyc
a

b�hN��@s(dZddlZddlZddlZddlZddlZddlZddlZzddlZWne	y^dZYn0ddl
mZddl
mZddl
m
Z
ddl
mZddl
mZdd	l
mZdd
l
mZddl
mZddlmZd
d�Zdd�ZGdd�dej�ZGdd�dejej�ZGdd�de�ZGdd�de�ZdS))�BaseSelectorEventLoop�N�)�base_events)�	constants)�events)�futures)�	protocols)�sslproto)�
transports)�trsock)�loggercCs6z|�|�}Wnty"YdS0t|j|@�SdS�NF)�get_key�KeyError�boolr)�selector�fd�event�key�r�8/opt/imh-python/lib/python3.9/asyncio/selector_events.py�_test_selector_event s
rcCs tdurt|tj�rtd��dS)Nz"Socket cannot be of type SSLSocket)�ssl�
isinstanceZ	SSLSocket�	TypeError)�sockrrr�_check_ssl_socket+srcs�eZdZdR�fdd�	ZdSddd�dd�ZdTddddejd�d	d
�ZdUdd�Z�fd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdddejfdd�Zdddejfdd�Zddejfdd�Zd d!�Zd"d#�Zd$d%�Zd&d'�Zd(d)�Zd*d+�Zd,d-�Zd.d/�Zd0d1�Zd2d3�ZdVd4d5�Zd6d7�Zd8d9�Zd:d;�Zd<d=�Z d>d?�Z!d@dA�Z"dBdC�Z#dWdDdE�Z$dFdG�Z%dHdI�Z&dJdK�Z'dLdM�Z(dNdO�Z)dPdQ�Z*�Z+S)XrNcsFt���|durt��}t�d|jj�||_|�	�t
��|_dS)NzUsing selector: %s)
�super�__init__�	selectors�DefaultSelectorr�debug�	__class__�__name__�	_selector�_make_self_pipe�weakref�WeakValueDictionary�_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)r5r+)r	ZSSLProtocolr/Z_app_transport)r)Zrawsockr0�
sslcontextr1r3r4r,r-r5Zssl_protocolrrr�_make_ssl_transportEs��z)BaseSelectorEventLoop._make_ssl_transportcCst||||||�Sr.)�_SelectorDatagramTransport)r)rr0�addressr1r,rrr�_make_datagram_transportRs�z.BaseSelectorEventLoop._make_datagram_transportcsL|��rtd��|��rdS|��t���|jdurH|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)	�socket�
socketpairrArC�setblockingrD�_add_readerrB�_read_from_selfr?rrrr%js
z%BaseSelectorEventLoop._make_self_pipecCsdSr.r�r)�datarrr�_process_self_datarsz(BaseSelectorEventLoop._process_self_datacCsTz"|j�d�}|sWqP|�|�Wqty8YqYqtyLYqPYq0qdS)Ni)rA�recvrL�InterruptedError�BlockingIOErrorrJrrrrIusz%BaseSelectorEventLoop._read_from_selfcCsL|j}|durdSz|�d�Wn&tyF|jrBtjddd�Yn0dS)N�z3Fail to write a null byte into the self-pipe socketT��exc_info)rC�send�OSError�_debugrr!)r)Zcsockrrr�_write_to_self�s�z$BaseSelectorEventLoop._write_to_self�dc
Cs"|�|��|j||||||�dSr.)rHrB�_accept_connection)r)�protocol_factoryrr6r-�backlogr5rrr�_start_serving�s
�z$BaseSelectorEventLoop._start_servingc
Cst|�D]�}z0|��\}}	|jr0t�d||	|�|�d�Wn�tttfyXYdSt	y�}
zl|
j
t
jt
jt
j
t
jfvr�|�d|
t�|�d��|�|���|�tj|j||||||�n�WYd}
~
qd}
~
00d|	i}|�||||||�}|�|�qdS)Nz#%r got a new connection from %r: %rFz&socket.accept() out of system resource)�message�	exceptionrE�peername)�range�acceptrUrr!rGrOrN�ConnectionAbortedErrorrT�errnoZEMFILEZENFILEZENOBUFSZENOMEM�call_exception_handlerr�TransportSocketr@rBZ
call_laterrZACCEPT_RETRY_DELAYr[�_accept_connection2Zcreate_task)
r)rYrr6r-rZr5�_�conn�addr�excr,r`rrrrX�s@����
�z(BaseSelectorEventLoop._accept_connectionc
�s�d}d}zr|�}|��}	|r8|j||||	d|||d�}n|j|||	||d�}z|	IdHWntyv|���Yn0Wntttfy��Yn^ty�}
zF|jr�d|
d�}|dur�||d<|dur�||d<|�|�WYd}
~
n
d}
~
00dS)NT)r1r3r,r-r5)r1r,r-z3Error on transport creation for incoming connection)r\r]r0�	transport)	�
create_futurer7r2�
BaseExceptionr>�
SystemExit�KeyboardInterruptrUrc)r)rYrgr,r6r-r5r0rjr1ri�contextrrrre�s@���z)BaseSelectorEventLoop._accept_connection2c
Cs�|}t|t�sHzt|���}Wn(tttfyFtd|���d�Yn0z|j|}WntyhYn0|��s�t	d|�d|����dS)NzInvalid file object: zFile descriptor z is used by transport )
r�intrB�AttributeErrorr�
ValueErrorr(r�
is_closingr;)r)rrBrjrrr�_ensure_fd_no_transport�s 
��z-BaseSelectorEventLoop._ensure_fd_no_transportc		Gs�|��t�|||d�}z|j�|�}Wn(tyP|j�|tj|df�Yn>0|j|j	}\}}|j�
||tjB||f�|dur�|��|Sr.)�
_check_closedr�Handler$rr�registerr�
EVENT_READrK�modify�cancel�	r)r�callback�args�handler�mask�reader�writerrrrrHs�
�z!BaseSelectorEventLoop._add_readercCs�|��rdSz|j�|�}Wnty0YdS0|j|j}\}}|tjM}|sb|j�|�n|j�	||d|f�|dur�|�
�dSdSdS�NFT)r<r$rrrrKrrx�
unregisterryrz�r)rrrr�r�rrrr@sz$BaseSelectorEventLoop._remove_readerc		Gs�|��t�|||d�}z|j�|�}Wn(tyP|j�|tjd|f�Yn>0|j|j	}\}}|j�
||tjB||f�|dur�|��|Sr.)rurrvr$rrrwr�EVENT_WRITErKryrzr{rrr�_add_writer&s�
�z!BaseSelectorEventLoop._add_writercCs�|��rdSz|j�|�}Wnty0YdS0|j|j}\}}|tjM}|sb|j�|�n|j�	|||df�|dur�|�
�dSdSdSr�)r<r$rrrrKrr�r�ryrzr�rrr�_remove_writer6sz$BaseSelectorEventLoop._remove_writercGs"|�|�|j||g|�R�dSr.)rtrH�r)rr|r}rrr�
add_readerMs
z BaseSelectorEventLoop.add_readercCs|�|�|�|�Sr.)rtr@�r)rrrr�
remove_readerRs
z#BaseSelectorEventLoop.remove_readercGs"|�|�|j||g|�R�dSr.)rtr�r�rrr�
add_writerWs
z BaseSelectorEventLoop.add_writercCs|�|�|�|�Sr.)rtr�r�rrr�
remove_writer\s
z#BaseSelectorEventLoop.remove_writerc	�s�t|�|jr"|��dkr"td��z|�|�WSttfyDYn0|��}|��}|�	|�|�
||j|||�}|�t
j|j||d��|IdHS�Nr�the socket must be non-blocking�r~)rrU�
gettimeoutrrrMrOrNrkrBrtrH�
_sock_recv�add_done_callback�	functools�partial�_sock_read_done)r)r�n�futrr~rrr�	sock_recvas
�zBaseSelectorEventLoop.sock_recvcCs|dus|��s|�|�dSr.)�	cancelledr��r)rr�r~rrrr�wsz%BaseSelectorEventLoop._sock_read_donec
Cs�|��rdSz|�|�}WnZttfy2YdSttfyH�Yn8tyt}z|�|�WYd}~nd}~00|�|�dSr.)	�donerMrOrNrmrnrl�
set_exception�
set_result)r)r�rr�rKrirrrr�{s z BaseSelectorEventLoop._sock_recvc	�s�t|�|jr"|��dkr"td��z|�|�WSttfyDYn0|��}|��}|�	|�|�
||j|||�}|�t
j|j||d��|IdHSr�)rrUr�rr�	recv_intorOrNrkrBrtrH�_sock_recv_intor�r�r�r�)r)r�bufr�rr~rrr�sock_recv_into�s
�z$BaseSelectorEventLoop.sock_recv_intoc
Cs�|��rdSz|�|�}WnZttfy2YdSttfyH�Yn8tyt}z|�|�WYd}~nd}~00|�|�dSr.)	r�r�rOrNrmrnrlr�r�)r)r�rr��nbytesrirrrr��s z%BaseSelectorEventLoop._sock_recv_intoc	�s�t|�|jr"|��dkr"td��z|�|�}WnttfyJd}Yn0|t|�kr\dS|��}|�	�}|�
|�|�||j||t
|�|g�}|�tj|j||d��|IdHSr�)rrUr�rrrSrOrN�lenrkrBrtr��
_sock_sendall�
memoryviewr�r�r��_sock_write_done)r)rrKr�r�rr~rrr�sock_sendall�s&	


��z"BaseSelectorEventLoop.sock_sendallc
Cs�|��rdS|d}z|�||d��}Wn\ttfyBYdSttfyX�Yn0ty�}z|�|�WYd}~dSd}~00||7}|t|�kr�|�	d�n||d<dS)Nr)
r�rSrOrNrmrnrlr�r�r�)r)r�r�view�pos�startr�rirrrr��s 
z#BaseSelectorEventLoop._sock_sendallc�s�t|�|jr"|��dkr"td��ttd�r8|jtjkrf|j||j|j	|d�IdH}|d\}}}}}|�
�}|�|||�|IdHS)Nrr��AF_UNIX)�family�proto�loop)rrUr�rr�hasattrrEr�r�Z_ensure_resolvedr�rk�
_sock_connect)r)rr9Zresolvedrfr�rrr�sock_connect�s�z"BaseSelectorEventLoop.sock_connectc
Cs�|��}z|�|�Wn�ttfyb|�|�|�||j|||�}|�tj	|j
||d��YnNttfyx�Yn8t
y�}z|�|�WYd}~nd}~00|�d�dS)Nr�)rB�connectrOrNrtr��_sock_connect_cbr�r�r�r�rmrnrlr�r�)r)r�rr9rr~rirrrr��s 
�� z#BaseSelectorEventLoop._sock_connectcCs|dus|��s|�|�dSr.)r�r�r�rrrr�
sz&BaseSelectorEventLoop._sock_write_donec
Cs�|��rdSz,|�tjtj�}|dkr6t|d|����WnXttfyNYnNtt	fyd�Yn8t
y�}z|�|�WYd}~nd}~00|�d�dS)NrzConnect call failed )
r��
getsockoptrE�
SOL_SOCKET�SO_ERRORrTrOrNrmrnrlr�r�)r)r�rr9�errrirrrr�s z&BaseSelectorEventLoop._sock_connect_cbc�s@t|�|jr"|��dkr"td��|��}|�||�|IdHS)Nrr�)rrUr�rrrk�_sock_accept)r)rr�rrr�sock_accept$sz!BaseSelectorEventLoop.sock_acceptc
Cs�|��}z|��\}}|�d�Wn�ttfyl|�|�|�||j||�}|�t	j
|j||d��YnRtt
fy��Yn<ty�}z|�|�WYd}~nd}~00|�||f�dS)NFr�)rBr`rGrOrNrtrHr�r�r�r�r�rmrnrlr�r�)r)r�rrrgr9r~rirrrr�3s
� z"BaseSelectorEventLoop._sock_acceptc	�s�|j|j=|��}|��|��IdHzL|j|j|||dd�IdHW|��|rZ|��||j|j<S||j|j<n"|��|r�|��||j|j<0dS)NF)�fallback)	r(�_sock_fd�
is_reading�
pause_reading�_make_empty_waiterZ
sock_sendfile�_sock�_reset_empty_waiter�resume_reading)r)Ztransp�file�offset�countr�rrr�_sendfile_nativeDs*
���z&BaseSelectorEventLoop._sendfile_nativecCs�|D]v\}}|j|j}\}}|tj@rL|durL|jrB|�|�n
|�|�|tj@r|dur|jrp|�|�q|�|�qdSr.)	�fileobjrKrrxZ
_cancelledr@Z
_add_callbackr�r�)r)Z
event_listrrr�r�r�rrr�_process_eventsRs
z%BaseSelectorEventLoop._process_eventscCs|�|���|��dSr.)r@rBr>)r)rrrr�
_stop_serving`sz#BaseSelectorEventLoop._stop_serving)N)N)N)NNN)N)N),r#�
__module__�__qualname__rr2rZSSL_HANDSHAKE_TIMEOUTr7r:r>r=r%rLrIrVr[rXrertrHr@r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r��
__classcell__rrr*rr0sh
����
�
	�
.�
)

rcs�eZdZdZeZdZd�fdd�	Zdd�Zdd�Z	d	d
�Z
dd�Zd
d�Zdd�Z
ejfdd�Zddd�Zdd�Zdd�Zdd�Zdd�Z�ZS) �_SelectorTransportiNcs�t��||�t�|�|jd<z|��|jd<WntyLd|jd<Yn0d|jvr�z|��|jd<Wntj	y�d|jd<Yn0||_
|��|_d|_
|�|�||_|��|_d|_d|_|jdur�|j��||j|j<dS)NrEZsocknamer^Fr)rrrrd�_extra�getsocknamerT�getpeernamerE�errorr�rBr��_protocol_connected�set_protocol�_server�_buffer_factory�_buffer�
_conn_lost�_closingZ_attachr()r)r�rr0r,r-r*rrrqs,





z_SelectorTransport.__init__cCs�|jjg}|jdur |�d�n|jr0|�d�|�d|j���|jdur�|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
, bufsize=�>z<{}>� )r"r#r��appendr�r��_loopr<rr$rrxr��get_write_buffer_size�format�join)r)�infor��state�bufsizerrr�__repr__�s.


�
�z_SelectorTransport.__repr__cCs|�d�dSr.)�_force_closer?rrr�abort�sz_SelectorTransport.abortcCs||_d|_dS�NT)�	_protocolr��r)r0rrrr��sz_SelectorTransport.set_protocolcCs|jSr.)r�r?rrr�get_protocol�sz_SelectorTransport.get_protocolcCs|jSr.)r�r?rrrrs�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,|jdur(|d|��t|d�|j��dS)Nzunclosed transport )�source)r��ResourceWarningr>)r)�_warnrrr�__del__�s
z_SelectorTransport.__del__�Fatal error on transportcCsNt|t�r(|j��r@tjd||dd�n|j�||||jd��|�|�dS)Nz%r: %sTrQ)r\r]rjr0)	rrTr��	get_debugrr!rcr�r�)r)rir\rrr�_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)rirrrr��s
z_SelectorTransport._force_closecCs�zN|jr|j�|�W|j��d|_d|_d|_|j}|dur�|��d|_n:|j��d|_d|_d|_|j}|dur�|��d|_0dSr.)r�r�Zconnection_lostr�r>r�r�Z_detach)r)rir-rrrr��s&
�
z(_SelectorTransport._call_connection_lostcCs
t|j�Sr.)r�r�r?rrrr��sz(_SelectorTransport.get_write_buffer_sizecGs$|jr
dS|jj||g|�R�dSr.)r�r�rHr�rrrrH�sz_SelectorTransport._add_reader)NN)r�)r#r�r��max_size�	bytearrayr�r�rr�r�r�r�rsr>�warnings�warnr�r�r�r�r�rHr�rrr*rr�es 

r�cs�eZdZdZejjZd#�fdd�	Z�fdd�Z	dd�Z
d	d
�Zdd�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	�
|jj|�|j	�
|j
|j|j�|durz|j	�
tj|d�dSr
)�_read_ready_cbrr�_eof�_paused�
_empty_waiterrZ_set_nodelayr�r�r�r��connection_maderHr��_read_readyr�_set_result_unless_cancelled)r)r�rr0r1r,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r!r?rrrr�s
z&_SelectorSocketTransport.pause_readingcCs@|js|jsdSd|_|�|j|j�|j��r<t�d|�dS)NFz%r resumes reading)	r�r�rHr�rr�r�rr!r?rrrr�$s
z'_SelectorSocketTransport.resume_readingcCs|��dSr.)r�r?rrrr,sz$_SelectorSocketTransport._read_readyc
CsV|jr
dSz |j�d�}t|�s(td��WnHttfyB�Yn2tyr}z|�|d�WYd}~dSd}~00z|j	�
|�}Wn^ttfy�YdSttfy��Yn2ty�}z|�|d�WYd}~dSd}~00|�s�|�
�dSz|j�|�WnJttf�y �Yn2t�yP}z|�|d�WYd}~n
d}~00dS)N���z%get_buffer() returned an empty bufferz/Fatal error: protocol.get_buffer() call failed.�$Fatal read error on socket transportz3Fatal error: protocol.buffer_updated() call failed.)r�r�Z
get_bufferr�r;rmrnrlr�r�r�rOrN�_read_ready__on_eofZbuffer_updated)r)r�rir�rrrr/sB��z0_SelectorSocketTransport._read_ready__get_bufferc
Cs�|jr
dSz|j�|j�}Wn^ttfy4YdSttfyJ�Yn2tyz}z|�	|d�WYd}~dSd}~00|s�|�
�dSz|j�|�WnFttfy��Yn0ty�}z|�	|d�WYd}~n
d}~00dS)Nrz2Fatal error: protocol.data_received() call failed.)
r�r�rMr�rOrNrmrnrlr�rr�Z
data_received)r)rKrirrrrTs,�z3_SelectorSocketTransport._read_ready__data_receivedc
Cs�|j��rt�d|�z|j��}WnHttfy<�Yn2tyl}z|�	|d�WYd}~dSd}~00|r�|j�
|j�n|��dS)Nz%r received EOFz1Fatal error: protocol.eof_received() call failed.)
r�r�rr!r�Zeof_receivedrmrnrlr�r@r�r>)r)Z	keep_openrirrrrms
�z,_SelectorSocketTransport._read_ready__on_eofc
Cs0t|tttf�s$tdt|�j����|jr2td��|j	durDtd��|sLdS|j
rz|j
tjkrht
�d�|j
d7_
dS|j�sz|j�|�}Wn\ttfy�Yn^ttfy��YnHty�}z|�|d�WYd}~dSd}~00||d�}|�sdS|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�r;rr�r�!LOG_THRESHOLD_FOR_CONNLOST_WRITESr�warningr�r�rSrOrNrmrnrlr�r�r�r��_write_ready�extend�_maybe_pause_protocol)r)rKr�rirrr�write�s>�

z_SelectorSocketTransport.writec
Cs|jr
dSz|j�|j�}Wn�ttfy2Yn�ttfyH�Yn�ty�}zF|j	�
|j�|j��|�
|d�|jdur�|j�|�WYd}~nvd}~00|r�|jd|�=|��|j�s|j	�
|j�|jdur�|j�d�|jr�|�d�n|j�r|j�tj�dS)Nr)r�r�rSr�rOrNrmrnrlr�r�r�r�r�rr��_maybe_resume_protocolr�r�r�r��shutdownrE�SHUT_WR)r)r�rirrrr�s2

"
z%_SelectorSocketTransport._write_readycCs.|js|jrdSd|_|js*|j�tj�dSr�)r�r�r�r�rrErr?rrr�	write_eof�s
z"_SelectorSocketTransport.write_eofcCsdSr�rr?rrr�
can_write_eof�sz&_SelectorSocketTransport.can_write_eofcs*t��|�|jdur&|j�td��dS)NzConnection is closed by peer)rr�rr��ConnectionErrorr�r*rrr��s

�z._SelectorSocketTransport._call_connection_lostcCs6|jdurtd��|j��|_|js0|j�d�|jS)NzEmpty waiter is already set)rr;r�rkr�r�r?rrrr��s
z+_SelectorSocketTransport._make_empty_waitercCs
d|_dSr.)rr?rrrr��sz,_SelectorSocketTransport._reset_empty_waiter)NNN)r#r�r�Z_start_tls_compatiblerZ
_SendfileModeZ
TRY_NATIVEZ_sendfile_compatiblerr�r�r�r�rrrrrrrrr�r�r�r�rrr*rr/�s(�%'r/csFeZdZejZd�fdd�	Zdd�Zdd�Zd
dd	�Z	d
d�Z
�ZS)r8Ncs^t��||||�||_|j�|jj|�|j�|j|j|j	�|durZ|j�t
j|d�dSr.)rr�_addressr�r�r�rrHr�rrr)r)r�rr0r9r1r,r*rrr�s
�
�z#_SelectorDatagramTransport.__init__cCstdd�|jD��S)Ncss|]\}}t|�VqdSr.)r�)�.0rKrfrrr�	<genexpr>��zC_SelectorDatagramTransport.get_write_buffer_size.<locals>.<genexpr>)�sumr�r?rrrr��sz0_SelectorDatagramTransport.get_write_buffer_sizec
Cs�|jr
dSz|j�|j�\}}Wn�ttfy6Yn�tyd}z|j�|�WYd}~n\d}~0t	t
fyz�Yn>ty�}z|�|d�WYd}~nd}~00|j�
||�dS)Nz&Fatal read error on datagram transport)r�r��recvfromr�rOrNrTr��error_receivedrmrnrlr�Zdatagram_received�r)rKrhrirrrr�s "z&_SelectorDatagramTransport._read_readyc
Cs�t|tttf�s$tdt|�j����|s,dS|jrV|d|jfvrPtd|j����|j}|j	r�|jr�|j	t
jkrxt�
d�|j	d7_	dS|j�sdz,|jdr�|j�|�n|j�||�WdSttfy�|j�|j|j�Yn~t�y}z|j�|�WYd}~dSd}~0ttf�y0�Yn4t�yb}z|�|d�WYd}~dSd}~00|j� t|�|f�|�!�dS)Nr	z!Invalid address: must be None or r
rr^�'Fatal write error on datagram transport)"rrr�r�rr
r#rrrr�rrrrr�r�r�rS�sendtorOrNr�r�r��
_sendto_readyrTr�r rmrnrlr�r�rr!rrrr#sJ�
�

�z!_SelectorDatagramTransport.sendtoc
Cs|jr�|j��\}}z*|jdr.|j�|�n|j�||�Wqttfyh|j�||f�Yq�Yqt	y�}z|j
�|�WYd}~dSd}~0tt
fy��Yqty�}z|�|d�WYd}~dSd}~00q|��|j�s|j�|j�|j�r|�d�dS)Nr^r")r��popleftr�r�rSr#rOrN�
appendleftrTr�r rmrnrlr�rr�r�r�r�r�r!rrrr$2s0
�z(_SelectorDatagramTransport._sendto_ready)NNN)N)r#r�r��collections�dequer�rr�rr#r$r�rrr*rr8�s�

+r8)�__all__r'rbr�rrEr�r&r�ImportError�rrrrrr	r
r�logrrrZ
BaseEventLooprZ_FlowControlMixinZ	Transportr�r/r8rrrr�<module>sD
9�o