
    fjL&                     n    S SK r S SKrS SKrS SKrS SKJr   " S S\5      r " S S5      r " S S5      r	g)	    N)clusterc                       \ rS rSrSrg)
StopServer    N)__name__
__module____qualname____firstlineno____static_attributes__r       Q/var/www/html/GQ-WA/venv/lib/python3.13/site-packages/asyncpg/_testbase/fuzzer.pyr   r      s    r   r   c                       \ rS rSrSSSS.S\S\R                  \   S\S\S	\R                  \   S
S4S jjr	S r
S rS rS rS rS rS rS rS rS rS rS rS rS rSrg)TCPFuzzingProxy   z	127.0.0.1N)listening_addrlistening_portsettingsr   r   backend_hostbackend_portr   returnc                    Xl         X l        X0l        X@l        U=(       d    0 U l        S U l        S U l        S U l        S U l        0 U l	        S U l
        S U l        g N)r   r   r   r   r   loopconnectivityconnectivity_loss
stop_eventconnectionssocklisten_task)selfr   r   r   r   r   s         r   __init__TCPFuzzingProxy.__init__   s\     -,(( B	 !%	r   c                   #    [         R                  " U5      n[         R                  " U R                  R                  5       5      n [         R                  " X#/[         R                  S9I S h  vN   U R                  R                  5       (       a
  [        5       eUR                  5       UR                  5       (       d  UR                  5         UR                  5       (       d  UR                  5         $ $  N! UR                  5       (       d  UR                  5         UR                  5       (       d  UR                  5         f f = f7fN)return_when)
asyncioensure_futurer   waitFIRST_COMPLETEDis_setr   resultdonecancel)r!   work	work_taskstop_event_tasks       r   _waitTCPFuzzingProxy._wait&   s     ))$/	!//0D0D0FG	),,,#335 5 5 %%'' l" '')>>##  ""''))&&( *5 >>##  ""''))&&( *s2   AE
'C: /C80<C: ,AE
8C: :AEE
c                     [         R                  " 5       n[         R                  " U R                  U4S9U l        U R                  R                  5         UR                  SS9(       d  [        S5      eg )N)targetargs   )timeoutzfuzzer proxy failed to start)	threadingEventThread_start_threadthreadstartr)   RuntimeError)r!   starteds     r   r>   TCPFuzzingProxy.start9   s\    //#&&%%WJ8||A|&=>> 'r   c                     U R                   R                  U R                  5        U R                  R	                  5         g r   )r   call_soon_threadsafe_stopr=   joinr!   s    r   stopTCPFuzzingProxy.stopA   s(    		&&tzz2r   c                 8    U R                   R                  5         g r   )r   setrF   s    r   rD   TCPFuzzingProxy._stopE   s    r   c                 `   [         R                  " 5       U l        [         R                  " U R                  5        [         R                  " 5       U l        U R
                  R                  5         [         R                  " 5       U l        [         R                  " 5       U l        U R                  c  [        R                  " 5       U l	        [        R                  " 5       U l        U R                  R                  U R                  U R                  45        U R                  R!                  S5        U R                  R#                  S5         U R                  R%                  U R'                  U5      5        U R                  R)                  5         g ! U R                  R)                  5         f = f)N2   F)r'   new_event_loopr   set_event_loopr:   r   rJ   r   r   r   r   find_available_portsocketr   bindr   listensetblockingrun_until_complete_mainclose)r!   started_events     r   r<   TCPFuzzingProxy._start_threadH   s   **,	tyy)#MMO!(!--/&")"="="?DMMO			++T-@-@AB				e$	II((M)BCIIOODIIOOs   *F F-c                   #    [         R                  " U R                  5       5      U l        UR	                  5          U R                  I S h  vN   [        U R                  5       H  nUR                  5         M     [         R                  " S5      I S h  vN   [        U R                  S5      (       a3  U R                  R                  U R                  R                  5       5        U R                  R                  5         g  N No! [        U R                  5       H  nUR                  5         M     [         R                  " S5      I S h  vN    [        U R                  S5      (       a3  U R                  R                  U R                  R                  5       5        U R                  R                  5         f = f7f)Ng{Gz?remove_reader)r'   r(   rS   r    rJ   listr   rW   sleephasattrr   r[   r   fileno)r!   rX   cs      r   rV   TCPFuzzingProxy._main^   s'    "00?	""""$**+	 ,--%%%tyy/22		''		(8(8(:;IIOO # & $**+	 ,--%%%tyy/22		''		(8(8(:;IIOOsP   :G D DD AG DA-G D G AF=EA.F==G c                   #      U R                  U R                  R                  U R                  5      5      I S h  vN u  p[        R                  " 5       nUR                  S5        U R                  U R                  R                  X0R                  U R                  45      5      I S h  vN   [        XU 5      nU R                  R                  UR                  5       5      nXPR                  U'   M   N NK! [         a     g f = f7fNF)r2   r   sock_acceptr   rQ   rT   sock_connectr   r   r   
Connectioncreate_taskhandler   )r!   client_sock_backend_sockconn	conn_tasks         r   rS   TCPFuzzingProxy.listenl   s     
'+zzII))$))4(6 "6  &}}((/jj!7!7 #4#4d6G6G"H"J K K K
 k>D		--dkkm<I%.T" "6K sL   D
7C: C6A/C: ,C8-C: 1AD
6C: 8C: :
DD
DD
c                 N    U R                   R                  U R                  5        g r   )r   rC   _trigger_connectivity_lossrF   s    r   trigger_connectivity_loss)TCPFuzzingProxy.trigger_connectivity_loss~   s    		&&t'F'FGr   c                 l    U R                   R                  5         U R                  R                  5         g r   )r   clearr   rJ   rF   s    r   rp   *TCPFuzzingProxy._trigger_connectivity_loss   s&    !""$r   c                 N    U R                   R                  U R                  5        g r   )r   rC   _restore_connectivityrF   s    r   restore_connectivity$TCPFuzzingProxy.restore_connectivity   s    		&&t'A'ABr   c                 l    U R                   R                  5         U R                  R                  5         g r   )r   rJ   r   rt   rF   s    r   rw   %TCPFuzzingProxy._restore_connectivity   s&    $$&r   c                 $    U R                  5         g r   )rx   rF   s    r   resetTCPFuzzingProxy.reset   s    !!#r   c                 d    U R                   R                  US 5      nUb  UR                  5         g g r   )r   popr.   )r!   
connectionrm   s      r   _close_connection!TCPFuzzingProxy._close_connection   s1    $$((T:	  !r   c                     [        U R                  5       H)  nU R                  R                  U R                  U5        M+     g r   )r\   r   r   rC   r   )r!   rl   s     r   close_all_connections%TCPFuzzingProxy.close_all_connections   s1    ))*DII**4+A+A4H +r   )r   r   r   r   r   r    r   r   r   r   r   r   r=   )r   r	   r
   r   strtypingOptionalintdictr"   r2   r>   rG   rD   r<   rV   rS   rq   rp   rx   rw   r}   r   r   r   r   r   r   r   r      s    .96:15 #  !'!5 " 25  "??40  ;? ")&?,/$H%C'$
