U
'�7`�+�@s4ddlZddlZddlZddlmZmZddlmZmZm Z m
Z
ddlmZddl
mZddlmZzddlmZWnek
r�eZYnXd ZGd
d�de�Zdd�d
d�ZGdd�de�ZGdd�de�ZGdd�de�ZGdd�de�ZGdd�de�ZGdd�de�ZGdd�de�ZGdd�de�Z dS)�N)�ABC�abstractmethod)�Any�List�Optional�Set)�URL�)�Application)�Server)�
SSLContext) �BaseSite�TCPSite�UnixSite�
NamedPipeSite�SockSite�
BaseRunner� AppRunner�ServerRunner�GracefulExitc@seZdZdZdS)rr N)�__name__�
__module__�__qualname__�code�rr�E/opt/alt/python38/lib64/python3.8/site-packages/aiohttp/web_runner.pyrsr��returncCs
t��dS�N)rrrrr�_raise_graceful_exit#src@sjeZdZdZdddd�deeeedd�dd �Ze e
ed
�dd���Ze
dd
�d
d��Z
dd
�dd�ZdS)r
)�_runner�_shutdown_timeout�_ssl_context�_backlog�_server�N@N���shutdown_timeout�ssl_context�backlogr)�runnerr(r)r*rcCs4|jdkrtd��||_||_||_||_d|_dS)Nz(Call runner.setup() before making a site)�server�RuntimeErrorr r!r"r#r$)�selfr+r(r)r*rrr�__init__*s
zBaseSite.__init__rcCsdSrr�r.rrr�name:sz
BaseSite.namec�s|j�|�dSr)r � _reg_siter0rrr�start?szBaseSite.startc�s�|j�|�|jdkr&|j�|�dS|j��t|jd�rL|j��IdH|j��IdH|jjsht �|jj�|j
�IdH|j�|�dS)N�wait_closed)r �_check_siter$�_unreg_site�close�hasattrr4�shutdownr,�AssertionErrorr!r0rrr�stopCs
z
BaseSite.stop)rrr� __slots__�floatrr�intr/�propertyr�strr1r3r;rrrrr
's"��r
cs~eZdZdZddddddd�deeeeeeeeee ee dd� �fdd �Z
eed
�dd��Zdd
��fd
d�Z
�ZS)r)�_host�_port�_reuse_address�_reuse_portNr%r&)r(r)r*�
reuse_address�
reuse_portr) r+�host�portr(r)r*rErFrc sFt�j||||d�||_|dkr0|jr,dnd}||_||_||_dS)Nr'i� i�)�superr/rAr"rBrCrD) r.r+rGrHr(r)r*rErF�� __class__rrr/Us�zTCPSite.__init__rcCs8|jr
dnd}|jdkrdn|j}ttj|||jd��S)N�https�httpz0.0.0.0��schemerGrH)r"rAr@r�buildrB)r.rOrGrrrr1nszTCPSite.namec �s\t���IdHt��}|jj}|dk s,t�|j||j|j |j
|j|j|j
d�IdH|_dS)N)�sslr*rErF)rIr3�asyncio�get_event_loopr r,r:�
create_serverrArBr"r#rCrDr$�r.�loopr,rJrrr3ts�z
TCPSite.start)NN)rrrr<rr@r>r=r�boolr/r?r1r3�
__classcell__rrrJrrRs.���rcsbeZdZdZdddd�deeeeedd��fdd �Z e
ed
�dd��Zdd
��fd
d�Z�Z
S)r��_pathr%Nr&r'r)r+�pathr(r)r*rcst�j||||d�||_dS)Nr')rIr/rZ)r.r+r[r(r)r*rJrrr/�s �zUnixSite.__init__rcCs |jr
dnd}|�d|j�d�S)NrLrM�://unix:�:)r"rZ)r.rOrrrr1�sz
UnixSite.namec�sPt���IdHt��}|jj}|dk s,t�|j||j|j |j
d�IdH|_dS)N)rQr*)rIr3rRrSr r,r:Zcreate_unix_serverrZr"r#r$rUrJrrr3�s�zUnixSite.start)rrrr<r@r=rrr>r/r?r1r3rXrrrJrr�s��rcsVeZdZdZdd�deedd��fdd�Zeed �d
d��Zdd ��fdd
�Z �Z
S)rrYr%�r(rN)r+r[r(rcs6t��}t|tj�std��t�j||d�||_dS)Nz8Named Pipes only available in proactorloop under windowsr^)rRrS�
isinstanceZProactorEventLoopr-rIr/rZ)r.r+r[r(rVrJrrr/�s�zNamedPipeSite.__init__rcCs|jSrrYr0rrrr1�szNamedPipeSite.namec�sNt���IdHt��}|jj}|dk s,t�|�||j�IdH}|d|_ dS)Nr)
rIr3rRrSr r,r:Zstart_serving_piperZr$)r.rVr,r$rJrrr3�szNamedPipeSite.start)rrrr<r@r=r/r?r1r3rXrrrJrr�s��rcsdeZdZdZdddd�dejeeeedd��fdd �Z e
ed
�dd��Zdd
��fd
d�Z
�ZS)r)�_sock�_namer%Nr&r'r)r+�sockr(r)r*rc
s�t�j||||d�||_|jr$dnd}ttd�rT|jtjkrT|�d|���d�}n(|��dd�\}} t t
j||| d��}||_dS) Nr'rLrM�AF_UNIXr\r]�rN)
rIr/r`r"r8�socketZfamilyrc�getsocknamer@rrPra)
r.r+rbr(r)r*rOr1rGrHrJrrr/�s �zSockSite.__init__rcCs|jSr)rar0rrrr1�sz
SockSite.namec�sPt���IdHt��}|jj}|dk s,t�|j||j|j |j
d�IdH|_dS)N)rbrQr*)rIr3rRrSr r,r:rTr`r"r#r$rUrJrrr3�s�zSockSite.start)rrrr<rer=rrr>r/r?r@r1r3rXrrrJrr�s��rc@s�eZdZdZdd�eedd�dd�Zeee d�d d
��Z
eeed�dd��Zee
ed�d
d��Zdd�dd�Zedd�dd��Zdd�dd�Zee d�dd��Zedd�dd��Zedd�dd�Zedd�dd�Zedd�dd�ZdS) r��_handle_signals�_kwargsr$�_sitesF��handle_signalsN)rl�kwargsrcKs||_||_d|_g|_dSrrg)r.rlrmrrrr/�szBaseRunner.__init__rcCs|jSr)r$r0rrrr,�szBaseRunner.servercCsHg}|jD]8}|j}|dk r
|j}|dk r
|D]}|�|���q.q
|Sr)rjr$�sockets�appendrf)r.Zret�siter,rnrbrrr� addresses�s
zBaseRunner.addressescCs
t|j�Sr)�setrjr0rrr�sitesszBaseRunner.sitesc�sXt��}|jrDz |�tjt�|�tjt�Wntk
rBYnX|� �IdH|_
dSr)rRrSrhZadd_signal_handler�signal�SIGINTr�SIGTERM�NotImplementedError�_make_serverr$�r.rVrrr�setupszBaseRunner.setupc�sdSrrr0rrrr9szBaseRunner.shutdownc�s�t��}|jdkrdSt|j�D]}|��IdHq |��IdHd|_|jr�z|�t j
�|�t j�Wntk
r~YnXdSr)
rRrSr$�listrjr;�_cleanup_serverrhZremove_signal_handlerrtrurvrw)r.rVrprrr�cleanups
zBaseRunner.cleanupc�sdSrrr0rrrrx0szBaseRunner._make_serverc�sdSrrr0rrrr|4szBaseRunner._cleanup_server)rprcCs.||jkrtd|�d|����|j�|�dS)N�Site z! is already registered in runner )rjr-ro�r.rprrrr28s
zBaseRunner._reg_sitecCs"||jkrtd|�d|����dS�Nr~z is not registered in runner )rjr-rrrrr5=s
zBaseRunner._check_sitecCs.||jkrtd|�d|����|j�|�dSr�)rjr-�removerrrrr6As
zBaseRunner._unreg_site)rrrr<rWrr/r?rrr,rrqrr
rsrzrr9r}rxr|r2r5r6rrrrr�s&
rcs`eZdZdZdZdd�eeedd��fdd�Zdd �d
d�Z ed �dd
�Z
dd �dd�Z�ZS)rzLow-level web server runner��_web_serverFrkN)�
web_serverrlrmrcs t�jfd|i|��||_dS)Nrl)rIr/r�)r.r�rlrmrJrrr/LszServerRunner.__init__rc�sdSrrr0rrrr9RszServerRunner.shutdownc�s|jSrr�r0rrrrxUszServerRunner._make_serverc�sdSrrr0rrrr|XszServerRunner._cleanup_server)
rrr�__doc__r<rrWrr/r9rxr|rXrrrJrrGs��rcsreZdZdZdZdd�eeedd��fdd�Ze ed �d
d��Z
dd �dd
�Zed �dd�Z
dd �dd�Z�ZS)rzWeb Application runner��_appFrkN)�apprlrmrcs8t�jfd|i|��t|t�s.td�|���||_dS)Nrlz?The first argument should be web.Application instance, got {!r})rIr/r_r
� TypeError�formatr�)r.r�rlrmrJrrr/as
��zAppRunner.__init__rcCs|jSrr�r0rrrr�lsz
AppRunner.appc�s|j��IdHdSr)r�r9r0rrrr9pszAppRunner.shutdownc�sRt��}|j�|�|jj��|j��IdH|j��|jjfd|i|j��S)NrV) rRrSr�Z _set_loopZ
on_startupZfreezeZstartupZ
_make_handlerriryrrrrxss
zAppRunner._make_serverc�s|j��IdHdSr)r�r}r0rrrr||szAppRunner._cleanup_server)rrrr�r<r
rWrr/r?r�r9rrxr|rXrrrJrr\s�� r)!rRrtre�abcrr�typingrrrrZyarlrZweb_appr
r�rrQr�ImportError�object�__all__�
SystemExitrrr
rrrrrrrrrrr�<module>s,
+2#)\ |