
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
U
    'â7`º+  ã                   @   s4  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
 d dlmZ ddlmZ ddlmZ zd dlmZ W n ek
rŒ   eZY nX d	ZG d
d„ deƒZd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)ÚAnyÚListÚOptionalÚSet)ÚURLé   )Ú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   úE/opt/alt/python38/lib64/python3.8/site-packages/aiohttp/web_runner.pyr      s   r   ©Úreturnc                   C   s
   t ƒ ‚d S ©N)r   r   r   r   r   Ú_raise_graceful_exit#   s    r   c                   @   sj   e Zd ZdZddddœdeee eddœdd	„Ze	e
ed
œdd„ƒƒZe
dd
œdd„ƒZdd
œdd„ZdS )r   )Ú_runnerÚ_shutdown_timeoutÚ_ssl_contextÚ_backlogÚ_serverç      N@Né€   ©Úshutdown_timeoutÚssl_contextÚbacklogr   )Úrunnerr(   r)   r*   r   c                C   s4   |j d krtdƒ‚|| _|| _|| _|| _d | _d S )Nz(Call runner.setup() before making a site)ÚserverÚRuntimeErrorr    r!   r"   r#   r$   )Úselfr+   r(   r)   r*   r   r   r   Ú__init__*   s    
zBaseSite.__init__r   c                 C   s   d S r   r   ©r.   r   r   r   Úname:   s    zBaseSite.namec                 Ã   s   | j  | ¡ d S r   )r    Ú	_reg_siter0   r   r   r   Ústart?   s    zBaseSite.startc                 Ã   sŽ   | j  | ¡ | jd kr&| j  | ¡ d S | j ¡  t| jdƒrL| j ¡ I d H  | j  ¡ I d H  | j jsht	‚| j j | j
¡I d H  | j  | ¡ d S )NÚwait_closed)r    Ú_check_siter$   Ú_unreg_siteÚcloseÚhasattrr4   Úshutdownr,   ÚAssertionErrorr!   r0   r   r   r   ÚstopC   s    