Ir   r   c                   >    \ rS rSrS rS rS rS rS rS r	S r
S	rg
)rf      c                     Xl         X l        X0l        UR                  U l        UR                  U l        UR
                  U l        S U l        S U l        SU l        g rc   )	ri   rk   proxyr   r   r   proxy_to_backend_taskproxy_from_backend_task	is_closed)r!   ri   rk   r   s       r   r"   Connection.__init__   sQ    &(
JJ	!..!&!8!8%)"'+$r   c                 $   U R                   (       a  g SU l         U R                  b!  U R                  R                  5         S U l        U R                  b!  U R                  R                  5         S U l        U R                  R                  U 5        g )NT)r   r   r.   r   r   r   rF   s    r   rW   Connection.close   sq    >>%%1&&--/)-D&''3((//1+/D(

$$T*r   c                 |  #    [         R                  " U R                  5       5      U l        [         R                  " U R	                  5       5      U l         [         R                  " U R                  U R
                  /[         R                  S9I S h  vN   U R                  b  U R                  R                  5         U R
                  b  U R
                  R                  5         U R                  R                  U R                  R                  5       5        U R                  R                  U R                  R                  5       5        U R                  R                  U R                  R                  5       5        U R                  R                  U R                  R                  5       5        U R                  R                  5         U R                  R                  5         g  GNT! U R                  b  U R                  R                  5         U R
                  b  U R
                  R                  5         U R                  R                  U R                  R                  5       5        U R                  R                  U R                  R                  5       5        U R                  R                  U R                  R                  5       5        U R                  R                  U R                  R                  5       5        U R                  R                  5         U R                  R                  5         f = f7fr%   )r'   r(   proxy_to_backendr   proxy_from_backendr   r)   r*   r.   r   r[   ri   r_   remove_writerrk   rW   rF   s    r   rh   Connection.handle   sS    %,%:%:!!#&%" (/'<'<##%('$	&,,++T-I-IJ#335 5 5
 ))5**113++7,,335 II##D$4$4$;$;$=>II##D$4$4$;$;$=>II##D$5$5$<$<$>?II##D$5$5$<$<$>?""$##%+5
 ))5**113++7,,335 II##D$4$4$;$;$=>II##D$4$4$;$;$=>II##D$5$5$<$<$>?II##D$5$5$<$<$>?""$##%s2   AL<<G) G&G) EL<&G) )EL99L<c                   #    [         R                  " U R                  R                  X5      5      n[         R                  " U R                  R                  5       5      n [         R
                  " X4/[         R                  S9I S h  vN   U R                  R                  5       (       am   U R                  R                  5       (       dL  UR                  5       (       d  UR                  5         UR                  5       (       d  UR                  5         g g g UR                  5       U R                  R                  5       (       dL  UR                  5       (       d  UR                  5         UR                  5       (       d  UR                  5         $ $ $  GN! U R                  R                  5       (       dL  UR                  5       (       d  UR                  5         UR                  5       (       d  UR                  5         f f f = f7fr%   )r'   r(   r   	sock_recvr   r)   r*   r+   r   r-   r.   r,   )r!   r   n	read_taskconn_event_tasks        r   _readConnection._read   s    ))II(*	!//""'')+	-,,,#335 5 5 %%,,.. 99&&(( ~~''$$&&++--#**, . ) !'')99&&(( ~~''$$&&++--#**, . )5 99&&(( ~~''$$&&++--#**, . )?   AH!'F F	#F -A,HF (A,HF A-HHc                   #    [         R                  " U R                  R                  X5      5      n[         R                  " U R                  R                  5       5      n [         R
                  " X4/[         R                  S9I S h  vN   U R                  R                  5       (       am   U R                  R                  5       (       dL  UR                  5       (       d  UR                  5         UR                  5       (       d  UR                  5         g g g UR                  5       U R                  R                  5       (       dL  UR                  5       (       d  UR                  5         UR                  5       (       d  UR                  5         $ $ $  GN! U R                  R                  5       (       dL  UR                  5       (       d  UR                  5         UR                  5       (       d  UR                  5         f f f = f7fr%   )r'   r(   r   sock_sendallr   r)   r*   r+   r   r-   r.   r,   )r!   r   data
write_taskr   s        r   _writeConnection._write   s    **II""4.0
!//""'')+	-,,-#335 5 5 %%,,.. 99&&((!((%%'&++--#**, . ) "((*99&&((!((%%'&++--#**, . )5 99&&((!((%%'&++--#**, . )r   c                   #    S n  U R                   R                  5       I S h  vN   Ub  UnS nO$U R                  U R                  S5      I S h  vN nUS:X  a  OPU R                  R                  5       (       a  U(       a  UnM  U R                  U R                  U5      I S h  vN   M  U R                  R                  5       (       d&  U R                  R                  U R                  5        g g  N N NP! [         a     NXf = f! U R                  R                  5       (       d&  U R                  R                  U R                  5        f f = f7fNi   r   )r   r)   r   ri   r   r+   r   rk   ConnectionErrorr   r   	call_soonrW   r!   bufr   s      r   r   Connection.proxy_to_backend   s    	0'',,...?DC!%D,<,<d!CCD3;))0022"kk$"3"3T::: & 99&&((		##DJJ/ )% /
 D ; 		 99&&((		##DJJ/ )w   EC8 C2+C8 C4
C8 D A	C8 %C6&C8 ,AE2C8 4C8 6C8 8
DD DD AEEc                   #    S n  U R                   R                  5       I S h  vN   Ub  UnS nO$U R                  U R                  S5      I S h  vN nUS:X  a  OPU R                  R                  5       (       a  U(       a  UnM  U R                  U R                  U5      I S h  vN   M  U R                  R                  5       (       d&  U R                  R                  U R                  5        g g  N N NP! [         a     NXf = f! U R                  R                  5       (       d&  U R                  R                  U R                  5        f f = f7fr   )r   r)   r   rk   r   r+   r   ri   r   r   r   r   rW   r   s      r   r   Connection.proxy_from_backend  s    	0'',,...?DC!%D,=,=t!DDD3;))0022"kk$"2"2D999 & 99&&((		##DJJ/ )% /
 E : 		 99&&((		##DJJ/ )r   )	rk   ri   r   r   r   r   r   r   r   N)r   r	   r
   r   r"   rW   rh   r   r   r   r   r   r   r   r   rf   rf      s%    	+ &>-,-,040r   rf   )
r'   rQ   r9   r   asyncpgr   	Exceptionr   r   rf   r   r   r   <module>r      s=        	 	BI BIJY0 Y0r   