<!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>
a
    XC?h h  ã                   @   s&  d Z ddlZddlZddlZddlZeedƒr6e d7 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Zddedœdd„Zd dedœdd„Zeedƒràd!dedœdd„Zd"dedœdd„ZG dd„ dejƒZG dd„ deejƒZG dd„ dƒZG dd„ dƒZdS )#)ÚStreamReaderÚStreamWriterÚStreamReaderProtocolÚopen_connectionÚstart_serveré    NZAF_UNIX)Úopen_unix_connectionÚstart_unix_serveré   )Ú
coroutines)Úevents)Ú
exceptions)Úformat_helpers)Ú	protocols)Úlogger)Úsleepi   )ÚloopÚlimitc          	      ‹   sx   |d u rt  ¡ }ntjdtdd t||d}t||d‰ |j‡ fdd„| |fi |¤ŽI d H \}}t|ˆ ||ƒ}||fS )Nú[The loop argument is deprecated since Python 3.8, and scheduled for removal in Python 3.10.é   ©Ú
stacklevel©r   r   ©r   c                      s   ˆ S ©N© r   ©Úprotocolr   ú4/opt/alt/python39/lib64/python3.9/asyncio/streams.pyÚ<lambda>5   ó    z!open_connection.<locals>.<lambda>)	r   Úget_event_loopÚwarningsÚwarnÚDeprecationWarningr   r   Zcreate_connectionr   )	ÚhostÚportr   r   ÚkwdsÚreaderÚ	transportÚ_Úwriterr   r   r   r      s    
þÿÿr   c                ‹   sN   ˆd u rt  ¡ ‰ntjdtdd ‡ ‡‡fdd„}ˆj|||fi |¤ŽI d H S )Nr   r   r   c                     s   t ˆˆd} t| ˆ ˆd}|S ©Nr   r   ©r   r   ©r'   r   ©Úclient_connected_cbr   r   r   r   ÚfactoryX   s
    ÿzstart_server.<locals>.factory)r   r    r!   r"   r#   Zcreate_server)r/   r$   r%   r   r   r&   r0   r   r.   r   r   :   s    
þr   c                ‹   sv   |d u rt  ¡ }ntjdtdd t||d}t||d‰ |j‡ fdd„| fi |¤ŽI d H \}}t|ˆ ||ƒ}||fS )Nr   r   r   r   r   c                      s   ˆ S r   r   r   r   r   r   r   p   r   z&open_unix_connection.<locals>.<lambda>)	r   r    r!   r"   r#   r   r   Zcreate_unix_connectionr   )Úpathr   r   r&   r'   r(   r)   r*   r   r   r   r   d   s    
þÿÿr   c                ‹   sL   ˆd u rt  ¡ ‰ntjdtdd ‡ ‡‡fdd„}ˆj||fi |¤ŽI d H S )Nr   r   r   c                     s   t ˆˆd} t| ˆ ˆd}|S r+   r,   r-   r.   r   r   r0   ~   s
    ÿz"start_unix_server.<locals>.factory)r   r    r!   r"   r#   Zcreate_unix_server)r/   r1   r   r   r&   r0   r   r.   r   r   t   s    
þr   c                   @   s>   e Zd Zddd„Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ ZdS )ÚFlowControlMixinNc                 C   s0   |d u rt  ¡ | _n|| _d| _d | _d| _d S ©NF)r   r    Ú_loopÚ_pausedÚ_drain_waiterÚ_connection_lost)Úselfr   r   r   r   Ú__init__‘   s    zFlowControlMixin.__init__c                 C   s    d| _ | j ¡ rt d| ¡ d S )NTz%r pauses writing)r5   r4   Ú	get_debugr   Údebug©r8   r   r   r   Úpause_writingš   s    
zFlowControlMixin.pause_writingc                 C   sF   d| _ | j ¡ rt d| ¡ | j}|d urBd | _| ¡ sB| d ¡ d S )NFz%r resumes writing)r5   r4   r:   r   r;   r6   ÚdoneÚ
set_result©r8   Úwaiterr   r   r   Úresume_writing    s    
zFlowControlMixin.resume_writingc                 C   sV   d| _ | jsd S | j}|d u r"d S d | _| ¡ r4d S |d u rH| d ¡ n
| |¡ d S ©NT)r7   r5   r6   r>   r?   Úset_exception©r8   ÚexcrA   r   r   r   Úconnection_lost¬   s    z FlowControlMixin.connection_lostc                 Ã   s<   | j rtdƒ‚| jsd S | j}| j ¡ }|| _|I d H  d S )NzConnection lost)r7   ÚConnectionResetErrorr5   r6   r4   Úcreate_futurer@   r   r   r   Ú_drain_helper¼   s    
zFlowControlMixin._drain_helperc                 C   s   t ‚d S r   )ÚNotImplementedError©r8   Ústreamr   r   r   Ú_get_close_waiterÇ   s    z"FlowControlMixin._get_close_waiter)N)	Ú__name__Ú
__module__Ú__qualname__r9   r=   rB   rG   rJ   rN   r   r   r   r   r2   ‡   s   

	r2   c                       sb   e Zd ZdZd‡ fdd„	Zedd„ ƒZdd„ Z‡ fdd	„Zd
