+
    i  c                   s   Rt ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^RIH	t	 ^RIH
t
 ^RIHt ^RIHt ^RIHt ^RIHt ^RIHt ^R	IHt ^R
IHt R t ! R R]P(                  ]P*                  4      t ! R R]]P.                  4      t ! R R]]P2                  4      t ! R R]4      t ! R R]]P8                  4      t ! R R]]]P<                  4      t ! R R]]]P<                  4      t  ! R R ]	PB                  4      t"R# )BaseProactorEventLoopN)base_events)	constants)futures)
exceptions)	protocols)sslproto)
transports)trsock)loggerc                 s   \         P                  ! V4      V P                  R &    VP                  4       V P                  R&   RV P                  9  d!    VP                  4       V P                  R&   R# R#   \        P
                   d=    T P                  P                  4       '       d   \        P                  ! RTRR7        Li ; i  \        P
                   d    RT P                  R&    R# i ; i)socketZsocknamezgetsockname() failed on %rTZexc_infopeernameN)r   TransportSocket_extraZgetsocknamer
   Zerror_loop	get_debugr	   warningZgetpeername)	transportsock   &&0/usr/lib64/python3.14/asyncio/proactor_events.py_set_socket_extrar      s    !'!7!7!=IXC'+'7'7'9	$ )))	0+/+;+;+=IZ( * << C??$$&&NN,dTCC || 	0+/IZ(	0s)   A5 C	 54C*CC	$C10C1c                   s   a a ] tR t^.t oRV 3R lltR tR tR tR tR t	R t
]P                  3R ltRR	 ltR
 tR tR tRtVtV ;t# )_ProactorBasePipeTransportc                s  < \         SV `  WQ4       V P                  V4       W n        V P	                  V4       W`n        R V n        R V n        R V n        ^ V n	        ^ V n
        RV n        RV n        RV n        V P
                  e   V P
                  P                  V 4       V P                  P!                  V P"                  P$                  V 4       Ve.   V P                  P!                  \&        P(                  VR 4       R # R # )NF)super__init__
_set_extra_sockset_protocol_server_buffer	_read_fut
_write_fut_pending_write
_conn_lost_closing_called_connection_lost_eof_writtenZ_attachr   	call_soon	_protocolZconnection_mader   Z_set_result_unless_cancelledselfloopr   protocolwaiterextraserver	__class__   &&&&&&&r   r   Z#_ProactorBasePipeTransport.__init__2   s    %
(#',$!<<#LL  &

T^^;;TBJJ  !E!E!'/     c                s   V P                   P                  .pV P                  f   VP                  R4       M#V P                  '       d   VP                  R4       V P                  e-   VP                  RV P                  P                  4        24       V P                  e    VP                  RV P                  : 24       V P                  e    VP                  RV P                  : 24       V P                  '       d(   VP                  R\        V P                  4       24       V P                  '       d   VP                  R4       RP                  R	P                  V4      4      # )
NZclosedZclosingzfd=zread=zwrite=zwrite_bufsize=zEOF writtenz<{}>Z )r/   __name__r   appendr#   filenor   r    r   lenr%   ZformatZjoin)r)   Zinfo   & r   __repr__Z#_ProactorBasePipeTransport.__repr__I   s   ''(::KK!]]]KK	"::!KK#djj//1234>>%KK%123??&KK& 345<<<KK.T\\):(;<=KK&}}SXXd^,,r1   c                s"    WP                   R &   R# )ZpipeN)r   r)   r   r   r   r   Z%_ProactorBasePipeTransport._set_extra[   s    "Fr1   c                s    Wn         R # Nr'   )r)   r+   r   r   r   Z'_ProactorBasePipeTransport.set_protocol^   s    !r1   c                    V P                   # r9   r:   r)      &r   get_protocolZ'_ProactorBasePipeTransport.get_protocola   s    ~~r1   c                r;   r9   )r#   r<   r=   r   
is_closingZ%_ProactorBasePipeTransport.is_closingd   s    }}r1   c                s\   V P                   '       d   R # RV n         V ;P                  ^,          un        V P                  '       g5   V P                  f'   V P                  P                  V P                  R 4       V P                  e$   V P                  P                  4        R V n        R # R # NT)	r#   r"   r   r    r   r&   _call_connection_lostr   cancelr<   r=   r   closeZ _ProactorBasePipeTransport.closeg   su    ===1||| 7JJ  !;!;TB>>%NN!!#!DN &r1   c                s    V P                   e0   V! RV : 2\        V R7       V P                   P                  4        R # R # )Nzunclosed transport )Zsource)r   ZResourceWarningrC   )r)   Z_warnr   r   __del__Z"_ProactorBasePipeTransport.__del__r   s5    ::!'x0/$OJJ "r1   c           
     sP    \        V\        4      '       d;   V P                  P                  4       '       d   \        P
                  ! R WRR7       M-V P                  P                  RVRVRV RV P                  /4       V P                  V4       R#   T P                  T4       i ; i)z%r: %sTr   message	exceptionr   r+   N)	