zBaseSite.stop)r   r   r   Ú	__slots__Úfloatr   r   Úintr/   Úpropertyr   Ústrr1   r3   r;   r   r   r   r   r   '   s"   úùr   c                       s~   e Zd ZdZdddddddœdee ee eee eee	 ee	 ddœ	‡ fdd	„Z
eed
œdd„ƒZd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*   rE   rF   r   c          	         sF   t ƒ j||||d� || _|d kr0| jr,dnd}|| _|| _|| _d S )Nr'   iû   i�  )Úsuperr/   rA   r"   rB   rC   rD   )	r.   r+   rG   rH   r(   r)   r*   rE   rF   ©Ú	__class__r   r   r/   U   s    üzTCPSite.__init__r   c                 C   s8   | j r
dnd}| jd krdn| j}ttj||| jd�ƒS )NÚhttpsÚhttpz0.0.0.0©ÚschemerG   rH   )r"   rA   r@   r   ÚbuildrB   )r.   rO   rG   r   r   r   r1   n   s    zTCPSite.namec              	   ƒ   s\   t ƒ  ¡ I d H  t ¡ }| jj}|d k	s,t‚|j|| j| j	| j
| j| j| jd�I d H | _d S )N)Ússlr*   rE   rF   )rI   r3   ÚasyncioÚget_event_loopr    r,   r:   Úcreate_serverrA   rB   r"   r#   rC   rD   r$   ©r.   Úloopr,   rJ   r   r   r3   t   s    ùzTCPSite.start)NN)r   r   r   r<   r   r@   r>   r=   r   Úboolr/   r?   r1   r3   Ú__classcell__r   r   rJ   r   r   R   s.     üöõr   c                       sb   e Zd ZdZddddœdeeee eddœ‡ fdd	„Z	e
ed
œdd„ƒZd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'   )rI   r/   rZ   )r.   r+   r[   r(   r)   r*   rJ   r   r   r/   ‡   s    	üzUnixSite.__init__r   c                 C   s    | j r
dnd}|› d| j› d�S )NrL   rM   ú://unix:ú:)r"   rZ   )r.   rO   r   r   r   r1   ˜   s    zUnixSite.namec                 ƒ   sP   t ƒ  ¡ I d H  t ¡ }| jj}|d k	s,t‚|j|| j| j	| j
d�I d H | _d S )N)rQ   r*   )rI   r3   rR   rS   r    r,   r:   Zcreate_unix_serverrZ   r"   r#   r$   rU   rJ   r   r   r3   �   s       ÿzUnixSite.start)r   r   r   r<   r@   r=   r   r   r>   r/   r?   r1   r3   rX   r   r   rJ   r   r   „   s   ùør   c                       sV   e Zd ZdZddœdeeddœ‡ fdd„Zeed	œd
d„ƒZdd	œ‡ fdd„Z	‡  Z
S )r   rY   r%   ©r(   r   N)r+   r[   r(   r   c                   s6   t  ¡ }t|t jƒstdƒ‚tƒ j||d� || _d S )Nz8Named Pipes only available in proactorloop under windowsr^   )rR   rS   Ú
isinstanceZProactorEventLoopr-   rI   r/   rZ   )r.   r+   r[   r(   rV   rJ   r   r   r/   ª   s    ÿzNamedPipeSite.__init__r   c                 C   s   | j S r   rY   r0   r   r   r   r1   µ   s    zNamedPipeSite.namec                 ƒ   sN   t ƒ  ¡ I d H  t ¡ }| jj}|d k	s,t‚| || j¡I d H }|d | _	d S )Nr   )
rI   r3   rR   rS   r    r,   r:   Zstart_serving_piperZ   r$   )r.   rV   r,   r$   rJ   r   r   r3   ¹   s    zNamedPipeSite.start)r   r   r   r<   r@   r=   r/   r?   r1   r3   rX   r   r   rJ   r   r   §   s   ÿ  þr   c                       sd   e Zd ZdZddddœdejeee eddœ‡ fdd	„Z	e
ed
œdd„ƒZd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ƒrT|jtjkrT|› d| ¡ › d�}n(| ¡ d d… \}}	t	t
j|||	d�ƒ}|| _d S )	Nr'   rL   rM   ÚAF_UNIXr\   r]   é   rN   )rI   r/   r`   r"   r8   ÚsocketÚfamilyrc   Úgetsocknamer@   r   rP   ra   )
r.   r+   rb   r(   r)   r*   rO   r1   rG   rH   rJ   r   r   r/   Å   s    	üzSockSite.__init__r   c                 C   s   | j S r   )ra   r0   r   r   r   r1   Ý   s    zSockSite.namec                 ƒ   sP   t ƒ  ¡ I d H  t ¡ }| jj}|d k	s,t‚|j|| j| j	| j
d�I d H | _d S )N)rb   rQ   r*   )rI   r3   rR   rS   r    r,   r:   rT   r`   r"   r#   r$   rU   rJ   r   r   r3   á   s       ÿzSockSite.start)r   r   r   r<   re   r=   r   r   r>   r/   r?   r@   r1   r3   rX   r   r   rJ   r   r   Â   s   ùør   c                   @   sì   e Zd ZdZddœeeddœdd„Zeee	 dœd	d
„ƒZ
eee dœdd„ƒZeee dœdd„ƒZddœdd„Zeddœdd„ƒZddœdd„Zee	dœdd„ƒZeddœdd„ƒZeddœdd„Zeddœdd„Zeddœdd„ZdS ) r   ©Ú_handle_signalsÚ_kwargsr$   Ú_sitesF©Úhandle_signalsN)rm   Úkwargsr   c                K   s   || _ || _d | _g | _d S r   rh   )r.   rm   rn   r   r   r   r/   î   s    zBaseRunner.__init__r   c                 C   s   | j S r   )r$   r0   r   r   r   r,   ô   s    zBaseRunner.serverc                 C   sH   g }| j D ]8}|j}|d k	r
|j}|d k	r
|D ]}| | ¡ ¡ q.q
|S r   )rk   r$   ÚsocketsÚappendrg   )r.   ÚretÚsiter,   ro   rb   r   r   r   Ú	addressesø   s    
zBaseRunner.addressesc                 C   s
   t | jƒS r   )Úsetrk   r0   r   r   r   Úsites  s    zBaseRunner.sitesc                 Ã   sX   t  ¡ }| jrDz | tjt¡ | tjt¡ W n tk
rB   Y nX |  	¡ I d H | _
d S r   )rR   rS   ri   Zadd_signal_handlerÚsignalÚSIGINTr   ÚSIGTERMÚNotImplementedErrorÚ_make_serverr$   ©r.   rV   r   r   r   Úsetup  s    zBaseRunner.setupc                 Ã   s   d S r   r   r0   r   r   r   r9     s    zBaseRunner.shutdownc                 Ã   s„   t  ¡ }| jd krd S t| jƒD ]}| ¡ I d H  q |  ¡ I d H  d | _| jr€z| t	j
¡ | t	j¡ W n tk
r~   Y nX d S r   )rR   rS   r$   Úlistrk   r;   Ú_cleanup_serverri   Zremove_signal_handlerrv   rw   rx   ry   )r.   rV   rr   r   r   r   Úcleanup  s    
zBaseRunner.cleanupc                 Ã   s   d S r   r   r0   r   r   r   rz   0  s    zBaseRunner._make_serverc                 Ã   s   d S r   r   r0   r   r   r   r~   4  s    zBaseRunner._cleanup_server)rr   r   c                 C   s.   || j krtd|› d| › �ƒ‚| j  |¡ d S )NúSite z! is already registered in runner )rk   r-   rp   ©r.   rr   r   r   r   r2   8  s    
zBaseRunner._reg_sitec                 C   s"   || j krtd|› d| › �ƒ‚d S ©Nr€   z is not registered in runner )rk   r-   r�   r   r   r   r5   =  s    
zBaseRunner._check_sitec                 C   s.   || j krtd|› d| › �ƒ‚| j  |¡ d S r‚   )rk   r-   Úremover�   r   r   r   r6   A  s    
zBaseRunner._unreg_site)r   r   r   r<   rW   r   r/   r?   r   r   r,   r   rs   r   r   ru   r|   r   r9   r   rz   r~   r2   r5   r6   r   r   r   r   r   ë   s&   r   c                       s`   e Zd ZdZdZddœeeeddœ‡ fdd„Zdd	œd
d„Z	ed	œdd„Z
dd	œdd„Z‡  ZS )r   zLow-level web server runner©Ú_web_serverFrl   N)Ú
web_serverrm   rn   r   c                   s    t ƒ jf d|i|—Ž || _d S )Nrm   )rI   r/   r…   )r.   r†   rm   rn   rJ   r   r   r/   L  s    zServerRunner.__init__r   c                 Ã   s   d S r   r   r0   r   r   r   r9   R  s    zServerRunner.shutdownc                 Ã   s   | j S r   r„   r0   r   r   r   rz   U  s    zServerRunner._make_serverc                 Ã   s   d S r   r   r0   r   r   r   r~   X  s    zServerRunner._cleanup_server)r   r   r   Ú__doc__r<   r   rW   r   r/   r9   rz   r~   rX   r   r   rJ   r   r   G  s   ÿ  þr   c                       sr   e Zd ZdZdZddœeeeddœ‡ fdd„Ze	ed	œd
d„ƒZ
dd	œdd„Zed	œdd„Zdd	œdd„Z‡  ZS )r   zWeb Application runner©Ú_appFrl   N)Úapprm   rn   r   c                   s8   t ƒ jf d|i|—Ž t|tƒs.td |¡ƒ‚|| _d S )Nrm   z?The first argument should be web.Application instance, got {!r})rI   r/   r_   r
   Ú	TypeErrorÚformatr‰   )r.   rŠ   rm   rn   rJ   r   r   r/   a  s    
