<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
U
    if<}                     @   sP  d Z ddlZddlZddlZddlZddlZddlZddlZddlm	Z	 ddlm
Z
 ddlmZ ddlmZ ddlmZ dd	lmZ dd
lmZ ddlmZ ddlmZ dd ZG dd dejejZG dd deejZG dd deejZG dd deZG dd deZG dd deeejZG dd deeejZG dd de	j Z!dS ))BaseProactorEventLoop    N   )base_events)	constants)futures)
exceptions)	protocols)sslproto)
transports)trsock)loggerc                 C   s   t || jd< z| | jd< W n0 tjk
rR   | j rNtj	d|dd Y nX d| jkrz|
 | jd< W n  tjk
r   d | jd< Y nX d S )NsocketZsocknamezgetsockname() failed on %rTexc_infopeername)r   TransportSocket_extraZgetsocknamer   error_loop	get_debugr   warningZgetpeername)	transportsock r   </opt/alt/python38/lib64/python3.8/asyncio/proactor_events.py_set_socket_extra   s    
  
r   c                       s~   e Zd Zd fdd	Zdd Zdd Zdd	 Zd
d Zdd Zdd Z	e
jfddZdddZdd Zdd Zdd Z  ZS )_ProactorBasePipeTransportNc                    s   t  || | | || _| | || _d | _d | _d | _d| _	d| _
d| _d| _| jd k	rl| j  | j| jj|  |d k	r| jtj|d  d S )Nr   F)super__init__
_set_extra_sockset_protocol_server_buffer	_read_fut
_write_fut_pending_write
_conn_lost_closing_eof_writtenZ_attachr   	call_soon	_protocolZconnection_mader   Z_set_result_unless_cancelledselfloopr   protocolwaiterextraserver	__class__r   r   r   2   s(    




 z#_ProactorBasePipeTransport.__init__c                 C   s   | j jg}| jd kr |d n| jr0|d | jd k	rP|d| j   | jd k	rl|d| j | jd k	r|d| j | jr|dt	| j  | j
r|d dd	|S )
Nclosedclosingzfd=zread=zwrite=zwrite_bufsize=zEOF writtenz<{}> )r4   __name__r    appendr(   filenor$   r%   r#   lenr)   formatjoin)r-   infor   r   r   __repr__H   s     






z#_ProactorBasePipeTransport.__repr__c                 C   s   || j d< d S )Npipe)r   r-   r   r   r   r   r   Z   s    z%_ProactorBasePipeTransport._set_extrac                 C   s
   || _ d S Nr+   )r-   r/   r   r   r   r!   ]   s    z'_ProactorBasePipeTransport.set_protocolc                 C   s   | j S rB   rC   r-   r   r   r   get_protocol`   s    z'_ProactorBasePipeTransport.get_protocolc                 C   s   | j S rB   )r(   rD   r   r   r   
is_closingc   s    z%_ProactorBasePipeTransport.is_closingc                 C   s\   | j r
d S d| _ |  jd7  _| js>| jd kr>| j| jd  | jd k	rX| j  d | _d S )NTr   )	r(   r'   r#   r%   r   r*   _call_connection_lostr$   cancelrD   r   r   r   closef   s    

z _ProactorBasePipeTransport.closec                 C   s*   | j d k	r&|d| t| d |   d S )Nzunclosed transport )source)r    ResourceWarningrI   )r-   Z_warnr   r   r   __del__q   s    
z"_ProactorBasePipeTransport.__del__Fatal error on pipe transportc              	   C   sV   zDt|tr*| j rBtjd| |dd n| j||| | jd W 5 |  | X d S )Nz%r: %sTr   )message	exceptionr   r/   )	_force_close
isinstanceOSErrorr   r   r   debugcall_exception_handlerr+   )r-   excrN   r   r   r   _fatal_errorv   s    