isinstanceOSErrorr   r   r	   debugcall_exception_handlerr'   _force_close)r)   excrE      &&&r   _fatal_errorZ'_ProactorBasePipeTransport._fatal_errorw   s    	##w''::''))LL44H

11w	3  c"Dc"s   5B AB B%c                s   V P                   e\   V P                   P                  4       '       g<   Vf   V P                   P                  R 4       MV P                   P                  V4       V P                  '       d   V P
                  '       d   R # RV n        V ;P                  ^,          un        V P                  '       d"   V P                  P                  4        R V n        V P                  '       d"   V P                  P                  4        R V n	        ^ V n
        R V n        V P                  P                  V P                  V4       R # r@   )_empty_waiterdone
set_resultZset_exceptionr#   r$   r"   r    rB   r   r!   r   r   r&   rA   )r)   rL   r   r   rK   Z'_ProactorBasePipeTransport._force_close   s    )$2D2D2I2I2K2K{""--d3""005===T9991???OO""$"DO>>>NN!!#!DN

T77=r1   c                s@   V P                   '       d   R #  V P                  P                  V4       \        V P                  R4      '       dI   V P                  P                  4       R8w  d*   V P                  P                  \        P                  4       V P                  P                  4        R V n        V P                  pVe   VP                  V 4       R V n
        RV n         R #   \        T P                  R4      '       dI   T P                  P                  4       R8w  d*   T P                  P                  \        P                  4       T P                  P                  4        R T n        T P                  pTe   TP                  T 4       R T n
        RT n         i ; i)NshutdownT)r$   r'   Zconnection_lostZhasattrr   r4   rR   r
   Z	SHUT_RDWRrC   r   Z_detach)r)   rL   r.      && r   rA   Z0_ProactorBasePipeTransport._call_connection_lost   s*   '''	0NN**3/ tzz:..4::3D3D3F"3L

##F$4$45JJDJ\\F!t$#+/D( tzz:..4::3D3D3F"3L

##F$4$45JJDJ\\F!t$#+/D(s   C' 'B6Fc                sr    V P                   pV P                  e   V\        V P                  4      ,          pV# r9   )r!   r   r5   )r)   Zsizer6   r   get_write_buffer_sizeZ0_ProactorBasePipeTransport.get_write_buffer_size   s/    ""<<#C%%Dr1   )r   r$   r#   r"   r%   r!   r'   r   r   r   r    NNN)zFatal error on pipe transport)r2   
__module____qualname____firstlineno__r   r7   r   r   r>   r?   rC   warningsZwarnrD   rN   rK   rA   rU   __static_attributes____classdictcell____classcell__r/   __classdict__   @@r   r   r   .   sO     /.-$#"	" %MM 
#>(0( r1   r   c                   s^   a a ] tR t^t oR	V 3R lltR tR tR tR tR t	R
R lt
RtVtV ;t# )_ProactorReadPipeTransportc                s   < RV n         RV n        \        SV `  WW4WV4       \	        V4      V n        V P                  P                  V P                  4       RV n        R# )   TFNrS   )	_pending_data_length_pausedr   r   	bytearray_datar   r&   _loop_reading)	r)   r*   r   r+   r,   r-   r.   Zbuffer_sizer/   s	   &&&&&&&&r   r   Z#_ProactorReadPipeTransport.__init__   sN    $&!XuE{+


T//0r1   c                sV    V P                   '       * ;'       d    V P                  '       * # r9   )rd   r#   r<   r=   r   
is_readingZ%_ProactorReadPipeTransport.is_reading   s    <<55$55r1   c                s    V P                   '       g   V P                  '       d   R # RV n        V P                  P                  4       '       d   \        P
                  ! RV 4       R # R # )NTz%r pauses reading)r#   rd   r   r   r	   rI   r<   r=   r   pause_readingZ(_ProactorReadPipeTransport.pause_reading   sF    ===DLLL ::!!LL,d3 "r1   c                s   V P                   '       g   V P                  '       g   R # RV n        V P                  f'   V P                  P	                  V P
                  R 4       V P                  pRV n        VR8  d5   V P                  P	                  V P                  V P                  R V V4       V P                  P                  4       '       d   \        P                  ! RV 4       R # R # )NFz%r resumes readingrS   )r#   rd   r   r   r&   rg   rc   _data_receivedrf   r   r	   rI   )r)   lengthr6   r   resume_readingZ)_ProactorReadPipeTransport.resume_reading   s    ===>>!JJ  !3!3T:**$&!B; JJ  !4!4djj&6I6R::!!LL-t4 "r1   c                sV   V P                   P                  4       '       d   \        P                  ! R V 4        V P                  P                  4       pT'       g   T P                  4        R# R#   \        \        3 d    h \         d   pT P                  TR4        Rp?R# Rp?ii ; i)z%r received EOFz1Fatal error: protocol.eof_received() call failed.N)r   r   r	   rI   r'   Zeof_received
SystemExitKeyboardInterruptBaseExceptionrN   rC   )r)   Z	keep_openrL   s   &  r   _eof_receivedZ(_ProactorReadPipeTransport._eof_received   s    ::!!LL*D1	335I JJL  -. 	 	HJ	s   A/ /B(
B(B##B(c                s   V P                   '       d	   W n        R # V^ 8X  d   V P                  4        R # \        V P                  \
        P                  4      '       d%    \
        P                  ! V P                  V4       R # V P                  P                  V4       R #   \        \        3 d    h \         d   pT P                  TR4        R p?R # R p?ii ; i)Nz3Fatal error: protocol.buffer_updated() call failed.)rd   rc   rp   rG   r'   r   ZBufferedProtocolZ_feed_data_to_buffered_protorm   rn   ro   rN   Zdata_received)r)   datark   rL      &&& r   rj   Z)_ProactorReadPipeTransport._data_received   s    <<< )/%Q; dnni&@&@AA66t~~tL NN((.  12   !!##12 	s   !B C:C;CCc                s   RpRp Ve   RV n         VP                  4       '       dW   VP                  4       pV^ 8X  d    VR8  d   V P                  W24       R# R# \	        \        V P                  4      RV 4      pMVP                  4        V P                  '       d    VR8  d   V P                  W24       R# R# V P                  '       g@   V P                  P                  P                  V P                  V P                  4      V n         V P                  '       g&   V P                   P                  V P                  4       TR8  d   T P                  Y24       R# R#   \          dl   pT P                  '       g   T P#                  TR4        Rp?LPT P                  P%                  4       '       d   \&        P(                  ! RRR7        Rp?LRp?i\*         d   pT P-                  T4        Rp?LRp?i\.         d   pT P#                  TR4        Rp?LRp?i\0        P2                   d    T P                  '       g   h  ELi ; i  TR8  d   T P                  Y24       i i ; i)rb   Nz"Fatal read error on pipe transportz*Read error on pipe transport while closingTr   rS   )r   rP   resultrj   bytes
memoryviewrf   rB   r#   rd   r   	_proactor	recv_intor   add_done_callbackrg   ZConnectionAbortedErrorrN   r   r	   rI   ConnectionResetErrorrK   rH   r   CancelledError)r)   futrk   rq   rL      &&   r   rg   Z(_ProactorReadPipeTransport._loop_reading  s   .	2 "&88:: ZZ\F{F {##D1 A !DJJ!7!@AD JJL}}}2 {##D1 ) <<<!%!5!5!?!?

DJJ!W <<<001C1CD{##D1 # & 	,===!!#'KLL%%''I&*,# 	#c"" 	Ic#GHH(( 	=== !	 {##D1 s    E  E  AE  <E  ?E  7I  I	+$GI G4GI I	I	G50I 5I	I	HI I	1I	I	I I		I I')rf   rd   rc   r   )NNNi   r9   )r2   rW   rX   rY   r   rh   ri   rl   rp   rj   rg   r[   r\   r]   r^   r`   r   ra   ra      s-     64&5$ /212 12r1   ra   c                   sd   a a ] tR tRt oRtV 3R ltR tRR ltR tR t	R t
R	 tR
 tRtVtV ;t# )_ProactorBaseWritePipeTransportiH  Tc                s6   < \         SV `  ! V/ VB  R V n        R # r9   )r   r   rO   r)   ZargsZkwr/      &*,r   r   Z(_ProactorBaseWritePipeTransport.__init__N  s    $%"%!r1   c                s   \        V\        \        \        34      '       g"   \	        R \        V4      P                   24      hV P                  '       d   \        R4      hV P                  e   \        R4      hV'       g   R# V P                  '       dQ   V P                  \        P                  8  d   \        P                  ! R4       V ;P                  ^,          un
        R# V P                  f   V P!                  \        V4      R7       R# V P"                  '       g#   \        V4      V n        V P%                  4        R# V P"                  P'                  V4       V P%                  4        R# )z/data argument must be a bytes-like object, not zwrite_eof() already calledNz(unable to write; sendfile is in progresszsocket.send() raised exception.)rq   )rG   rt   re   ru   	TypeErrortyper2   r%   RuntimeErrorrO   r"   r   !LOG_THRESHOLD_FOR_CONNLOST_WRITESr	   r   r    _loop_writingr   _maybe_pause_protocolZextend)r)   rq   r   r   writeZ%_ProactorBaseWritePipeTransport.writeR  s   $	: >??Dz**+-. . ;<<)IJJ???)"M"MM@AOOq O ??" E$K0$T?DL&&( LL%&&(r1   c                s|    Ve#   V P                   f   V P                  '       d   R # R V n         ^ V n        V'       d   VP                  4        Vf   V P                  pR V n        V'       g   V P                  '       d'   V P
                  P                  V P                  R 4       V P                  '       d*   V P                  P                  \        P                  4       V P                  4        MV P
                  P                  P                  V P                  V4      V n         V P                   P!                  4       '       gG   \#        V4      V n        V P                   P%                  V P&                  4       V P)                  4        M%V P                   P%                  V P&                  4       V P*                  e.   V P                   f   V P*                  P-                  R 4       R # R # R #   \.         d   pT P1                  T4        R p?R # R p?i\2         d   pT P5                  TR4        R p?R # R p?ii ; i)Nz#Fatal write error on pipe transport)r    r#   r!   rs   r   r   r&   rA   r%   r   rR   r
   SHUT_WR_maybe_resume_protocolrv   sendrP   r5   rx   r   r   rO   rQ   ry   rK   rH   rN   )r)   frq   rL   rr   r   r   Z-_ProactorBaseWritePipeTransport._loop_writingx  s   &	J}!8T]]] "DO"#D
|||#===JJ(()C)CTJ$$$JJ''7 ++-"&**"6"6";";DJJ"M++--*-d)D'OO55d6H6HI..0OO55d6H6HI!!-$//2I""--d3 3J-# 	#c"" 	Jc#HII	JsM   #G. G. .G. -G. ?7G. 7BG. B"G. .H;9HH;H;H66H;c                    R # T r<   r=   r   can_write_eofZ-_ProactorBaseWritePipeTransport.can_write_eof      r1   c                s&    V P                  4        R # r9   )rC   r<   r=   r   	write_eofZ)_ProactorBaseWritePipeTransport.write_eof  s    

r1   c                (    V P                  R 4       R # r9   rK   r<   r=   r   abortZ%_ProactorBaseWritePipeTransport.abort      $r1   c                s    V P                   e   \        R4      hV P                  P                  4       V n         V P                  f   V P                   P                  R 4       V P                   # )NzEmpty waiter is already set)rO   r   r   Zcreate_futurer    rQ   r<   r=   r   _make_empty_waiterZ2_ProactorBaseWritePipeTransport._make_empty_waiter  sY    )<==!ZZ557??"))$/!!!r1   c                s    R V n         R # r9   )rO   r<   r=   r   _reset_empty_waiterZ3_ProactorBaseWritePipeTransport._reset_empty_waiter  s
    !r1   )r   rO   r!   r    NN)r2   rW   rX   rY   Z_start_tls_compatibler   r   r   r   r   r   r   r   r[   r\   r]   r^   r`   r   r}   r}   H  s=      !"$)L'JR "" "r1   r}   c                   s8   a a ] tR tRt oV 3R ltR tRtVtV ;t# )_ProactorWritePipeTransporti  c                s   < \         SV `  ! V/ VB  V P                  P                  P	                  V P
                  ^4      V n        V P                  P                  V P                  4       R# )i   N)	r   r   r   rv   recvr   r   rx   _pipe_closedr~   r   r   r   Z$_ProactorWritePipeTransport.__init__  sO    $%"%--224::rB(():):;r1   c                s    VP                  4       '       d   R # V P                  '       d   R # R V n        V P                  e   V P	                  \        4       4       R # V P                  4        R # r9   )Z	cancelledr#   r   r    rK   ZBrokenPipeErrorrC   )r)   r{   r   r   r   Z(_ProactorWritePipeTransport._pipe_closed  sG    ==??===??&o/0JJLr1   )r   )	r2   rW   rX   rY   r   r   r[   r\   r]   r^   r`   r   r   r     s     <
 r1   r   c                   sn   a a ] tR tRt oR
t^tRV 3R lltR tR tR t	RR lt
RR ltRR ltR	tVtV ;t# )_ProactorDatagramTransporti  c                s   < W@n         R V n        ^ V n        \        SV `  WW5VR7       \
        P                  ! 4       V n        V P                  P                  V P                  4       R # )N)r,   r-   )_addressrO   _buffer_sizer   r   collectionsZdequer   r   r&   rg   )r)   r*   r   r+   addressr,   r-   r/   r0   r   r   Z#_ProactorDatagramTransport.__init__  sX    ! 	XEJ #((*

T//0r1   c                    \        W4       R # r9   r   r8   r   r   r   Z%_ProactorDatagramTransport._set_extra  
    $%r1   c                r;   r9   )r   r<   r=   r   rU   Z0_ProactorDatagramTransport.get_write_buffer_size  s       r1   c                r   r9   r   r<   r=   r   r   Z _ProactorDatagramTransport.abort  r   r1   c                s   \        V\        \        \        34      '       g   \	        R \        V4      4      hV P                  e,   VRV P                  39  d   \        RV P                   24      hV P                  '       dc   V P                  '       dQ   V P                  \        P                  8  d   \        P                  ! R4       V ;P                  ^,          un        R# V P                  P                  \        V4      V34       V ;P                  \!        V4      V P"                  ,           ,          un        V P$                  f   V P'                  4        V P)                  4        R# )z,data argument must be bytes-like object (%r)Nz!Invalid address: must be None or z!socket.sendto() raised exception.)rG   rt   re   ru   r   r   r   
ValueErrorr"   r   r   r	   r   r   r3   r   r5   _header_sizer    r   r   )r)   rq   addrrM   r   sendtoZ!_ProactorDatagramTransport.sendto  s
   $	: >??J J( ( ==$dDMM5J)J3DMM?CE E ???t}}})"M"MMBCOOq O 	U4[$/0SY):):::??"  	""$r1   c                s     V P                   '       d   R # R V n        V'       d   VP                  4        V P                  '       d%   V P                   '       dM   V P                  '       d;   V P
                  '       d'   V P                  P                  V P                  R 4       R # V P                  P                  4       w  r#V ;P                  \        V4      V P                  ,           ,          un
        V P                  e7   V P                  P                  P                  V P                  V4      V n        M7V P                  P                  P!                  V P                  VVR7      V n        V P                  P#                  V P$                  4       V P'                  4        R #   \(         d'   pT P*                  P-                  T4        R p?R # R p?i\.         d   pT P1                  TR4        R p?R # R p?ii ; i)N)r   z'Fatal write error on datagram transport)r"   r    rs   r   r   r#   r   r&   rA   Zpopleftr   r5   r   rv   r   r   r   rx   r   r   rH   r'   error_receivedZ	ExceptionrN   )r)   r{   rq   r   rL   r|   r   r   Z(_ProactorDatagramTransport._loop_writing  sg   	* #DO

<<<DOOO===JJ(()C)CTJ--/JDTT->->!>>}}("&**"6"6";";DJJ<@#B #'**"6"6"="=djj>BCG #> #I OO--d.@.@A'')  	/NN))#.. 	Nc#LMM	NsR   F& F& !F& F& F& +F& =&F& %C
F& &G=1GG=G= G88G=c                s   R p V P                   '       d*    V'       d   V P                  P                  VX4       R # R # R V n        Vem   VP	                  4       pV P
                  '       d,   R p V'       d   V P                  P                  VX4       R # R # V P                  e   Y@P                  r2MVw  r#V P                   '       d*    V'       d   V P                  P                  VX4       R # R # V P                  eA   V P                  P                  P                  V P                  V P                  4      V n        M?V P                  P                  P                  V P                  V P                  4      V n        V P                  e&   V P                  P                  V P                  4       T'       d   T P                  P                  TX4       R # R #   \         d&   pT P                  P!                  T4        R p?LSR p?i\"        P$                   d    T P
                  '       g   h  Li ; i  T'       d   T P                  P                  TX4       i i ; ir9   )r"   r'   Zdatagram_receivedr   rs   r#   r   r   rv   r   r   max_sizerecvfromrx   rg   rH   r   r   rz   )r)   r{   rq   r   ZresrL   s   &&    r   rg   Z(_ProactorDatagramTransport._loop_reading#  s   '	=H 00t< ? "DNjjl===D0 00t< - ==,!$mm$!$JD  00t<  }}(!%!5!5!:!:4::;?=="J "&!5!5!>!>tzz?C}}"N ~~)001C1CD00t<   	/NN))#..(( 	=== !	 00t< s_   G ,G ,G 0G 1BG >3H5 H2$H?H5 H2H2.H2/H5 1H22H5 5'I)r   r   r   rO   r   r    i   rV   r9   )r2   rW   rX   rY   r   r   r   r   rU   r   r   r   rg   r[   r\   r]   r^   r`   r   r   r     s8     HL1&! %4 *D)= )=r1   r   c                   s,   a  ] tR tRt o R tR tRtV tR# )_ProactorDuplexPipeTransportiO  c                r   )Fr   r<   r=   r   r   Z*_ProactorDuplexPipeTransport.can_write_eofT  s    r1   c                s    \         hr9   )ZNotImplementedErrorr<   r=   r   r   Z&_ProactorDuplexPipeTransport.write_eofW  s    !!r1   r   N)r2   rW   rX   rY   r   r   r[   r\   )r_   s   @r   r   r   O  s     
" "r1   r   c                   st   a a ] tR tRt o]P
                  P                  tRV 3R lltR t	R t
R tRtVtV ;t# )_ProactorSocketTransporti[  c                sV   < \         SV `  WW4WV4       \        P                  ! V4       R # r9   )r   r   r   Z_set_nodelayr(   r0   r   r   Z!_ProactorSocketTransport.__init__b  s"    XuE  &r1   c                r   r9   r   r8   r   r   r   Z#_ProactorSocketTransport._set_extrag  r   r1   c                r   r   r   r<   r=   r   r   Z&_ProactorSocketTransport.can_write_eofj  r   r1   c                s    V P                   '       g   V P                  '       d   R # RV n        V P                  f,   V P                  P	                  \
        P                  4       R # R # r@   )r#   r%   r    r   rR   r
   r   r<   r=   r   r   Z"_ProactorSocketTransport.write_eofm  sF    ===D--- ??"JJ/ #r1   )r%   rV   )r2   rW   rX   rY   r   Z_SendfileModeZ
TRY_NATIVEZ_sendfile_compatibler   r   r   r   r[   r\   r]   r^   r`   r   r   r   [  s2     
 %22=='
&0 0r1   r   c                   s  a a ] tR tRt oV 3R ltR%R ltR&RRRRRRR	RR
RRR/R lltR%R ltR'R ltR'R lt	R'R lt
V 3R ltR tR tR tR(R ltR tR tR tR tR tR tR tR tR&R ltR tR)R  ltR! tR" tR# tR$tVtV ;t # )*r    iu  c                s  < \         SV `  4        \        P                  ! R VP                  P
                  4       Wn        Wn        RV n        / V n	        VP                  V 4       V P                  4        \        P                  ! 4       \        P                  ! 4       J d1   \        P                   ! V P"                  P%                  4       4       R# R# )zUsing proactor: %sN)r   r   r	   rI   r/   r2   rv   	_selector_self_reading_future_accept_futuresZset_loop_make_self_pipe	threadingcurrent_threadmain_threadsignalset_wakeup_fd_csockr4   )r)   Zproactorr/   s   &&r   r   ZBaseProactorEventLoop.__init__w  s    )8+=+=+F+FG!!$(!!$##%)>)>)@@  !3!3!56 Ar1   Nc                    \        WW#WE4      # r9   )r   )r)   r   r+   r,   r-   r.      &&&&&&r   _make_socket_transportZ,BaseProactorEventLoop._make_socket_transport  s    'H(-7 	7r1   server_sideFserver_hostnamer-   r.   ssl_handshake_timeoutssl_shutdown_timeoutc               sl    \         P                  ! WW4WVV	V
R 7      p\        WVWxR7       VP                  # ))r   r   r-   r.   )r   ZSSLProtocolr   Z_app_transport)r)   Zrawsockr+   
sslcontextr,   r   r   r-   r.   r   r   Zssl_protocols   &&&&&$$$$$$ r   _make_ssl_transportZ)BaseProactorEventLoop._make_ssl_transport  s?      ++
&;%9	;
 	!',	=***r1   c                r   r9   )r   )r)   r   r+   r   r,   r-   r   r   _make_datagram_transportZ.BaseProactorEventLoop._make_datagram_transport  s    )$h*09 	9r1   c                    \        V WW44      # r9   )r   r)   r   r+   r,   r-      &&&&&r   _make_duplex_pipe_transportZ1BaseProactorEventLoop._make_duplex_pipe_transport  s    +D,0FK 	Kr1   c                s    \        WW#V4      # r9   )ra   r   r   r   _make_read_pipe_transportZ/BaseProactorEventLoop._make_read_pipe_transport  s    )$hNNr1   c                r   r9   )r   r   r   r   _make_write_pipe_transportZ0BaseProactorEventLoop._make_write_pipe_transport  s     +4+/6J 	Jr1   c                s  < V P                  4       '       d   \        R 4      hV P                  4       '       d   R# \        P                  ! 4       \        P
                  ! 4       J d   \        P                  ! R4       V P                  4        V P                  4        V P                  P                  4        RV n
        RV n        \        SV `-  4        R# )z!Cannot close a running event loopNrS   )Z
is_runningr   	is_closedr   r   r   r   r   _stop_accept_futures_close_self_piperv   rC   r   r   )r)   r/   s   &r   rC   ZBaseProactorEventLoop.close  s    ??BCC>>##%)>)>)@@  $ 	!!# 	r1   c                T   "   V P                   P                  W4      G R j  xL
 #  L5ir9   )rv   r   )r)   r   ZnrM   r   	sock_recvZBaseProactorEventLoop.sock_recv  s      ^^((1111   (&(c                r   r9   )rv   rw   )r)   r   bufrM   r   sock_recv_intoZ$BaseProactorEventLoop.sock_recv_into  s      ^^--d8888r   c                r   r9   )rv   r   )r)   r   ZbufsizerM   r   sock_recvfromZ#BaseProactorEventLoop.sock_recvfrom  s      ^^,,T;;;;r   c                s|   "   V'       g   \        V4      pV P                  P                  WV4      G R j  xL
 #  L5ir9   )r5   rv   Zrecvfrom_into)r)   r   r   Znbytes   &&&&r   sock_recvfrom_intoZ(BaseProactorEventLoop.sock_recvfrom_into  s.     XF^^11$VDDDDs   3<:<c                r   r9   )rv   r   )r)   r   rq   rM   r   sock_sendallZ"BaseProactorEventLoop.sock_sendall  s      ^^((4444r   c                sX   "   V P                   P                  W^ V4      G Rj  xL
 #  L5i)    N)rv   r   )r)   r   rq   r   r   r   sock_sendtoZ!BaseProactorEventLoop.sock_sendto  s$     ^^**4q'BBBBs   !*(*c                s   "   V P                   '       d!   VP                  4       ^ 8w  d   \        R4      hV P                  P	                  W4      G Rj  xL
 #  L5i)r   zthe socket must be non-blockingN)_debugZ
gettimeoutr   rv   Zconnect)r)   r   r   rM   r   sock_connectZ"BaseProactorEventLoop.sock_connect  sC     ;;;4??,1>??^^++D::::s   AAAAc                sT   "   V P                   P                  V4      G R j  xL
 #  L5ir9   )rv   acceptr8   r   r   sock_acceptZ!BaseProactorEventLoop.sock_accept  s      ^^**40000r   c                s  "    VP                  4       p \        P                  ! T4      P                  pT'       d   TMTpT'       g   ^ # \        TR4      pT'       d   \        Y4,           T4      MTp	\        Y74      p^ p
  \        Y,
          T4      pT^ 8:  d   T
T
^ 8  d   TP                  T4       # # T P                  P                  YY84      G Rj  xL
  Y8,          pY,          p
Kk    \        \        P                  3 d   p\        P
                  ! R 4      hRp?ii ; i  \         d    \        P
                  ! R 4      hi ; i Lt  T
^ 8  d   TP                  T4       i i ; i5i)znot a regular fileNl    )r4   ZAttributeErrorioZUnsupportedOperationr   ZSendfileNotAvailableErrorosZfstatZst_sizerH   ZminZseekrv   Zsendfile)r)   r   fileoffsetcountr4   ZerrZfsizeZ	blocksizeZend_posZ
total_sents   &&&&&      r   _sock_sendfile_nativeZ+BaseProactorEventLoop._sock_sendfile_native  sK    	M[[]F	MHHV$,,E #E		;/	05#fne,5V#

	" 0)<	>%
 A~		&! 	 nn--d&LLL#'
+  7 78 	M667KLL	M  	M667KLL	M M A~		&! ss   E*C,  D% E*E*	7E*E E*6E E
E ,D"DD""E*%"EE*
E E''E*c                s  "   VP                  4       pVP                  4        VP                  4       G R j  xL
   V P                  VP                  W#VRR7      G R j  xL
 VP                  4        V'       d   VP                  4        # #  LU L/  TP                  4        T'       d   TP                  4        i i ; i5i)NF)Zfallback)rh   ri   r   Zsock_sendfiler   r   rl   )r)   Ztranspr   r   r   rl   s   &&&&& r   _sendfile_nativeZ&BaseProactorEventLoop._sendfile_native  s     **,'')))	(++FLL$5: , < < &&(%%'  	*< &&(%%' s8   4B>BB>"B BB "+B>B +B;;B>c                s   V P                   e"   V P                   P                  4        R V n         V P                  P                  4        R V n        V P                  P                  4        R V n        V ;P
                  ^,          un        R # r9   )r   rB   _ssockrC   r   _internal_fdsr<   r=   r   r   Z&BaseProactorEventLoop._close_self_pipe  sg    $$0%%,,.(,D%ar1   c                s    \         P                  ! 4       w  V n        V n        V P                  P	                  R 4       V P                  P	                  R 4       V ;P
                  ^,          un        R# )FN)r
   Z
socketpairr   r   Zsetblockingr   r<   r=   r   r   Z%BaseProactorEventLoop._make_self_pipe  sN    #)#4#4#6 T[&&ar1   c           	     s    Ve   VP                  4        V P                  VJd   R # V P                  P                  V P                  R4      pWn        VP                  V P                  4       R #   \        P                   d     R # \        \        3 d    h \         d#   pT P                  RRRTRT /4        R p?R # R p?ii ; i)Ni   rE   z.Error on reading from the event loop self piperF   r*   )rs   r   rv   r   r   rx   _loop_self_readingr   rz   rm   rn   ro   rJ   )r)   r   rL   rT   r   r   Z(BaseProactorEventLoop._loop_self_reading  s    	9}
((1 ##DKK6A )*% 7 78 (( 	-. 	 	''KS)  	s.   $A1 &A1 1C	C
C#C$CCc                s    V P                   pVf   R #  VP                  R4       R #   \         d2    T P                  '       d   \        P
                  ! RRR7        R #  R # i ; i)Ns    z3Fail to write a null byte into the self-pipe socketTr   )r   r   rH   r   r	   rI   )r)   Zcsockr6   r   _write_to_selfZ$BaseProactorEventLoop._write_to_self3  s\     =	,JJu 	,{{{ 0&*, , 	,s   ' A#A#"A#c           	     sV   a aaaaaaa RVVV VVVVV3R lloS P                  S4       R # )Nc                 sR  <  V ey   V P                  4       w  rSP                  '       d   \        P                  ! RSW!4       S! 4       pSe   SP	                  WSRRV/SS
SR7       MSP                  WRV/SR7       SP                  4       '       d   R # SP                  P                  S	4      p V SP                  S	P                  4       &   V P                  S4       R #   \         d   pS	P                  4       R8w  dB   SP                  RRRTR	\        P                  ! S	4      /4       S	P!                  4         R p?R # SP                  '       d    \        P                  ! R
S	RR7        R p?R #  R p?R # R p?i\"        P$                   d    S	P!                  4         R # i ; i)Nz#%r got a new connection from %r: %rTr   )r   r-   r.   r   r   r   rE   zAccept failed on a socketrF   r
   zAccept failed on socket %rr   rS   )rs   r   r	   rI   r   r   r   rv   r   r   r4   rx   rH   rJ   r   r   rC   r   rz   )r   Zconnr   r+   rL   r*   protocol_factoryr)   r.   r   r   r   r   s   &    r   r*   Z2BaseProactorEventLoop._start_serving.<locals>.loopJ  sz   #*=!"JD{{{%J%+T9/1H!-00 JD#-t"4V2G1E	 1 G 33 #-t"4V 4 E >>##NN))$/ 78$$T[[]3##D)  
6;;=B&//!#>#S &"8"8">1 
 JJLL[[[LL!=!%6 6 ! ,, 

s7   BC" C" "F&-AE:E:E::F&F&%F&r9   )r&   )	r)   r   r   r   r.   Zbacklogr   r   r*   s	   fffff&ff@r   _start_servingZ$BaseProactorEventLoop._start_servingE  s    
$	* $	*L 	tr1   c                r   r9   r   )r)   Z
event_listr   r   _process_eventsZ%BaseProactorEventLoop._process_eventsr  s    r1   c                s    V P                   P                  4        F  pVP                  4        K  	  V P                   P                  4        R # r9   )r   ZvaluesrB   Zclear)r)   futurer6   r   r   Z*BaseProactorEventLoop._stop_accept_futuresv  s6    **113FMMO 4""$r1   c                s    V P                   P                  VP                  4       R 4      pV'       d   VP                  4        V P                  P                  V4       VP                  4        R # r9   )r   Zpopr4   rB   rv   _stop_servingrC   )r)   r   r   rT   r   r   Z#BaseProactorEventLoop._stop_serving{  sG    %%))$++->MMO$$T*

r1   )r   r   rv   r   r   r   rV   r9   r   )r   )NNid   NN)!r2   rW   rX   rY   r   r   r   r   r   r   r   rC   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r[   r\   r]   r^   r`   r   r    r    u  s     77
+ +26+ +  $+ #'	+
 "&+9
K
OJ(29<E5C;
1":
(  98,$+Z%
 r1   )r    )#Z__all__r   r   r
   rZ   r   r   r   Z r   r   r   r   r   r   r   r   Zlogr	   r   Z_FlowControlMixinZBaseTransportr   ZReadTransportra   ZWriteTransportr}   r   ZDatagramTransportr   Z	Transportr   r   ZBaseEventLoopr    r   r1   r   <module>r      s    # 	 	              0$D!=!=!+!9!9DNP2!;!+!9!9P2fk"&@&0&?&?k"\"A ,@=!;!+!=!=@=F	"#=#B#-#7#7	"09>)3304KK55 Kr1   