o
    5׾g
                     @   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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   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    \/var/www/html/backend_erp/backend_erp_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                    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>0   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   5   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).0r7   r9   r    r!   	<genexpr>D   s    z"Server.shutdown.<locals>.<genexpr>)r   r   gatherclear)r   r9   corosr    r<   r!   r:   C   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 ))debugaccess_log_classr    )r;   kvr    r    r!   
<dictcomp>M   s
    z#Server.__call__.<locals>.<dictcomp>)r   r   r   	TypeErroritems)r   r   r    r    r!   __call__H   s   zServer.__call__r#   )r   N)__name__
__module____qualname__r   r   r   boolr   AbstractEventLoopr   r"   propertyr   r   r&   	Transportr(   BaseExceptionr0   r
   r   r	   r   r   r8   floatr:   rH   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     