z'_ProactorBasePipeTransport._fatal_errorc                 C   s   | j d k	r6| j  s6|d kr*| j d  n| j | | jr@d S d| _|  jd7  _| jrj| j  d | _| jr| j  d | _d| _	d | _
| j| j| d S )NTr   r   )_empty_waiterdone
set_resultZset_exceptionr(   r'   r%   rH   r$   r&   r#   r   r*   rG   )r-   rU   r   r   r   rP      s"    

z'_ProactorBasePipeTransport._force_closec              	   C   s^   z| j	| W 5 t | jdr,| jtj | j  d | _| j}|d k	rX|  d | _X d S )Nshutdown)
hasattrr    rZ   r   Z	SHUT_RDWRrI   r"   Z_detachr+   Zconnection_lost)r-   rU   r2   r   r   r   rG      s    
z0_ProactorBasePipeTransport._call_connection_lostc                 C   s"   | j }| jd k	r|t| j7 }|S rB   )r&   r#   r;   )r-   sizer   r   r   get_write_buffer_size   s    
z0_ProactorBasePipeTransport.get_write_buffer_size)NNN)rM   )r8   
__module____qualname__r   r?   r   r!   rE   rF   rI   warningswarnrL   rV   rP   rG   r]   __classcell__r   r   r3   r   r   .   s       
r   c                       sP   e Zd Zd fdd	Zdd Zdd Zdd	 Zd
d Zdd ZdddZ	  Z
S )_ProactorReadPipeTransportNc                    s:   d | _ d| _t |||||| | j| j d| _d S )NTF)_pending_data_pausedr   r   r   r*   _loop_readingr,   r3   r   r   r      s
    z#_ProactorReadPipeTransport.__init__c                 C   s   | j  o| j S rB   )re   r(   rD   r   r   r   
is_reading   s    z%_ProactorReadPipeTransport.is_readingc                 C   s0   | j s| jrd S d| _| j r,td|  d S )NTz%r pauses reading)r(   re   r   r   r   rS   rD   r   r   r   pause_reading   s
    
z(_ProactorReadPipeTransport.pause_readingc                 C   sn   | j s| jsd S d| _| jd kr0| j| jd  | j}d | _|d k	rT| j| j| | j rjt	
d|  d S )NFz%r resumes reading)r(   re   r$   r   r*   rf   rd   _data_receivedr   r   rS   r-   datar   r   r   resume_reading   s    

z)_ProactorReadPipeTransport.resume_readingc              
   C   s   | j  rtd|  z| j }W nL ttfk
r>    Y n4 tk
rp } z| 	|d W Y d S d }~X Y nX |s~| 
  d S )Nz%r received EOFz1Fatal error: protocol.eof_received() call failed.)r   r   r   rS   r+   Zeof_received
SystemExitKeyboardInterruptBaseExceptionrV   rI   )r-   Z	keep_openrU   r   r   r   _eof_received   s    
 z(_ProactorReadPipeTransport._eof_receivedc              
   C   s   | j r|| _d S |s |   d S t| jtjrzt| j| W q tt	fk
rZ    Y q t
k
r } z| |d W Y d S d }~X Y qX n| j| d S )Nz3Fatal error: protocol.buffer_updated() call failed.)re   rd   rp   rQ   r+   r   ZBufferedProtocolZ_feed_data_to_buffered_protorm   rn   ro   rV   Zdata_received)r-   rk   rU   r   r   r   ri      s"    z)_ProactorReadPipeTransport._data_receivedc              
   C   st  d }zRzp|d k	r2d | _| r*| }n|  | jrHd }W W d S |dkr\W W d S | jsv| jj	| j
d| _W n tk
r } z0| js| |d n| j rtjddd W 5 d }~X Y n tk
r } z| | W 5 d }~X Y nf tk
r } z| |d W 5 d }~X Y n8 tjk
r>   | js: Y nX | jsV| j| j W 5 |d k	rn|  | X d S )N    i   z"Fatal read error on pipe transportz*Read error on pipe transport while closingTr   )ri   r$   rX   resultrH   r(   re   r   	_proactorrecvr    ConnectionAbortedErrorrV   r   r   rS   ConnectionResetErrorrP   rR   r   CancelledErroradd_done_callbackrf   )r-   futrk   rU   r   r   r   rf     s@    


