
    Oj5                    (   U d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
Z
d dlZd dlZd dlZd dlmZmZ d dlmZ d dlmZ d dlmZmZ d dlmZ d dlmZ d d	lmZmZ erLd d
lm Z  d dl!m"Z" d dl#m$Z$ d dl%m&Z& d dl'm(Z( d dl)m*Z* d dl+m,Z, d dl-m.Z. e"e$z  e(z  e&z  e z  e.z  e*z  e,z  Z/de0d<   e	jb                  e	jd                  fZ3ej                  dk(  re3e	jh                  fz  Z3 ejj                  d      Z6 G d d      Z7 G d d      Z8y)    )annotationsN)	GeneratorSequence)
formatdate)	FrameType)TYPE_CHECKING	TypeAlias)style)asyncio_run)STARTUP_FAILUREConfig)AutoZttpProtocol)H11Protocol)HttpToolsProtocol)ZttpH2Protocol)ZttpProtocol)WebSocketProtocol)WebSocketsSansIOProtocol)
WSProtocolr	   	Protocolswin32zuvicorn.errorc                      e Zd ZdZddZy)ServerStatezP
    Shared servers state that is available between all protocol instances.
    c                \    d| _         t               | _        t               | _        g | _        y Nr   )total_requestssetconnectionstasksdefault_headersselfs    e/var/www/origus_pro_usr/data/www/origus.pro/core/.venv/lib/python3.12/site-packages/uvicorn/server.py__init__zServerState.__init__<   s%    +.5.1e
:<    NreturnNone)__name__
__module____qualname____doc__r$    r%   r#   r   r   7   s    =r%   r   c                      e Zd ZddZej
                  dd       ZdddZdddZdddZ	dddZ
ddZdd	Zdd
ZdddZddZej"                  dd       ZddZy)Serverc                v    || _         t               | _        d| _        d| _        d| _        d| _        g | _        y )NFg        )configr   server_statestartedshould_exit
force_exitlast_notified_captured_signals)r"   r1   s     r#   r$   zServer.__init__D   s9    'M  ,.r%   c                    | j                   j                  y | j                   j                  t        j                  d| j                   j                        z   S r   )r1   limit_max_requestsrandomrandintlimit_max_requests_jitterr!   s    r#   r9   zServer.limit_max_requestsO   s?    ;;))1{{--q$++BgBg0hhhr%   Nc                l    t        | j                  |      | j                  j                               S )Nsockets)loop_factory)r   server1   get_loop_factoryr"   r?   s     r#   runz
Server.runU   s'    4::g:6T[[EaEaEcddr%   c                   K   | j                         5  | j                  |       d {    d d d        y 7 # 1 sw Y   y xY wwN)capture_signals_serverC   s     r#   rA   zServer.serveX   sA     !!# 	'++g&&&	' 	'&	' 	's$   A868	A8AAc                B  K   t        j                         }| j                  }|j                  s|j	                          |j                  |      | _        d}dt        dd      z   dz   }t        j                  ||d|i       | j                  |	       d {    | j                  s| j                          d {    | j                  rJ| j                  |	       d {    d
}dt        dd      z   dz   }t        j                  ||d|i       y y 7 7 ]7 9w)NzStarted server process [%d]zStarted server process [z%dcyan)fg]color_messageextrar>   zFinished server process [%d]zFinished server process [)osgetpidr1   loadedloadlifespan_classlifespanr
   loggerinfostartupr4   	main_loopr3   shutdown)r"   r?   
