o
    zsg
.                     @   sX  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m	Z	m
Z
mZmZ d dlmZ ddlmZ ddlmZ ddlmZ erGd d	lmZ nzd d	lmZ W n eyZ   eZY nw d
ZG dd deZd ddZG dd deZG dd deZG dd deZG dd deZ G dd deZ!G dd deZ"G dd de"Z#G dd de"Z$dS )!    N)ABCabstractmethod)TYPE_CHECKINGAnyListOptionalSet)URL   )PathLike)Application)Server)
SSLContext)	BaseSiteTCPSiteUnixSiteNamedPipeSiteSockSite
BaseRunner	AppRunnerServerRunnerGracefulExitc                   @   s   e Zd ZdZdS )r   r
   N)__name__
__module____qualname__code r   r   N/var/www/html/minecraft/env/lib/python3.10/site-packages/aiohttp/web_runner.pyr   #   s    r   returnc                   C   s   t  N)r   r   r   r   r   _raise_graceful_exit'   s   r    c                   @   sj   e Zd ZdZddddddded	ee d
eddf
ddZe	e
defddZe
dddZdddZdS )r   )_runner_ssl_context_backlog_server      N@N   shutdown_timeoutssl_contextbacklogrunnerr   r(   r)   r*   r   c                C   sP   |j d u r	td|dkrd}tj|tdd ||_|| _|| _|| _d | _	d S )Nz(Call runner.setup() before making a siter%   z,shutdown_timeout should be set on BaseRunner   )
stacklevel)
serverRuntimeErrorwarningswarnDeprecationWarning_shutdown_timeoutr!   r"   r#   r$   )selfr+   r(   r)   r*   msgr   r   r   __init__.   s   

zBaseSite.__init__c                 C   s   d S r   r   r4   r   r   r   nameA   s   zBaseSite.namec                    s   | j |  d S r   )r!   	_reg_siter7   r   r   r   startF   s   zBaseSite.startc                    s2   | j |  | jd ur| j  | j |  d S r   )r!   _check_siter$   close_unreg_siter7   r   r   r   stopJ   s
   

