
    2\hok                     ~   d Z ddlZddlZddlZddlZddlZ eed          re dz  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eddZdeddZ eed          rdeddZdeddZ G d dej                  Z G d deej                  Z G d d          Z G d d          ZdS ))StreamReaderStreamWriterStreamReaderProtocolopen_connectionstart_server    NAF_UNIX)open_unix_connectionstart_unix_server   )
coroutines)events)
exceptions)format_helpers)	protocols)logger)sleepi   )limitc                   	K   	 t          j                    }t          ||          }t          ||          	 |j        	fd| |fi | d {V \  }}t          |	||          }||fS )Nr   loopr   c                       S N protocols   9/opt/python-3.11.14/usr/lib/python3.11/asyncio/streams.py<lambda>z!open_connection.<locals>.<lambda>1   s         )r   get_running_loopr   r   create_connectionr   )
hostportr   kwdsr   reader	transport_writerr   s
            @r   r   r      s      " "$$DD111F#F666H//$. .(,. . . . . . . .LIq)Xvt<<F6>r   c                n    K   	 t          j                     fd} j        |||fi | d {V S )Nc                  N    t                    } t          |           }|S Nr   r   r   r   r%   r   client_connected_cbr   r   s     r   factoryzstart_server.<locals>.factoryN   s6    E555'0C-13 3 3r   )r   r    create_server)r.   r"   r#   r   r$   r/   r   s   `  `  @r   r   r   6   st      ( "$$D       $#GT4@@4@@@@@@@@@r   c                   K   	 t          j                    }t          ||          }t          ||           |j        fd| fi | d {V \  }}t          |||          }||fS )Nr   r   c                       S r   r   r   s   r   r   z&open_unix_connection.<locals>.<lambda>b   s    H r   )r   r    r   r   create_unix_connectionr   )	pathr   r$   r   r%   r&   r'   r(   r   s	           @r   r	   r	   Z   s      N&((E555'T:::8T8d, ,&*, , , , , , , ,	1i64@@v~r   c                l    K   	 t          j                     fd} j        ||fi | d {V S )Nc                  N    t                    } t          |           }|S r+   r,   r-   s     r   r/   z"start_unix_server.<locals>.factoryk   s6    !D999F+F4G157 7 7HOr   )r   r    create_unix_server)r.   r4   r   r$   r/   r   s   ` `  @r   r
   r
   f   sn      K&((	 	 	 	 	 	 	 -T,WdCCdCCCCCCCCCr   c                   6    e Zd Z	 ddZd Zd Zd Zd Zd ZdS )	FlowControlMixinNc                     |t          j        d          | _        n|| _        d| _        t	          j                    | _        d| _        d S )N   )