process_idr1   messagerM   s         r#   rH   zServer._serve\   s     YY[
}}KKM--f5/2U4F5KKcQGZ/OPll7l+++.."""<<---0004G7%:PPSVVMKKO]3SKT  	,"0s6   BDD#D=D>%D#D$6DDDc                2   K    j                   j                          d {     j                   j                  rt        j                  t
                j                  	 d
	 	 	 d fd}t        j                         }|	 	 	 	 dd}g  _	        |D ]~  }t        j                         dk(  }j                  dkD  r
|r ||      }|j                  ||j                  j                         d {   } j                  j!                  |        |}nj"                  t%        j&                  j"                  t$        j(                  t$        j*                        }|j                  ||j                  j                         d {   }|j,                  J |j,                  }|g _	        nGj.                  d}	t0        j2                  j5                  j.                        r)t1        j6                  j.                        j8                  }	|j;                  |j.                  j                  j                         d {   }t1        j<                  j.                  |	       |j,                  J |j,                  }|g _	        ni	 |j                  |j>                  j@                  j                  j                         d {   }j,                  J |j,                  }|g _	        | jK                  |       d	 _&        y 	 d	 _&        y 7 7 27 7 7 U# tB        $ r[}
tD        jG                  |
        j                   jI                          d {  7   t        j                  t
               Y d }
~
d }
~
ww xY ww)Nc                j    j                  j                  j                  j                  |       S )N)r1   r2   	app_state_loop)http_protocol_classr2   rU   state)r`   r1   r"   s    r#   create_protocolz'Server.startup.<locals>.create_protocolz   s9     --!..----	 .  r%   c                d    ddl m} | j                  t        j                               } ||      S )Nr   )	fromshare)socketre   sharerP   rQ   )sockre   	sock_datas      r#   _share_socketz%Server.startup.<locals>._share_socket   s&    
 - JJryy{3	 ++r%   Windows   )rh   sslbacklogi  )pathrm   rn   )hostportrm   rn   TrF   )r`   z asyncio.AbstractEventLoop | Noner'   zasyncio.Protocol)rh   socket.SocketTyper'   rr   )'rU   rX   r4   sysexitr   r1   asyncioget_running_loopserversplatformsystemworkerscreate_serverrm   rn   appendfdrf   fromfdAF_UNIXSOCK_STREAMr?   udsrP   ro   existsstatst_modecreate_unix_serverchmodrp   rq   OSErrorrV   errorrZ   _log_started_messager3   )r"   r?   rc   looprj   rh   
is_windowsserver	listeners	uds_permsexcr1   s   `          @r#   rX   zServer.startups   s    mm##%%%==$$HH_% 7;	3		 '') ,',", >@DL ,%__.);
>>A%*(.D#11/RXR\R\flftft1uu##F+,  IYY"==FNNF<N<NOD--oDfjjbhbpbp-qqF>>---I"8DLZZ#Iww~~fjj)GGFJJ/77	22fjjfjj&.. 3  F HHVZZ+>>---I"8DL*#11#

"NN  2    >>---I"8DL?%%i0  s 	&L v r  *S!mm,,...))*s   NL#CN4L&5BNL)B>NL,ANAL0 L.L0 AN&N)N,N.L0 0	N92N+M.,N
NNNc                   | j                   }|j                  *|d   }t        j                  d|j	                                y |j
                  !t        j                  d|j
                         y d}|j                  dn|j                  }d|v rd}|j                  }|dk(  r|d   j	                         d   }|j                  rd	nd
}d| d}dt        |d      z   dz   }	t        j                  ||||d|	i       y )Nr   z3Uvicorn running on socket %s (Press CTRL+C to quit)z8Uvicorn running on unix socket %s (Press CTRL+C to quit)z
%s://%s:%dz0.0.0.0:z%s://[%s]:%drl   httpshttpzUvicorn running on z (Press CTRL+C to quit)T)boldrM   rN   )
r1   r}   rV   rW   getsocknamer   rp   rq   rm   r
   )
r"   r   r1   rh   addr_formatrp   rq   protocol_namer\   rM   s
             r#   r   zServer._log_started_message   s   99 Q<DKKE  "
 ZZ#KKRTZT^T^_ 'K & 39Dd{,;;Dqy |//1!4'-zzGvM+K=8OPG1E+D4QQTmmMKK&6  r%   c                   K   d}| j                  |       d {   }|sD|dz  }|dz  }t        j                  d       d {    | j                  |       d {   }|sCy y 7 K7 $7 w)Nr   rl   i / 皙?)on_tickru   sleep)r"   counterr4   s      r#   rY   zServer.main_loop   si      LL11qLG&G--$$$ $W 55K	  2 %5s9   A+A%(A+A'A+A)A+#A+'A+)A+c                j  K   |dz  dk(  rt        j                          }t        |d      j                         }| j                  j                  rd|fg}ng }|| j                  j
                  z   | j                  _        | j                  j                  O|| j                  z
  | j                  j                  kD  r)|| _	        | j                  j                          d {    | j                  ry| j                  }|0| j                  j                  |k\  rt        j                  d|       yy7 Pw)N
   r   T)usegmts   datez:Maximum request limit of %d exceeded. Terminating process.F)timer   encoder1   date_headerencoded_headersr2   r    callback_notifyr6   timeout_notifyr4   r9   r   rV   rW   )r"   r   current_timecurrent_dater   max_requestss         r#   r   zServer.on_tick   s    R<199;L%l4@GGIL{{&& '67 0;dkk>Y>Y0YD- {{**6$"4"44t{{7Q7QQ)5D&++55777 ..#(9(9(H(HL(XKKTVbc 8s   CD3 D1!AD3c                0  K   t         j                  d       | j                  D ]  }|j                           |xs g D ]  }|j                           t	        | j
                  j                        D ]  }|j                           t        j                  d       d {    	 t        j                  | j                         | j                  j                         d {    | j&                  s#| j(                  j                          d {    y y 7 v7 6# t        j                  $ rc t         j                  dt!        | j
                  j"                               | j
                  j"                  D ]  }|j%                  d        Y w xY w7 w)NzShutting downr   )timeoutz=Cancel %s running task(s), timeout graceful shutdown exceededz2Task cancelled, timeout graceful shutdown exceeded)msg)rV   rW   rw   closelistr2   r   rZ   ru   r   wait_for_wait_tasks_to_completer1   timeout_graceful_shutdownTimeoutErrorr   lenr   cancelr5   rU   )r"   r?   r   rh   
connectionts         r#   rZ   zServer.shutdown  sa    O$ ll 	FLLN	Mr 	DJJL	 t00<<= 	"J!	"mmC   	S"",,.==   --((*** # 	! ## 	SLLOD%%++, &&,, SQRS	S +sU   BF D!F&<D "D#D ')FFFD A3FFFFc                  K   | j                   j                  r| j                  syd}t        j	                  |       | j                   j                  rL| j                  s@t        j                  d       d {    | j                   j                  r| j                  s@| j                   j                  r| j                  syd}t        j	                  |       | j                   j                  rL| j                  s@t        j                  d       d {    | j                   j                  r| j                  s@| j                  D ]  }|j                          d {     y 7 7 S7 w)Nz8Waiting for connections to close. (CTRL+C to force quit)r   z@Waiting for background tasks to complete. (CTRL+C to force quit))
r2   r   r5   rV   rW   ru   r   r   rw   wait_closed)r"   r   r   s      r#   r   zServer._wait_tasks_to_complete9  s    ((LCKK##//mmC((( ##// ""4??TCKK##))$//mmC((( ##))$// ll 	'F$$&&&	' ) ) 'sC   A4E)6E#7&E)A3E)E%&E)9"E)E'E)%E)'E)c              #     K   t        j                         t        j                         urd  y t        D ci c]#  }|t	        j                  || j
                        % }}	 d  |j                         D ]  \  }}t	        j                  ||        	 t        | j                        D ]  }t	        j                  |        y c c}w # |j                         D ]  \  }}t	        j                  ||        w xY wwrF   )
	threadingcurrent_threadmain_threadHANDLED_SIGNALSsignalhandle_exititemsreversedr7   raise_signal)r"   sigoriginal_handlershandlercaptured_signals        r#   rG   zServer.capture_signalsK  s      ##%Y-B-B-DD Sbb3S&--T5E5E"FFbb	, 1 7 7 9 ,Wc7+,
  ((>(>? 	1O0	1 c !2 7 7 9 ,Wc7+,s)   6C>(C C>#C 'A$C>0C;;C>c                    | j                   j                  |       | j                  r|t        j                  k(  rd| _        y d| _        y )NT)r7   r|   r4   r   SIGINTr5   )r"   r   frames      r#   r   zServer.handle_exit_  s9    %%c*v}} 4"DO#Dr%   )r1   r   r'   r(   )r'   z
int | NonerF   )r?   zlist[socket.socket] | Noner'   r(   )r   zSequence[socket.SocketType]r'   r(   r&   )r   intr'   bool)r'   zGenerator[None, None, None])r   r   r   zFrameType | Noner'   r(   )r)   r*   r+   r$   	functoolscached_propertyr9   rD   rA   rH   rX   r   rY   r   rZ   r   
contextlibcontextmanagerrG   r   r-   r%   r#   r/   r/   C   su    	/ i i
e'U.Zx!F6<+@'$ 1 1&$r%   r/   )9
__future__r   ru   r   r   loggingrP   rx   r:   r   rf   rs   r   r   collections.abcr   r   email.utilsr   typesr   typingr   r	   uvicorn._ansir
   uvicorn._compatr   uvicorn.configr   r   %uvicorn.protocols.http.auto_zttp_implr   uvicorn.protocols.http.h11_implr   %uvicorn.protocols.http.httptools_implr   #uvicorn.protocols.http.zttp_h2_implr    uvicorn.protocols.http.zttp_implr   ,uvicorn.protocols.websockets.websockets_implr   3uvicorn.protocols.websockets.websockets_sansio_implr   )uvicorn.protocols.websockets.wsproto_implr   r   __annotations__r   SIGTERMr   SIGBREAK	getLoggerrV   r   r/   r-   r%   r#   <module>r      s   "     	     
   / "  +  ' 2F;GB=N\D 	
	
	 	 		
 	 	 #	# y 	 MM
NN <<7))O			?	+	= 	=a$ a$r%   