z(_ProactorReadPipeTransport._loop_reading)NNN)N)r8   r^   r_   r   rg   rh   rl   rp   ri   rf   rb   r   r   r3   r   rc      s       	rc   c                       sZ   e Zd ZdZ fddZdd ZdddZd	d
 Zdd Zdd Z	dd Z
dd Z  ZS )_ProactorBaseWritePipeTransportTc                    s   t  j|| d | _d S rB   )r   r   rW   r-   argskwr3   r   r   r   G  s    z(_ProactorBaseWritePipeTransport.__init__c                 C   s   t |tttfs$tdt|j | jr2td| j	d k	rDtd|sLd S | j
rz| j
tjkrhtd |  j
d7  _
d S | jd kr| jt|d n.| jst|| _|   n| j| |   d S )Nz/data argument must be a bytes-like object, not zwrite_eof() already calledz(unable to write; sendfile is in progresszsocket.send() raised exception.r   )rk   )rQ   bytes	bytearray
memoryview	TypeErrortyper8   r)   RuntimeErrorrW   r'   r   !LOG_THRESHOLD_FOR_CONNLOST_WRITESr   r   r%   _loop_writingr#   _maybe_pause_protocolextendrj   r   r   r   writeK  s,    




z%_ProactorBaseWritePipeTransport.writeNc              
   C   sV  z|d k	r | j d kr | jr W d S d | _ d| _|r8|  |d krL| j}d | _|s| jrf| j| jd  | jrz| j	
tj |   nN| jj| j	|| _ | j  st|| _| j | j |   n| j | j | jd k	r| j d kr| jd  W n\ tk
r" } z| | W 5 d }~X Y n0 tk
rP } z| |d W 5 d }~X Y nX d S )Nr   z#Fatal write error on pipe transport)r%   r(   r&   rr   r#   r   r*   rG   r)   r    rZ   r   SHUT_WR_maybe_resume_protocolrs   sendrX   r;   rx   r   r   rW   rY   rv   rP   rR   rV   )r-   frk   rU   r   r   r   r   q  s8    



z-_ProactorBaseWritePipeTransport._loop_writingc                 C   s   dS NTr   rD   r   r   r   can_write_eof  s    z-_ProactorBaseWritePipeTransport.can_write_eofc                 C   s   |    d S rB   )rI   rD   r   r   r   	write_eof  s    z)_ProactorBaseWritePipeTransport.write_eofc                 C   s   |  d  d S rB   rP   rD   r   r   r   abort  s    z%_ProactorBaseWritePipeTransport.abortc                 C   s:   | j d k	rtd| j | _ | jd kr4| j d  | j S )NzEmpty waiter is already set)rW   r   r   Zcreate_futurer%   rY   rD   r   r   r   _make_empty_waiter  s    

z2_ProactorBaseWritePipeTransport._make_empty_waiterc                 C   s
   d | _ d S rB   )rW   rD   r   r   r   _reset_empty_waiter  s    z3_ProactorBaseWritePipeTransport._reset_empty_waiter)NN)r8   r^   r_   Z_start_tls_compatibler   r   r   r   r   r   r   r   rb   r   r   r3   r   rz   A  s   &
)rz   c                       s$   e Zd Z fddZdd Z  ZS )_ProactorWritePipeTransportc                    s4   t  j|| | jj| jd| _| j| j d S )N   )	r   r   r   rs   rt   r    r$   rx   _pipe_closedr{   r3   r   r   r     s    z$_ProactorWritePipeTransport.__init__c                 C   s@   |  rd S | jrd S d | _| jd k	r4| t  n|   d S rB   )Z	cancelledr(   r$   r%   rP   BrokenPipeErrorrI   )r-   ry   r   r   r   r     s    
z(_ProactorWritePipeTransport._pipe_closed)r8   r^   r_   r   r   rb   r   r   r3   r   r     s   r   c                       sX   e Zd ZdZd fdd	Zdd Zdd Zd	d
 ZdddZdddZ	dddZ
  ZS )_ProactorDatagramTransporti   Nc                    s>   || _ d | _t j|||||d t | _| j| j	 d S )N)r0   r1   )