stacklevelF)r   _get_event_loop_loop_pausedcollectionsdeque_drain_waiters_connection_lost)selfr   s     r   __init__zFlowControlMixin.__init__~   sK    </1===DJJDJ)/11 %r   c                 t    d| _         | j                                        rt          j        d|            d S d S )NTz%r pauses writing)r?   r>   	get_debugr   debugrD   s    r   pause_writingzFlowControlMixin.pause_writing   sB    :!! 	4L,d33333	4 	4r   c                     d| _         | j                                        rt          j        d|            | j        D ]+}|                                s|                    d            ,d S )NFz%r resumes writing)r?   r>   rG   r   rH   rB   done
set_resultrD   waiters     r   resume_writingzFlowControlMixin.resume_writing   ss    :!! 	5L-t444) 	( 	(F;;== (!!$'''	( 	(r   c                     d| _         | j        sd S | j        D ]C}|                                s-||                    d            .|                    |           Dd S NT)rC   r?   rB   rL   rM   set_exceptionrD   excrO   s      r   connection_lostz FlowControlMixin.connection_lost   sv     $| 	F) 	. 	.F;;== .;%%d++++((---	. 	.r   c                 2  K   | j         rt          d          | j        sd S | j                                        }| j                            |           	 | d {V  | j                            |           d S # | j                            |           w xY w)NzConnection lost)rC   ConnectionResetErrorr?   r>   create_futurerB   appendremoverN   s     r   _drain_helperzFlowControlMixin._drain_helper   s        	:&'8999| 	F))++""6***	/LLLLLLL&&v.....D&&v....s   A: :Bc                     t           r   )NotImplementedErrorrD   streams     r   _get_close_waiterz"FlowControlMixin._get_close_waiter   s    !!r   r   )	__name__
__module____qualname__rE   rJ   rP   rV   r\   ra   r   r   r   r9   r9   t   sx        & & & &4 4 4( ( (. . .
/ 
/ 
/" " " " "r   r9   c                   j     e Zd Z	 dZd fd	Zed             Zd Zd Z fdZ	d Z
d Zd	 Zd
 Z xZS )r   Nc                 L   t                                          |           |&t          j        |          | _        |j        | _        nd | _        ||| _        d| _        d | _        d | _	        d | _
        || _        d| _        | j                                        | _        d S )Nr   F)superrE   weakrefref_stream_reader_wr_source_traceback_strong_reader_reject_connection_stream_writer_task
_transport_client_connected_cb	_over_sslr>   rY   _closed)rD   stream_readerr.   r   	__class__s       r   rE   zStreamReaderProtocol.__init__   s    d###$%,[%?%?D"%2%DD""%)D"* #0D"'"
$7!z//11r   c                 <    | j         d S |                                  S r   )rj   rI   s    r   _stream_readerz#StreamReaderProtocol._stream_reader   s"    !)4%%'''r   c                 v    | j         }|j        }|| _        || _        |                    d          d u| _        d S )N
sslcontext)r>   r&   rn   rp   get_extra_inforr   )rD   r(   r   r&   s       r   _replace_writerz$StreamReaderProtocol._replace_writer   s>    z$	$#"11,??tKr   c                 X     j         rEddi} j        r
 j        |d<    j                            |                                            d S  _         j        }||                                                   d          d u _	         j
        t           | j                   _         
                    | j                  }t          j        |          r? fd} j                            |           _         j                            |           d  _        d S d S )NmessagezpAn open stream was garbage collected prior to establishing network connection; call "stream.close()" explicitly.source_tracebackry   c                     |                                  r                                 d S |                                 }|4j                            d|d                                            d S d S )Nz*Unhandled exception in client_connected_cb)r}   	exceptionr&   )	cancelledcloser   r>   call_exception_handler)taskrU   rD   r&   s     r   callbackz6StreamReaderProtocol.connection_made.<locals>.callback   s    ~~'' !)))..**C
99'S),)2; ;   
 "))))) 'r   )rm   rk   r>   r   abortrp   rw   set_transportrz   rr   rq   r   rn   r   iscoroutinecreate_taskro   add_done_callbackrl   )rD   r&   contextr%   resr   s   ``    r   connection_madez$StreamReaderProtocol.connection_made   sg   " 
	 @G
 % E.2.D*+J--g666OOF#$  +++"11,??tK$0".y$/5/3z#; #;D ++F,0,?A AC%c** 7* * * * * * "Z33C88

,,X666"&D/ 10r   c                    | j         }|,||                                 n|                    |           | j                                        s7|| j                            d            n| j                            |           t                                          |           d | _        d | _	        d | _
        d | _        d S r   )rw   feed_eofrS   rs   rL   rM   rg   rV   rj   rn   ro   rp   )rD   rU   r%   ru   s      r   rV   z$StreamReaderProtocol.connection_lost
  s    ${!!!!$$S)))|  "" 	0{''----**3///$$$!%"
r   c                 F    | j         }||                    |           d S d S r   )rw   	feed_data)rD   datar%   s      r   data_receivedz"StreamReaderProtocol.data_received  s2    $T""""" r   c                 R    | j         }||                                 | j        rdS dS )NFT)rw   r   rr   )rD   r%   s     r   eof_receivedz!StreamReaderProtocol.eof_received!  s6    $OO> 	 5tr   c                     | j         S r   )rs   r_   s     r   ra   z&StreamReaderProtocol._get_close_waiter,  s
    |r   c                     	 | j         }|                                r*|                                s|                                 d S d S d S # t          $ r Y d S w xY wr   )rs   rL   r   r   AttributeError)rD   closeds     r   __del__zStreamReaderProtocol.__del__/  s    	#\F {{}} #V%5%5%7%7 #  """""# # # #  	 	 	DD	s   A 
