o
    4˜Žjb  ã                   @   s†   d Z ddlZddlmZ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mZmZ dd	lmZ d
ZG dd„ dƒZdS )zLow level HTTP server.é    N)ÚAnyÚ	AwaitableÚCallableÚDictÚListÚOptionalé   )ÚAbstractStreamWriter)ÚRawRequestMessage)ÚStreamReader)ÚRequestHandlerÚ_RequestFactoryÚ_RequestHandler)ÚBaseRequest)ÚServerc                   @   sà   e Zd ZddddœdededB dedejdB ded	dfd
d„Z	e
d	ee fdd„ƒZdedejd	dfdd„Z	d#dededB d	dfdd„Zdededededdd	efdd„Zd$dd„Zd#dedB d	dfdd „Zd	efd!d"„ZdS )%r   NF)Úrequest_factoryÚhandler_cancellationÚloopÚhandlerr   r   r   ÚkwargsÚreturnc                K   s<   |pt  ¡ | _i | _|| _d| _|| _|p| j| _|| _	d S )Nr   )
ÚasyncioÚget_running_loopÚ_loopÚ_connectionsÚ_kwargsÚrequests_countÚrequest_handlerÚ_make_requestr   r   )Úselfr   r   r   r   r   © r    úO/var/www/kodo/Anonymous/send/lib/python3.10/site-packages/aiohttp/web_server.pyÚ__init__   s   	
zServer.__init__c                 C   s   t | j ¡ ƒS ©N)Úlistr   Úkeys)r   r    r    r!   Úconnections#   s   zServer.connectionsÚ	transportc                 C   s   || j |< d S r#   )r   )r   r   r'   r    r    r!   Úconnection_made'   s   zServer.connection_madeÚexcc                    s:   ˆ ˆj v rˆ jrˆ j ‡ ‡fdd„¡ d S ˆj ˆ = d S d S )Nc                    s   ˆj  ˆ d ¡S r#   )r   Úpop)Úf©r   r   r    r!   Ú<lambda>2   s    z(Server.connection_lost.<locals>.<lambda>)r   Ú_task_handlerÚadd_done_callback)r   r   r)   r    r,   r!   Úconnection_lost,   s   
ÿúzServer.connection_lostÚmessageÚpayloadÚprotocolÚwriterÚtaskzasyncio.Task[None]c                 C   s   t |||||| jƒS r#   )r   r   )r   r1   r2   r3   r4   r5   r    r    r!   r   7   s   zServer._make_requestc                 C   s   | j D ]}| ¡  qd S r#   )r   Úclose)r   Úconnr    r    r!   Úpre_shutdownA   s   

ÿzServer.pre_shutdownÚtimeoutc                 ƒ   s4   �‡ fdd„| j D ƒ}tj|Ž I d H  | j  ¡  d S )Nc                 3   s   � | ]}|  ˆ ¡V  qd S r#   )Úshutdown)Ú.0r7   ©r9   r    r!   Ú	<genexpr>F   s   € z"Server.shutdown.<locals>.<genexpr>)r   r   ÚgatherÚclear)r   r9   Úcorosr    r<   r!   r:   E   s   €zServer.shutdownc                 C   sl   zt | fd| ji| j¤ŽW S  ty5   dd„ | j ¡ D ƒ}t | fd| ji|¤Ž}|j d| j¡ | Y S w )Nr   c                 S   s   i | ]\}}|d v r||“qS ))ÚdebugÚaccess_log_classr    )r;   ÚkÚvr    r    r!   Ú
<dictcomp>O   s
    þz#Server.__call__.<locals>.<dictcomp>z~Failed to create request handler with custom kwargs %r, falling back to filtered kwargs. This may indicate a misconfiguration.)r   r   r   Ú	TypeErrorÚitemsÚloggerÚwarning)r   r   r   r    r    r!   Ú__call__J   s   þüòzServer.__call__r#   )r   N)Ú__name__Ú
__module__Ú__qualname__r   r   Úboolr   ÚAbstractEventLoopr   r"   Úpropertyr$   r   r&   Ú	Transportr(   ÚBaseExceptionr0   r
   r   r	   r   r   r8   Úfloatr:   rJ   r    r    r    r!   r      sd    úþüûúù
øÿÿ
þÿÿÿ
þþýüûú
ù

r   )Ú__doc__r   Útypingr   r   r   r   r   r   Úabcr	   Úhttp_parserr
   Ústreamsr   Úweb_protocolr   r   r   Úweb_requestr   Ú__all__r   r    r    r    r!   Ú<module>   s     