_addressrW   r   r   collectionsdequer#   r   r*   rf   )r-   r.   r   r/   addressr0   r1   r3   r   r   r     s
    
z#_ProactorDatagramTransport.__init__c                 C   s   t | | d S rB   r   rA   r   r   r   r     s    z%_ProactorDatagramTransport._set_extrac                 C   s   t dd | jD S )Nc                 s   s   | ]\}}t |V  qd S rB   )r;   ).0rk   _r   r   r   	<genexpr>  s     zC_ProactorDatagramTransport.get_write_buffer_size.<locals>.<genexpr>)sumr#   rD   r   r   r   r]     s    z0_ProactorDatagramTransport.get_write_buffer_sizec                 C   s   |  d  d S rB   r   rD   r   r   r   r     s    z _ProactorDatagramTransport.abortc                 C   s   t |tttfstdt||s&d S | jd k	rN|d | jfkrNtd| j | jr| jr| jt	j
krptd |  jd7  _d S | jt||f | jd kr|   |   d S )Nz,data argument must be bytes-like object (%r)z!Invalid address: must be None or z!socket.sendto() raised exception.r   )rQ   r~   r   r   r   r   r   
ValueErrorr'   r   r   r   r   r#   r9   r%   r   r   )r-   rk   addrr   r   r   sendto  s&    


z!_ProactorDatagramTransport.sendtoc              
   C   s  z| j rW d S d | _|r |  | jr2| j rN| jrN| jrH| j| jd  W d S | j	 \}}| jd k	r|| jj
| j|| _n| jj
j| j||d| _W nZ tk
r } z| j| W 5 d }~X Y nD tk
r } z| |d W 5 d }~X Y nX | j| j |   d S )N)r   z'Fatal write error on datagram transport)r'   r%   rr   r#   r   r(   r   r*   rG   popleftrs   r   r    r   rR   r+   error_received	ExceptionrV   rx   r   r   )r-   ry   rk   r   rU   r   r   r   r     s2    
z(_ProactorDatagramTransport._loop_writingc              
   C   s4  d }zz| jrW W d S d | _|d k	rf| }| jrFd }W W d S | jd k	r^|| j }}n|\}}| jrvW W d S | jd k	r| jj	| j
| j| _n| jj| j
| j| _W nJ tk
r } z| j | W 5 d }~X Y n8 tjk
r   | js Y nX | jd k	r| j| j W 5 |r.| j || X d S rB   )r+   Zdatagram_receivedr'   r$   rr   r(   r   r   rs   rt   r    max_sizeZrecvfromrR   r   r   rw   rx   rf   )r-   ry   rk   r   resrU   r   r   r   rf     s>    




z(_ProactorDatagramTransport._loop_reading)NNN)N)N)N)r8   r^   r_   r   r   r   r]   r   r   r   rf   rb   r   r   r3   r   r     s       

!r   c                   @   s   e Zd Zdd Zdd ZdS )_ProactorDuplexPipeTransportc                 C   s   dS )NFr   rD   r   r   r   r   J  s    z*_ProactorDuplexPipeTransport.can_write_eofc                 C   s   t d S rB   )NotImplementedErrorrD   r   r   r   r   M  s    z&_ProactorDuplexPipeTransport.write_eofN)r8   r^   r_   r   r   r   r   r   r   r   E  s   r   c                       s>   e Zd ZejjZd
 fdd	Zdd Zdd Z	dd	 Z
  ZS )_ProactorSocketTransportNc                    s$   t  |||||| t| d S rB   )r   r   r   Z_set_nodelayr,   r3   r   r   r   X  s    z!_ProactorSocketTransport.__init__c                 C   s   t | | d S rB   r   rA   r   r   r   r   ]  s    z#_ProactorSocketTransport._set_extrac                 C   s   dS r   r   rD   r   r   r   r   `  s    z&_ProactorSocketTransport.can_write_eofc                 C   s2   | j s| jrd S d| _| jd kr.| jtj d S r   )r(   r)   r%   r    rZ   r   r   rD   r   r   r   r   c  s
    