zBaseSite.stopr   N)r   r   r   	__slots__floatr   r   intr6   propertyr   strr8   r:   r>   r   r   r   r   r   +   s,    
r   c                       s   e Zd ZdZ		ddddddddddee d	ee d
edee dedee	 dee	 ddf fddZ
edefddZd fddZ  ZS )r   )_host_port_reuse_address_reuse_portNr%   r&   )r(   r)   r*   reuse_address
reuse_portr+   r   hostportr(   r)   r*   rI   rJ   r   c          	         sF   t  j||||d || _|d u r| jrdnd}|| _|| _|| _d S )Nr'   i   i  )superr6   rE   r"   rF   rG   rH   )	r4   r+   rK   rL   r(   r)   r*   rI   rJ   	__class__r   r   r6   U   s   
zTCPSite.__init__c                 C   s4   | j rdnd}| jsdn| j}ttj||| jdS )Nhttpshttpz0.0.0.0schemerK   rL   )r"   rE   rD   r	   buildrF   )r4   rS   rK   r   r   r   r8   n   s   zTCPSite.namec              	      s^   t   I d H  t }| jj}|d usJ |j|| j| j| j	| j
| j| jdI d H | _d S )N)sslr*   rI   rJ   )rM   r:   asyncioget_event_loopr!   r.   create_serverrE   rF   r"   r#   rG   rH   r$   r4   loopr.   rN   r   r   r:   t   s   zTCPSite.start)NNr?   )r   r   r   r@   r   rD   rB   rA   r   boolr6   rC   r8   r:   __classcell__r   r   rN   r   r   R   s@    	
r   c                       sh   e Zd ZdZddddddded	ed
ee deddf fddZ	e
defddZd fddZ  ZS )r   _pathr%   Nr&   r'   r+   r   pathr(   r)   r*   r   c                   s   t  j||||d || _d S )Nr'   )rM   r6   r^   )r4   r+   r_   r(   r)   r*   rN   r   r   r6      s   	
zUnixSite.__init__c                 C   s    | j rdnd}| d| j dS )NrP   rQ   ://unix::)r"   r^   )r4   rS   r   r   r   r8      s   zUnixSite.namec                    R   t   I d H  t }| jj}|d usJ |j|| j| j| j	dI d H | _
d S )N)rU   r*   )rM   r:   rV   rW   r!   r.   create_unix_serverr^   r"   r#   r$   rY   rN   r   r   r:      s   zUnixSite.startr?   )r   r   r   r@   r   rA   r   r   rB   r6   rC   rD   r8   r:   r\   r   r   rN   r   r      s*    r   c                	       sX   e Zd ZdZdddddededd	f fd
dZedefddZd fddZ	  Z
S )r   r]   r%   r(   r+   r   r_   r(   r   Nc                   s6   t  }t|t jstdt j||d || _d S )Nz9Named Pipes only available in proactor loop under windowsrd   )rV   rW   
isinstanceProactorEventLoopr/   rM   r6   r^   )r4   r+   r_   r(   rZ   rN   r   r   r6      s   
zNamedPipeSite.__init__c                 C      | j S r   r]   r7   r   r   r   r8         zNamedPipeSite.namec                    sP   t   I d H  t }| jj}|d usJ ||| jI d H }|d | _d S Nr   )	rM   r:   rV   rW   r!   r.   start_serving_piper^   r$   )r4   rZ   r.   r$   rN   r   r   r:      s   
zNamedPipeSite.startr?   )r   r   r   r@   rD   rA   r6   rC   r8   r:   r\   r   r   rN   r   r      s    r   c                       sj   e Zd ZdZdddddddejd	ed
ee deddf fddZ	e
defddZd fddZ  ZS )r   )_sock_namer%   Nr&   r'   r+   r   sockr(   r)   r*   r   c          
         s   t  j||||d || _| jrdnd}ttdr*|jtjkr*| d|  d}n| d d \}}	t	t
j|||	d}|| _d S )	Nr'   rP   rQ   AF_UNIXr`   ra   r,   rR   )rM   r6   rk   r"   hasattrsocketfamilyrn   getsocknamerD   r	   rT   rl   )
r4   r+   rm   r(   r)   r*   rS   r8   rK   rL   rN   r   r   r6      s   	
zSockSite.__init__c                 C   rg   r   )rl   r7   r   r   r   r8      rh   zSockSite.namec                    rb   )N)rm   rU   r*   )rM   r:   rV   rW   r!   r.   rX   rk   r"   r#   r$   rY   rN   r   r   r:      s   zSockSite.startr?   )r   r   r   r@   rp   rA   r   r   rB   r6   rC   rD   r8   r:   r\   r   r   rN   r   r      s*    r   c                	   @   s   e Zd ZdZddddedededd	fd
dZede	e
 fddZedee fddZedee fddZd#ddZed#ddZd#ddZede
fddZed#ddZdedd	fddZdedd	fdd Zdedd	fd!d"Zd	S )$r   _handle_signals_kwargsr$   _sitesr3   Fr%   )handle_signalsr(   rw   r(   kwargsr   Nc                K   s"   || _ || _d | _g | _|| _d S r   rs   )r4   rw   r(   rx   r   r   r   r6      s
   
zBaseRunner.__init__c                 C   rg   r   )r$   r7   r   r   r   r.     rh   zBaseRunner.serverc                 C   sH   g }| j D ]}|j}|d ur!|j}|d ur!|D ]	}||  qq|S r   )rv   r$   socketsappendrr   )r4   retsiter.   ry   rm   r   r   r   	addresses  s   
zBaseRunner.addressesc                 C   s
   t | jS r   )setrv   r7   r   r   r   sites  s   