ÿÿzAppRunner.__init__r   c                 C   s   | j S r   rˆ   r0   r   r   r   rŠ   l  s    zAppRunner.appc                 Ã   s   | j  ¡ I d H  d S r   )r‰   r9   r0   r   r   r   r9   p  s    zAppRunner.shutdownc                 Ã   sR   t  ¡ }| j |¡ | jj ¡  | j ¡ I d H  | j ¡  | jjf d|i| j—ŽS )NrV   )	rR   rS   r‰   Z	_set_loopZ
on_startupZfreezeZstartupZ_make_handlerrj   r{   r   r   r   rz   s  s    
zAppRunner._make_serverc                 Ã   s   | j  ¡ I d H  d S r   )r‰   r   r0   r   r   r   r~   |  s    zAppRunner._cleanup_server)r   r   r   r‡   r<   r
   rW   r   r/   r?   rŠ   r9   r   rz   r~   rX   r   r   rJ   r   r   \  s   ÿ  þ	r   )!rR   rv   re   Úabcr   r   Útypingr   r   r   r   Zyarlr   Zweb_appr
   r†   r   rQ   r   ÚImportErrorÚobjectÚ__all__Ú
SystemExitr   r   r   r   r   r   r   r   r   r   r   r   r   r   Ú<module>   s,   
+2#)\