
    gH                         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      Zy)zLow level HTTP server.    N)Any	AwaitableCallableDictListOptional   )AbstractStreamWriter)RawRequestMessage)StreamReader)RequestHandler_RequestFactory_RequestHandler)BaseRequest)Serverc                      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
Z
ed	ee   fd       Zdedej                  d	dfdZ	 ddedee   d	dfdZdededededdd	efdZddZddee   d	dfdZd	efdZy)r   NF)request_factoryhandler_cancellationloophandlerr   r   r   kwargsreturnc                    |xs t        j                         | _        i | _        || _        d| _        || _        |xs | j                  | _        || _	        y )Nr   )
asyncioget_running_loop_loop_connections_kwargsrequests_countrequest_handler_make_requestr   r   )selfr   r   r   r   r   s         G/var/www/openai/venv/lib/python3.12/site-packages/aiohttp/web_server.py__init__zServer.__init__   sU     7W557
EG  &.D$2D2D$8!    c                 H    t        | j                  j                               S N)listr   keys)r"   s    r#   connectionszServer.connections#   s    D%%**,--r%   	transportc                 "    || j                   |<   y r'   )r   )r"   r   r+   s      r#   connection_madezServer.connection_made'   s     &/'"r%   excc                       j                   v r:j                  r j                  j                   fd       y  j                   = y y )Nc                 <    j                   j                  d       S r'   )r   pop)fr   r"   s    r#   <lambda>z(Server.connection_lost.<locals>.<lambda>2   s    d//33GTBr%   )r   _task_handleradd_done_callback)r"   r   r.   s   `` r#   connection_lostzServer.connection_lost,   sH     d'''$$%%77B %%g. (r%   messagepayloadprotocolwritertaskzasyncio.Task[None]c                 6    t        |||||| j                        S r'   )r   r   )r"   r7   r8   r9   r:   r;   s         r#   r!   zServer._make_request7   s     7GXvtTZZPPr%   c                 F    | j                   D ]  }|j                           y r'   )r   close)r"   conns     r#   pre_shutdownzServer.pre_shutdownA   s    %%DJJL &r%   timeoutc                    K   fd| j                   D        }t        j                  |  d {    | j                   j                          y 7 w)Nc              3   @   K   | ]  }|j                          y wr'   )shutdown).0r?   rA   s     r#   	<genexpr>z"Server.shutdown.<locals>.<genexpr>F   s     F4EDw'4Es   )r   r   gatherclear)r"   rA   coross    ` r#   rD   zServer.shutdownE   s@     FD4E4EFnne$$$! 	%s   +AA Ac                    	 t        | fd| j                  i| j                  S # t        $ rS | j                  j	                         D ci c]  \  }}|dv r|| nc c}}w }}}t        | fd| j                  i|cY S w xY w)Nr   )debugaccess_log_class)r   r   r   	TypeErroritems)r"   kvr   s       r#   __call__zServer.__call__J   s    		C!$HTZZH4<<HH 	C !LL..00DAq55 10F 
 "$BTZZB6BB	Cs   !$ &B 
A"B ?B r'   )r   N)__name__
__module____qualname__r   r   r   boolr   AbstractEventLoopr   r$   propertyr   r   r*   	Transportr-   BaseExceptionr6   r   r   r
   r   r!   r@   floatrD   rQ    r%   r#   r   r      s8   
 6:%*489 9 "/2	9
 #9 w0019 9 
9& .T.1 . ./%/292C2C/	/ GK	/%	/,4],C	/		/Q"Q Q !	Q
 %Q #Q 
Q"huo " "

C. 
Cr%   r   )__doc__r   typingr   r   r   r   r   r   abcr
   http_parserr   streamsr   web_protocolr   r   r   web_requestr   __all__r   r[   r%   r#   <module>rd      s6      A A % * ! J J $
EC ECr%   