U
    ){f                     @  s$  d dl mZ d dlZd dlmZ d dlmZ d dlm	Z	 d dl
mZmZmZ d dl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mZ ddl
mZmZmZ ddlm Z m!Z!m"Z"m#Z#m$Z$ ej%dk rd dl&m'Z' ddej(ddddddddddZ)d!ddddddd Z*dS )"    )annotationsN)partial)Event)randint)	AwaitableCallableOptional   )Lifespan)StatsdLogger)	TCPServer)	UDPServer)WorkerContext   )ConfigSockets)
AppWrapperConnectionStateLifespanState)!check_multiprocess_shutdown_eventload_applicationraise_shutdownrepr_socket_addrShutdownError)      )BaseExceptionGroup)socketsshutdown_triggertask_statusr   r   zOptional[Sockets]z(Optional[Callable[..., Awaitable[None]]]ztrio._core._run._TaskStatusNone)appconfigr   r   r   returnc                  sB  | t i }t| ||}d }|jd k	r:|jtd|j }t|}t 4 I d H }	|		|j
I d H  | I d H  t 4 I d H }
|d kr| }|jD ]}||j q|jD ]}||j q| }g }g }|jD ]b}|tjttj||dd t|j| }|d|  |jd| dI d H  q|jD ]X}|ttj| t|j| }|d|  |jd| dI d H  qJ|jD ]V}|
	t| ||t| |j I d H  t|j| }|jd| d	I d H  q|!| zztjdd
4 I d H f}|d k	r<|(t)| |(t)|j*j+ |(t,tj-t,t.| ||t| ||
d t/ I d H  W 5 Q I d H R X W nD t0k
r } z$|1t2t3f\}}|d k	r|W 5 d }~X Y nX W 5 |j"# I d H  t$ |j% |
j&_'X W 5 Q I d H R X |4 I d H  |	j&5  W 5 Q I d H R X d S )Nr   T)Zhttps_compatiblezhttps://zRunning on https://z (CTRL + C to quit)zhttp://zRunning on http://z (QUIC) (CTRL + C to quit))Zstrict_exception_groups)Zhandler_nursery)6Zset_statsd_logger_classr   r
   max_requestsr   Zmax_requests_jitterr   trioZopen_nurserystartZhandle_lifespanZwait_for_startupZcreate_socketssecure_socketslistenbackloginsecure_socketsZcreate_ssl_contextappendZSSLListenerZSocketListenersocketZfrom_stdlib_socketr   familygetsocknameloginfoZquic_socketsr   r   copyrunstartedZ
terminatedsetcurrent_timeZgraceful_timeoutZcancel_scopedeadlineZ
start_soonr   	terminatewaitr   Zserve_listenersr   Zsleep_foreverr   splitr   KeyboardInterruptZwait_for_shutdowncancel)r!   r"   r   r   r   Zlifespan_statelifespanr$   contextZlifespan_nurseryZserver_nurserysockssl_contextZ	listenersZbindsbindZnurseryerror_Zother_errors rC   Q/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/hypercorn/trio/run.pyworker_serve   s    






   
 



"
$rE   zOptional[EventType])r"   r   shutdown_eventr#   c              	   C  s|   |d k	r8|j D ]}|| j q|jD ]}|| j q&t| j| j}d }|d k	r`tt|t	j
}t	tt|| ||d d S )N)r   r   )r'   r(   r)   r*   r   Zapplication_pathZwsgi_max_body_sizer   r   r%   sleepr2   rE   )r"   r   rF   r>   r!   r   rC   rC   rD   trio_worker|   s    

rH   )NN)+
__future__r   sys	functoolsr   Zmultiprocessing.synchronizer   Z	EventTyperandomr   typingr   r   r   r%   r<   r
   Zstatsdr   Z
tcp_serverr   Z
udp_serverr   Zworker_contextr   r"   r   r   r   r   r   utilsr   r   r   r   r   version_infoZexceptiongroupr   ZTASK_STATUS_IGNOREDrE   rH   rC   rC   rC   rD   <module>   s.   
_   