o
    Zh
                     @   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 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)get_running_loop)RawRequestMessage)StreamReader)RequestHandler_RequestFactory_RequestHandler)BaseRequest)Serverc                   @   s   e Zd Zdddddedee dedeej 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e 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e 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   s8   t || _i | _|| _d| _|| _|p| j| _|| _d S )Nr   )	r
   _loop_connections_kwargsZrequests_countZrequest_handler_make_requestr   r   )selfr   r   r   r   r    r   I/var/www/html/lang_env/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                 C   s   || j v r| j |= d S d S r    r%   )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   r)   r*   r+   r,   r-   r   r   r   r   0   s   zServer._make_requestc                 C   s   | j D ]}|  qd S r    )r   close)r   connr   r   r   pre_shutdown:   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).0r/   r1   r   r   	<genexpr>?   s    z"Server.shutdown.<locals>.<genexpr>)r   asynciogatherclear)r   r1   Zcorosr   r4   r   r2   >   s   zServer.shutdownc                 C   sX   zt | fd| ji| jW S  ty+   dd | j D }t | fd| ji| Y S w )Nr   c                 S   s   i | ]\}}|d v r||qS ))debugZaccess_log_classr   )r3   kvr   r   r   
<dictcomp>H   s
    z#Server.__call__.<locals>.<dictcomp>)r   r   r   	TypeErroritems)r   r   r   r   r   __call__C   s   zServer.__call__r    )r   N)__name__
__module____qualname__r   r   r   boolr6   AbstractEventLoopr   r   propertyr   r   r#   	Transportr&   BaseExceptionr(   r   r   r	   r   r   r0   floatr2   r?   r   r   r   r   r      sd    





r   )__doc__r6   typingr   r   r   r   r   r   abcr	   helpersr
   Zhttp_parserr   streamsr   Zweb_protocolr   r   r   Zweb_requestr   __all__r   r   r   r   r   <module>   s     