z"_ProactorSocketTransport.write_eof)NNN)r8   r^   r_   r   Z_SendfileModeZ
TRY_NATIVEZ_sendfile_compatibler   r   r   r   rb   r   r   r3   r   r   Q  s       r   c                       s   e Zd Z fddZd3ddZd4dddddddd	Zd5d
dZd6ddZd7ddZd8ddZ	 fddZ
dd Zdd Zdd Zdd Zdd Zdd Zd d! Zd"d# Zd$d% Zd9d&d'Zd(d) Zd:d+d,Zd-d. Zd/d0 Zd1d2 Z  ZS );r   c                    sh   t    td|jj || _|| _d | _i | _	|
|  |   t t krdt| j  d S )NzUsing proactor: %s)r   r   r   rS   r4   r8   rs   	_selector_self_reading_future_accept_futuresZset_loop_make_self_pipe	threadingcurrent_threadmain_threadsignalset_wakeup_fd_csockr:   )r-   Zproactorr3   r   r   r   m  s    

zBaseProactorEventLoop.__init__Nc                 C   s   t | |||||S rB   )r   )r-   r   r/   r0   r1   r2   r   r   r   _make_socket_transportz  s    
 z,BaseProactorEventLoop._make_socket_transportF)server_sideserver_hostnamer1   r2   ssl_handshake_timeoutc             	   C   s0   t j| ||||||	d}
t| ||
||d |
jS )N)r   r1   r2   )r	   ZSSLProtocolr   Z_app_transport)r-   Zrawsockr/   
sslcontextr0   r   r   r1   r2   r   Zssl_protocolr   r   r   _make_ssl_transport  s         z)BaseProactorEventLoop._make_ssl_transportc                 C   s   t | |||||S rB   )r   )r-   r   r/   r   r0   r1   r   r   r   _make_datagram_transport  s    
 z.BaseProactorEventLoop._make_datagram_transportc                 C   s   t | ||||S rB   )r   r-   r   r/   r0   r1   r   r   r   _make_duplex_pipe_transport  s       z1BaseProactorEventLoop._make_duplex_pipe_transportc                 C   s   t | ||||S rB   )rc   r   r   r   r   _make_read_pipe_transport  s    z/BaseProactorEventLoop._make_read_pipe_transportc                 C   s   t | ||||S rB   )r   r   r   r   r   _make_write_pipe_transport  s       z0BaseProactorEventLoop._make_write_pipe_transportc                    sj   |   rtd|  rd S t t kr6td |   | 	  | j
  d | _
d | _t   d S )Nz!Cannot close a running event loop)Z
is_runningr   	is_closedr   r   r   r   r   _stop_accept_futures_close_self_pipers   rI   r   r   rD   r3   r   r   rI     s    

zBaseProactorEventLoop.closec                    s   | j ||I d H S rB   )rs   rt   )r-   r   nr   r   r   	sock_recv  s    zBaseProactorEventLoop.sock_recvc                    s   | j ||I d H S rB   )rs   Z	recv_into)r-   r   Zbufr   r   r   sock_recv_into  s    z$BaseProactorEventLoop.sock_recv_intoc                    s   | j ||I d H S rB   )rs   r   )r-   r   rk   r   r   r   sock_sendall  s    z"BaseProactorEventLoop.sock_sendallc                    s   | j ||I d H S rB   )rs   Zconnect)r-   r   r   r   r   r   sock_connect  s    z"BaseProactorEventLoop.sock_connectc                    s   | j |I d H S rB   )rs   acceptrA   r   r   r   sock_accept  s    z!BaseProactorEventLoop.sock_acceptc              
      s(  z|  }W n2 ttjfk
r> } ztdW 5 d }~X Y nX zt|j}W n, t	k
r| } ztdW 5 d }~X Y nX |r|n|}|sdS t
|d}|rt
|| |n|}	t
||}d}
zLt
|	| |}|dkr|
W 0S | j||||I d H  ||7 }|
|7 }
qW 5 |
dkr"|| X d S )Nznot a regular filer   l    )r:   AttributeErrorioUnsupportedOperationr   ZSendfileNotAvailableErrorosfstatst_sizerR   minseekrs   sendfile)r-   r   fileoffsetcountr:   errZfsizeZ	blocksizeZend_posZ
total_sentr   r   r   _sock_sendfile_native  s0    