AANN)rb   rc   rd   rk   rE   propertyrw   r{   r   rV   r   r   ra   r   __classcell__)ru   s   @r   r   r      s         2 2 2 2 2 2( ( ( X(
L L L(' (' ('T    $# # #
	 	 	  	# 	# 	# 	# 	# 	# 	#r   r   c                   ~    e Zd Z	 d Zd Zed             Zd Zd Zd Z	d Z
d Zd	 Zd
 ZddZd ZddddZd ZdS )r   c                     || _         || _        || _        || _        | j                                        | _        | j                            d            d S r   )rp   	_protocol_readerr>   rY   _complete_futrM   )rD   r&   r   r%   r   s        r   rE   zStreamWriter.__init__E  sS    #! 
!Z5577%%d+++++r   c                     | j         j        d| j        g}| j        |                    d| j                   d                    d                    |                    S )N
transport=zreader=<{}> )ru   rb   rp   r   rZ   formatjoinrD   infos     r   __repr__zStreamWriter.__repr__O  s]    ')Ido)I)IJ<#KK2$,22333}}SXXd^^,,,r   c                     | j         S r   rp   rI   s    r   r&   zStreamWriter.transportU  s
    r   c                 :    | j                             |           d S r   )rp   writerD   r   s     r   r   zStreamWriter.writeY  s    d#####r   c                 :    | j                             |           d S r   )rp   
writelinesr   s     r   r   zStreamWriter.writelines\  s    ""4(((((r   c                 4    | j                                         S r   )rp   	write_eofrI   s    r   r   zStreamWriter.write_eof_  s    ((***r   c                 4    | j                                         S r   )rp   can_write_eofrI   s    r   r   zStreamWriter.can_write_eofb  s    ,,...r   c                 4    | j                                         S r   )rp   r   rI   s    r   r   zStreamWriter.closee  s    $$&&&r   c                 4    | j                                         S r   )rp   
is_closingrI   s    r   r   zStreamWriter.is_closingh  s    ))+++r   c                 J   K   | j                             |            d {V  d S r   )r   ra   rI   s    r   wait_closedzStreamWriter.wait_closedk  s4      n..t44444444444r   Nc                 8    | j                             ||          S r   )rp   rz   )rD   namedefaults      r   rz   zStreamWriter.get_extra_infon  s    --dG<<<r   c                    K   	 | j         | j                                         }||| j                                        rt	          d           d {V  | j                                         d {V  d S )Nr   )r   r   rp   r   r   r   r\   )rD   rU   s     r   drainzStreamWriter.drainq  s      	 <#,((**C	?%%'' 
	 ((NNNNNNNn**,,,,,,,,,,,r   )server_hostnamessl_handshake_timeoutc                   K   	 | j         j        d u}| j         }|                                  d {V  | j                            | j        |||||           d {V }|| _        |                    |            d S )N)server_sider   r   )r   rq   r   r>   	start_tlsrp   r{   )rD   ry   r   r   r   r   new_transports          r   r   zStreamWriter.start_tls  s       	Bn9E>jjll"j22OXz#_"7 3 9 9 9 9 9 9 9 9 (  &&&&&r   c                    | j                                         sh| j                                        rt	          j        dt                     d S |                                  t	          j        d| t                     d S d S )Nzloop is closedz	unclosed )rp   r   r>   	is_closedwarningswarnResourceWarningr   rI   s    r   r   zStreamWriter.__del__  s    ))++ 	Ez##%% E.@@@@@