d„ Z	dd„ Z
dd„ Zdd„ Z‡  ZS )r   Nc                    sn   t ƒ j|d |d ur,t |¡| _|j| _nd | _|d ur@|| _d| _d | _d | _	|| _
d| _| j ¡ | _d S )Nr   F)Úsuperr9   ÚweakrefÚrefÚ_stream_reader_wrÚ_source_tracebackÚ_strong_readerÚ_reject_connectionÚ_stream_writerÚ
_transportÚ_client_connected_cbÚ	_over_sslr4   rI   Ú_closed)r8   Zstream_readerr/   r   ©Ú	__class__r   r   r9   Ö   s    
zStreamReaderProtocol.__init__c                 C   s   | j d u rd S |   ¡ S r   )rU   r<   r   r   r   Ú_stream_readeré   s    
z#StreamReaderProtocol._stream_readerc                 C   s®   | j r6ddi}| jr| j|d< | j |¡ | ¡  d S || _| j}|d urT| |¡ | d¡d u| _	| j
d urªt|| || jƒ| _|  
|| j¡}t |¡r¤| j |¡ d | _d S )NÚmessagezpAn open stream was garbage collected prior to establishing network connection; call "stream.close()" explicitly.Zsource_tracebackZ
sslcontext)rX   rV   r4   Zcall_exception_handlerÚabortrZ   r`   Úset_transportÚget_extra_infor\   r[   r   rY   r
   ZiscoroutineZcreate_taskrW   )r8   r(   Úcontextr'   Úresr   r   r   Úconnection_madeï   s0    ÿ


þÿ
z$StreamReaderProtocol.connection_madec                    sx   | j }|d ur*|d u r | ¡  n
| |¡ | j ¡ sV|d u rJ| j d ¡ n| j |¡ tƒ  |¡ d | _d | _	d | _
d S r   )r`   Úfeed_eofrD   r]   r>   r?   rR   rG   rU   rY   rZ   )r8   rF   r'   r^   r   r   rG   
  s    