z+BaseProactorEventLoop._sock_sendfile_nativec                    sZ   |  }|  | I d H  z | j|j|||ddI d H W S |  |rT|  X d S )NF)Zfallback)rg   rh   r   r   rl   Zsock_sendfiler    )r-   Ztranspr   r   r   rl   r   r   r   _sendfile_native  s    z&BaseProactorEventLoop._sendfile_nativec                 C   sL   | j d k	r| j   d | _ | j  d | _| j  d | _|  jd8  _d S )Nr   )r   rH   _ssockrI   r   _internal_fdsrD   r   r   r   r     s    



z&BaseProactorEventLoop._close_self_pipec                 C   s:   t  \| _| _| jd | jd |  jd7  _d S )NFr   )r   Z
socketpairr   r   Zsetblockingr   rD   r   r   r   r     s    z%BaseProactorEventLoop._make_self_pipec              
   C   s   z4|d k	r|   | j|k	r"W d S | j| jd}W nb tjk
rL   Y d S  ttfk
rd    Y nF t	k
r } z| 
d|| d W 5 d }~X Y nX || _|| j d S )Ni   z.Error on reading from the event loop self pipe)rN   rO   r.   )rr   r   rs   rt   r   r   rw   rm   rn   ro   rT   rx   _loop_self_reading)r-   r   rU   r   r   r   r     s$    
z(BaseProactorEventLoop._loop_self_readingc                 C   sN   | j }|d krd S z|d W n( tk
rH   | jrDtjddd Y nX d S )N    z3Fail to write a null byte into the self-pipe socketTr   )r   r   rR   _debugr   rS   )r-   Zcsockr   r   r   _write_to_self  s    z$BaseProactorEventLoop._write_to_selfd   c                    s(   d fdd	    d S )Nc              
      s,  z| d k	rn|   \}}jr,td||  }d k	rXj||dd|id nj||d|id  r|W d S j} W n t	k
r } zH
 dkrʈd|td   njrtjd	dd
 W 5 d }~X Y n8 tjk
r     Y nX | j
 < |   d S )Nz#%r got a new connection from %r: %rTr   )r   r1   r2   r   r   r   zAccept failed on a socket)rN   rO   r   zAccept failed on socket %rr   )rr   r   r   rS   r   r   r   rs   r   rR   r:   rT   r   r   rI   r   rw   r   rx   )r   Zconnr   r/   rU   r.   protocol_factoryr-   r2   r   r   r   r   r   r.   /  s\            
 z2BaseProactorEventLoop._start_serving.<locals>.loop)N)r*   )r-   r   r   r   r2   Zbacklogr   r   r   r   _start_serving+  s    %z$BaseProactorEventLoop._start_servingc                 C   s   d S rB   r   )r-   Z
event_listr   r   r   _process_eventsV  s    z%BaseProactorEventLoop._process_eventsc                 C   s&   | j  D ]}|  q
| j   d S rB   )r   valuesrH   clear)r-   futurer   r   r   r   Z  s    
z*BaseProactorEventLoop._stop_accept_futuresc                 C   s6   | j | d }|r|  | j| |  d S rB   )r   popr:   rH   rs   _stop_servingrI   )r-   r   r   r   r   r   r   _  s
    z#BaseProactorEventLoop._stop_serving)NNN)N)NNN)NN)NN)NN)N)NNr   N)r8   r^   r_   r   r   r   r   r   r   r   rI   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rb   r   r   r3   r   r   k  s\       
        
  
  
  


      
+r   )"__all__r   r   r   r`   r   r   r    r   r   r   r   r   r	   r
   r   logr   r   Z_FlowControlMixinZBaseTransportr   ZReadTransportrc   ZWriteTransportrz   r   r   Z	Transportr   r   ZBaseEventLoopr   r   r   r   r   <module>   sP     n 