zBaseRunner.sitesc                    sX   t  }| jr"z|tjt |tjt W n	 ty!   Y nw | 	 I d H | _
d S r   )rV   rW   rt   add_signal_handlersignalSIGINTr    SIGTERMNotImplementedError_make_serverr$   r4   rZ   r   r   r   setup  s   zBaseRunner.setupc                    s   dS )z8Call any shutdown hooks to help server close gracefully.Nr   r7   r   r   r   shutdown#  s    zBaseRunner.shutdownc                    s   t | jD ]	}| I d H  q| jr1tdI d H  | j  |  I d H  | j| jI d H  | 	 I d H  d | _| j
r\t }z|tj |tj W d S  ty[   Y d S w d S ri   )listrv   r>   r$   rV   sleeppre_shutdownr   r3   _cleanup_serverrt   get_running_loopremove_signal_handlerr   r   r   r   )r4   r|   rZ   r   r   r   cleanup'  s&   
zBaseRunner.cleanupc                       d S r   r   r7   r   r   r   r   B     zBaseRunner._make_serverc                    r   r   r   r7   r   r   r   r   F  r   zBaseRunner._cleanup_serverr|   c                 C   s.   || j v rtd| d|  | j | d S )NSite z! is already registered in runner )rv   r/   rz   r4   r|   r   r   r   r9   J     
zBaseRunner._reg_sitec                 C   s"   || j vrtd| d|  d S Nr   z is not registered in runner )rv   r/   r   r   r   r   r;   O  s   
zBaseRunner._check_sitec                 C   s.   || j vrtd| d|  | j | d S r   )rv   r/   remover   r   r   r   r=   S  r   zBaseRunner._unreg_siter?   )r   r   r   r@   r[   rA   r   r6   rC   r   r   r.   r   r}   r   r   r   r   r   r   r   r   r   r9   r;   r=   r   r   r   r   r      s<    


r   c                	       s^   e Zd ZdZdZdddedededd	f fd
dZdddZ	defddZ
dddZ  ZS )r   zLow-level web server runner_web_serverFrw   
web_serverrw   rx   r   Nc                   s    t  jdd|i| || _d S )Nrw   r   )rM   r6   r   )r4   r   rw   rx   rN   r   r   r6   ^  s   
zServerRunner.__init__c                    r   r   r   r7   r   r   r   r   d     zServerRunner.shutdownc                    s   | j S r   r   r7   r   r   r   r   g  s   zServerRunner._make_serverc                    r   r   r   r7   r   r   r   r   j  r   zServerRunner._cleanup_serverr?   )r   r   r   __doc__r@   r   r[   r   r6   r   r   r   r\   r   r   rN   r   r   Y  s     
r   c                	       sp   e Zd ZdZdZdddedededd	f fd
dZe	defddZ
dddZdefddZdddZ  ZS )r   zWeb Application runner_appFr   apprw   rx   r   Nc                   s8   t  jdd|i| t|tstd||| _d S )Nrw   z?The first argument should be web.Application instance, got {!r}r   )rM   r6   re   r   	TypeErrorformatr   )r4   r   rw   rx   rN   r   r   r6   s  s   

zAppRunner.__init__c                 C   rg   r   r   r7   r   r   r   r   ~  rh   zAppRunner.appc                       | j  I d H  d S r   )r   r   r7   r   r   r   r        zAppRunner.shutdownc                    sT   t  }| j| | jj  | j I d H  | j  | jjdd|i| jS )NrZ   r   )	rV   rW   r   	_set_loop
on_startupfreezestartup_make_handlerru   r   r   r   r   r     s   
zAppRunner._make_serverc                    r   r   )r   r   r7   r   r   r   r     r   zAppRunner._cleanup_serverr?   )r   r   r   r   r@   r   r[   r   r6   rC   r   r   r   r   r   r\   r   r   rN   r   r   n  s$    
	r   r?   )%rV   r   rp   r0   abcr   r   typingr   r   r   r   r   yarlr	   typedefsr   web_appr   r   r   rU   r   ImportErrorobject__all__
SystemExitr   r    r   r   r   r   r   r   r   r   r   r   r   r   <module>   s8    
'2&)g