2$22ODDDDD	E 	Er   r   )rb   rc   rd   rE   r   r   r&   r   r   r   r   r   r   r   rz   r   r   r   r   r   r   r   r   ;  s       , , ,- - -   X$ $ $) ) )+ + +/ / /' ' ', , ,5 5 5= = = =- - -4 )-.2' ' ' ' 'E E E E Er   r   c                       e Zd ZdZedfdZd Zd Zd Zd Z	d Z
d Zd	 Zd
 Zd Zd Zd ZddZddZd Zd Zd ZdS )r   Nc                 z   |dk    rt          d          || _        |t          j                    | _        n|| _        t                      | _        d| _        d | _        d | _	        d | _
        d| _        | j                                        r-t          j        t          j        d                    | _        d S d S )Nr   zLimit cannot be <= 0Fr   )
ValueError_limitr   r=   r>   	bytearray_buffer_eof_waiter
_exceptionrp   r?   rG   r   extract_stacksys	_getframerk   )rD   r   r   s      r   rE   zStreamReader.__init__  s     A::3444</11DJJDJ {{	:!! 	"%3%Aa  &" &"D"""	" 	"r   c                 \   dg}| j         r*|                    t          | j                    d           | j        r|                    d           | j        t
          k    r|                    d| j                    | j        r|                    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=r   pausedr   r   )r   rZ   lenr   r   _DEFAULT_LIMITr   r   rp   r?   r   r   r   s     r   r   zStreamReader.__repr__  s,   < 	6KK3t|,,4445559 	KK;.((KK...///< 	4KK2$,22333? 	:KK8T_88999? 	:KK8T_88999< 	"KK!!!}}SXXd^^,,,r   c                     | j         S r   )r   rI   s    r   r   zStreamReader.exception  s
    r   c                     || _         | j        }|2d | _        |                                s|                    |           d S d S d S r   )r   r   r   rS   rT   s      r   rS   zStreamReader.set_exception  s]    DL##%% *$$S))))) * *r   c                     	 | j         }|2d | _         |                                s|                    d            d S d S d S r   )r   r   rM   rN   s     r   _wakeup_waiterzStreamReader._wakeup_waiter  sY    ?DL##%% (!!$''''' ( (r   c                     || _         d S r   r   )rD   r&   s     r   r   zStreamReader.set_transport  s    #r   c                     | j         r?t          | j                  | j        k    r$d| _         | j                                         d S d S d S )NF)r?   r   r   r   rp   resume_readingrI   s    r   _maybe_resume_transportz$StreamReader._maybe_resume_transport  sS    < 	-C--<< DLO**,,,,,	- 	-<<r   c                 <    d| _         |                                  d S rR   )r   r   rI   s    r   r   zStreamReader.feed_eof  s!    	r   c                 "    	 | j         o| j         S r   )r   r   rI   s    r   at_eofzStreamReader.at_eof  s    Ky---r   c                 D   |sd S | j                             |           |                                  | j        b| j        s]t          | j                   d| j        z  k    r?	 | j                                         d| _        d S # t          $ r d | _        Y d S w xY wd S d S d S )N   T)	r   extendr   rp   r?   r   r   pause_readingr^   r   s     r   r   zStreamReader.feed_data  s      	FD!!!O'L (DL!!AO33$--///  $ ' ' ' ' #'	' ('''33s   "B BBc                 
  K   	 | j         t          | d          | j        r d| _        | j                                         | j                                        | _         	 | j          d {V  d | _         d S # d | _         w xY w)NzF() called while another coroutine is already waiting for incoming dataF)r   RuntimeErrorr?   rp   r   r>   rY   )rD   	func_names     r   _wait_for_datazStreamReader._wait_for_data  s      	 <# 5 5 56 6 6 < 	- DLO**,,,z//11	 ,DLLL4DLs   #A9 9	Bc                   K   	 d}t          |          }	 |                     |           d {V }n# t          j        $ r}|j        cY d }~S d }~wt          j        $ r}| j                            ||j                  r| j        d |j        |z   = n| j        	                                 | 
                                 t          |j        d                   d }~ww xY w|S )N   
