a
    e	gH                     @   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eee eeej e	ddddZ
eee ddd	Zeejdd
ddZdeee ddddZeeeededddZddddZdee ddddZed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   )
asyncioZget_running_loop_loop_connections_kwargsZrequests_countZrequest_handler_make_requestr   r   )selfr   r   r   r   r    r   U/var/www/html/llm_bihealth/app/venv/lib/python3.9/site-packages/aiohttp/web_server.py__init__   s    	zServer.__init__)r   c                 C   s   t | j S N)listr   keys)r   r   r   r   connections#   s    zServer.connections)r   	transportr   c                 C   s   || j |< d S r    )r   )r   r   r$   r   r   r   connection_made'   s    zServer.connection_made)r   excr   c                    s4    j v r0 jr( j fdd nj  = d S )Nc                    s   j  d S r    )r   pop)fr   r   r   r   <lambda>2       z(Server.connection_lost.<locals>.<lambda>)r   Z_task_handlerZadd_done_callback)r   r   r&   r   r)   r   connection_lost,   s    
zServer.connection_lostzasyncio.Task[None])messagepayloadprotocolwritertaskr   c                 C   s   t |||||| jS r    )r   r   )r   r-   r.   r/   r0   r1   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)timeoutr   c                    s2    fdd| j D }tj| I d H  | j   d S )Nc                 3   s   | ]}|  V  qd S r    )shutdown).0r3   r5   r   r   	<genexpr>F   r+   z"Server.shutdown.<locals>.<genexpr>)r   r   Zgatherclear)r   r5   Zcorosr   r8   r   r6   E   s    zServer.shutdownc                 C   s\   zt | fd| ji| jW S  tyV   dd | j D }t | fd| ji| Y S 0 d S )Nr   c                 S   s   i | ]\}}|d v r||qS ))debugZaccess_log_classr   )r7   kvr   r   r   
<dictcomp>O   s   z#Server.__call__.<locals>.<dictcomp>)r   r   r   	TypeErroritems)r   r   r   r   r   __call__J   s    zServer.__call__)N)N)__name__
__module____qualname__r   r   r   boolr   ZAbstractEventLoopr   r   propertyr   r   r#   	Transportr%   BaseExceptionr,   r
   r   r	   r   r   r4   floatr6   rA   r   r   r   r   r      s>    
r   )__doc__r   typingr   r   r   r   r   r   abcr	   Zhttp_parserr
   Zstreamsr   Zweb_protocolr   r   r   Zweb_requestr   __all__r   r   r   r   r   <module>   s    