z$StreamReaderProtocol.connection_lostc                 C   s   | j }|d ur| |¡ d S r   )r`   Ú	feed_data)r8   Údatar'   r   r   r   Údata_received  s    z"StreamReaderProtocol.data_receivedc                 C   s$   | j }|d ur| ¡  | jr dS dS )NFT)r`   rh   r\   )r8   r'   r   r   r   Úeof_received   s    z!StreamReaderProtocol.eof_receivedc                 C   s   | j S r   )r]   rL   r   r   r   rN   +  s    z&StreamReaderProtocol._get_close_waiterc                 C   s"   | j }| ¡ r| ¡ s| ¡  d S r   )r]   r>   Ú	cancelledÚ	exception)r8   Úclosedr   r   r   Ú__del__.  s    zStreamReaderProtocol.__del__)NN)rO   rP   rQ   rV   r9   Úpropertyr`   rg   rG   rk   rl   rN   rp   Ú__classcell__r   r   r^   r   r   Ë   s   	
r   c                   @   sr   e Zd Zdd„ Zdd„ Ze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d„Zdd„ ZdS )r   c                 C   s4   || _ || _|| _|| _| j ¡ | _| j d ¡ d S r   )rZ   Ú	_protocolÚ_readerr4   rI   Z_complete_futr?   )r8   r(   r   r'   r   r   r   r   r9   @  s    zStreamWriter.__init__c                 C   s@   | j jd| j›g}| jd ur0| d| j›¡ d d |¡¡S )Nú
transport=zreader=ú<{}>ú )r_   rO   rZ   rt   ÚappendÚformatÚjoin©r8   Úinfor   r   r   Ú__repr__J  s    
zStreamWriter.__repr__c                 C   s   | j S r   ©rZ   r<   r   r   r   r(   P  s    zStreamWriter.transportc                 C   s   | j  |¡ d S r   )rZ   Úwrite©r8   rj   r   r   r   r   T  s    zStreamWriter.writec                 C   s   | j  |¡ d S r   )rZ   Ú
writelinesr€   r   r   r   r   W  s    zStreamWriter.writelinesc                 C   s
   | j  ¡ S r   )rZ   Ú	write_eofr<   r   r   r   r‚   Z  s    zStreamWriter.write_eofc                 C   s
   | j  ¡ S r   )rZ   Úcan_write_eofr<   r   r   r   rƒ   ]  s    zStreamWriter.can_write_eofc                 C   s
   | j  ¡ S r   )rZ   Úcloser<   r   r   r   r„   `  s    zStreamWriter.closec                 C   s
   | j  ¡ S r   )rZ   Ú
is_closingr<   r   r   r   r…   c  s    zStreamWriter.is_closingc                 Ã   s   | j  | ¡I d H  d S r   )rs   rN   r<   r   r   r   Úwait_closedf  s    zStreamWriter.wait_closedNc                 C   s   | j  ||¡S r   )rZ   rd   )r8   ÚnameÚdefaultr   r   r   rd   i  s    zStreamWriter.get_extra_infoc                 Ã   sL   | j d ur | j  ¡ }|d ur |‚| j ¡ r8tdƒI d H  | j ¡ I d H  d S )Nr   )rt   rn   rZ   r…   r   rs   rJ   )r8   rF   r   r   r   Údrainl  s    



zStreamWriter.drain)N)rO   rP   rQ   r9   r}   rq   r(   r   r   r‚   rƒ   r„   r…   r†   rd   r‰   r   r   r   r   r   6  s   



r   c                   @   s¢   e Zd ZdZed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dd„ Zdd„ Zd&dd„Zd'dd„Zd d!„ Zd"d#„ Zd$d%„ ZdS )(r   Nc                 C   sv   |dkrt dƒ‚|| _|d u r*t ¡ | _n|| _tƒ | _d| _d | _d | _	d | _
d| _| j ¡ rrt t d¡¡| _d S )Nr   zLimit cannot be <= 0Fr	   )Ú
ValueErrorÚ_limitr   r    r4   Ú	bytearrayÚ_bufferÚ_eofÚ_waiterÚ
_exceptionrZ   r5   r:   r   Úextract_stackÚsysÚ	_getframerV   )r8   r   r   r   r   r   r9   Š  s     
ÿzStreamReader.__init__c                 C   s¶   dg}| j r"| t| j ƒ› d¡ | jr2| d¡ | jtkrN| d| j› ¡ | jrf| d| j›¡ | jr~| d| j›¡ | jr–| d| j›¡ | j	r¦| d¡ d	 
d
 |¡¡S )Nr   z bytesÚeofzlimit=zwaiter=z
exception=ru   Zpausedrv   rw   )r   rx   ÚlenrŽ   r‹   Ú_DEFAULT_LIMITr   r   rZ   r5   ry   rz   r{   r   r   r   r}      s     


zStreamReader.__repr__c                 C   s   | j S r   )r   r<   r   r   r   rn   ²  s    zStreamReader.exceptionc                 C   s0   || _ | j}|d ur,d | _| ¡ s,| |¡ d S r   )r   r   rm   rD   rE   r   r   r   rD   µ  s    zStreamReader.set_exceptionc                 C   s*   | j }|d ur&d | _ | ¡ s&| d ¡ d S r   )r   rm   r?   r@   r   r   r   Ú_wakeup_waiter¾  s
    zStreamReader._wakeup_waiterc                 C   s
   || _ d S r   r~   )r8   r(   r   r   r   rc   Æ  s    zStreamReader.set_transportc                 C   s*   | j r&t| jƒ| jkr&d| _ | j ¡  d S r3   )r5   r•   r   r‹   rZ   Úresume_readingr<   r   r   r   Ú_maybe_resume_transportÊ  s    z$StreamReader._maybe_resume_transportc                 C   s   d| _ |  ¡  d S rC   )rŽ   r—   r<   r   r   r   rh   Ï  s    zStreamReader.feed_eofc                 C   s   | j o| j S r   )rŽ   r   r<   r   r   r   Úat_eofÓ  s    zStreamReader.at_eofc                 C   sr   |sd S | j  |¡ |  ¡  | jd urn| jsnt| j ƒd| j krnz| j ¡  W n tyf   d | _Y n0 d| _d S )Nr   T)	r   Úextendr—   rZ   r5   r•   r‹   Zpause_readingrK   r€   r   r   r   ri   ×  s    
ÿþzStreamReader.feed_datac                 Ã   s^   | j d urt|› dƒ‚| jr.d| _| j ¡  | j ¡ | _ z| j I d H  W d | _ nd | _ 0 d S )NzF() called while another coroutine is already waiting for incoming dataF)r   ÚRuntimeErrorr5   rZ   r˜   r4   rI   )r8   Z	func_namer   r   r   Ú_wait_for_dataí  s    	
ÿ
zStreamReader._wait_for_datac              
   Ã   sº   d}t |ƒ}z|  |¡I d H }W n” tjyL } z|jW  Y d }~S d }~0  tjy´ } zP| j ||j¡r€| jd |j| …= n
| j 	¡  |  
¡  t|jd ƒ‚W Y d }~n
d }~0 0 |S )Nó   
r   )r•   Ú	readuntilr   ÚIncompleteReadErrorÚpartialÚLimitOverrunErrorr   Ú
startswithÚconsumedÚclearr™   rŠ   Úargs)r8   ÚsepÚseplenÚlineÚer   r   r   Úreadline	  s    
$zStreamReader.readlinerž   c                 Ã   sü   t |ƒ}|dkrtdƒ‚| jd ur(| j‚d}t | jƒ}|| |kr|| j ||¡}|dkrZq´|d | }|| jkr|t d|¡‚| jr¢t	| jƒ}| j 
¡  t |d ¡‚|  d¡I d H  q,|| jkrÊt d|¡‚| jd || … }| jd || …= |  ¡  t	|ƒS )Nr   z,Separator should be at least one-byte stringéÿÿÿÿr	   z2Separator is not found, and chunk exceed the limitrŸ   z2Separator is found, but chunk is longer than limit)r•   rŠ   r   r   Úfindr‹   r   r¢   rŽ   Úbytesr¥   r    r   r™   )r8   Z	separatorr¨   ÚoffsetZbuflenZisepÚchunkr   r   r   rŸ   (  s<    


þ


ÿzStreamReader.readuntilr¬   c                 Ã   sœ   | j d ur| j ‚|dkrdS |dk rVg }|  | j¡I d H }|s@qL| |¡ q(d |¡S | jsr| jsr|  d¡I d H  t| jd |… ƒ}| jd |…= |  	¡  |S )Nr   r   Úread)
r   r±   r‹   rx   rz   r   rŽ   r   r®   r™   )r8   ÚnZblocksÚblockrj   r   r   r   r±   ƒ  s"    

zStreamReader.readc                 Ã   sÀ   |dk rt dƒ‚| jd ur | j‚|dkr,dS t| jƒ|k rr| jr`t| jƒ}| j ¡  t ||¡‚|  	d¡I d H  q,t| jƒ|kr–t| jƒ}| j ¡  nt| jd |… ƒ}| jd |…= |  
¡  |S )Nr   z*readexactly size can not be less than zeror   Úreadexactly)rŠ   r   r•   r   rŽ   r®   r¥   r   r    r   r™   )r8   r²   Z
incompleterj   r   r   r   r´   µ  s&    



zStreamReader.readexactlyc                 C   s   | S r   r   r<   r   r   r   Ú	__aiter__Þ  s    zStreamReader.__aiter__c                 Ã   s   |   ¡ I d H }|dkrt‚|S )Nr   )r«   ÚStopAsyncIteration)r8   Úvalr   r   r   Ú	__anext__á  s    zStreamReader.__anext__)rž   )r¬   )rO   rP   rQ   rV   r–   r9   r}   rn   rD   r—   rc   r™   rh   rš   ri   r   r«   rŸ   r±   r´   rµ   r¸   r   r   r   r   r   †  s$   	
[
2)r   )NN)NN)N)N)Ú__all__Zsocketr’   r!   rS   ÚhasattrÚ r
   r   r   r   r   Úlogr   Ztasksr   r–   r   r   r   r   ÚProtocolr2   r   r   r   r   r   r   r   Ú<module>   s>   
ÿ!ÿ'
ÿÿDkP