r   )r   	readuntilr   IncompleteReadErrorpartialLimitOverrunErrorr   
startswithconsumedclearr   r   args)rD   sepseplenlinees        r   readlinezStreamReader.readline#  s     	 S
	(,,,,,,,,DD- 	 	 	9+ 	( 	( 	(|&&sAJ77 %L!5!*v"5!566""$$$((***QVAY'''	( s(   2 CACCA:CCr   c                   K   	 t          |          }|dk    rt          d          | j        | j        d}	 t          | j                  }||z
  |k    rJ| j                            ||          }|dk    rn|dz   |z
  }|| j        k    rt          j        d|          | j        rBt          | j                  }| j        
                                 t          j        |d           |                     d           d {V  || j        k    rt          j        d|          | j        d ||z            }| j        d ||z   = |                                  t          |          S )	Nr   z,Separator should be at least one-byte stringTr   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   )rD   	separatorr   offsetbuflenisepchunks          r   r   zStreamReader.readuntilB  s     	& YQ;;KLLL?&/!* 	3&&F &((|((F;;2::   !f,DK''$6L      y Bdl++""$$$ 4UDAAA %%k222222222=	3@ $+.DdL L L ^dVm^,L$-($$&&&U||r   r   c                   K   	 | j         | j         |dk    rdS |dk     rQg }	 |                     | j                   d {V }|sn|                    |           9d                    |          S | j        s"| j        s|                     d           d {V  t          | j        d |                   }| j        d |= | 	                                 |S )Nr   r   Tread)
r   r	  r   rZ   r   r   r   r   r  r   )rD   nblocksblockr   s        r   r	  zStreamReader.read  s     	* ?&/!663q55
 F%"ii44444444 e$$$	%
 88F###| 	.DI 	.%%f--------- T\"1"%&&L!$$&&&r   c                   K   	 |dk     rt          d          | j        | j        |dk    rdS t          | j                  |k     r|| j        rBt          | j                  }| j                                         t          j        ||          | 	                    d           d {V  t          | j                  |k     |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   )rD   r
  
incompleter   s       r   r  zStreamReader.readexactly  sP     	 q55IJJJ?&/!663$,!##y D"4<00
""$$$ 4ZCCC%%m444444444 $,!## t|!!&&DL    bqb)**DRaR $$&&&r   c                     | S r   r   rI   s    r   	__aiter__zStreamReader.__aiter__  s    r   c                 X   K   |                                   d {V }|dk    rt          |S )Nr   )r   StopAsyncIteration)rD   vals     r   	__anext__zStreamReader.__anext__  s9      MMOO#######::$$
r   )r   )r   )rb   rc   rd   rk   r   rE   r   r   rS   r   r   r   r   r   r   r   r   r   r	  r  r  r  r   r   r   r   r     s4       +$ " " " ",- - -$  * * *( ( ($ $ $- - -
  . . .$ $ $,     8  >Y Y Y Yv1 1 1 1f' ' 'R      r   r   r   r   )__all__r@   socketr   r   rh   hasattr r   r   r   r   r   logr   tasksr   r   r   r   r	   r
   Protocolr9   r   r   r   r   r   r   <module>r     sf  '      



  
769 =<<G                                            .    8A+A A A A AB 769 D
)7
 
 
 
 
D&4D D D D D=" =" =" =" ="y) =" =" ="@D# D# D# D# D#+Y-? D# D# D#NcE cE cE cE cE cE cE cEJ` ` ` ` ` ` ` ` ` `r   