o
    ͷ6i.                     @   s   d dl mZ d dlmZmZmZmZ ddlmZm	Z	m
Z
 ddlmZmZmZmZ ddlmZmZ ddlmZmZmZmZ dd	lmZ dd
lmZ eeZG dd deZdS )    )
SSLContext)ListOptionalTupleUnion   )	AsyncLockAsyncSocketStreamAutoBackend)URLHeadersOriginTimeoutDict)
get_loggerurl_to_origin   )AsyncByteStreamAsyncHTTPTransportConnectionStateNewConnectionRequired)AsyncHTTP2Connection)AsyncHTTP11Connectionc                   @   s   e Zd Z			d"dedededefddZed	e	fd
dZ
			d#dededededed	eeeeeeeef  ef fddZd$ded	efddZded	dfddZed	efddZd	efddZd%ddZd$deded	dfddZd%d d!ZdS )&AsyncHTTPConnectionFNoriginhttp2ssl_contextsocketc                 C   sf   || _ || _|d u rt n|| _|| _| jr| jddg d | _d| _d| _d| _	d | _
t | _d S )Nzhttp/1.1h2F)r   r   r   r   r   set_alpn_protocols
connection	is_http11is_http2connect_failed
expires_atr
   backend)selfr   r   r   r    r&   _/var/www/hoanhtaovolam_webdjango/env/lib/python3.10/site-packages/httpcore/_async/connection.py__init__   s   zAsyncHTTPConnection.__init__returnc                 C   s   t | ds| j | _| jS )N_request_lock)hasattrr$   create_lockr*   r%   r&   r&   r'   request_lock*   s   
z AsyncHTTPConnection.request_lockmethodurlheadersstreamtimeoutc              	      s   t || jks
J | j4 I d H C | jtjkr3| js,td| j| | 	|I d H | _| 
| j n| jtjtjfv r=n| jtjkrG| jrGnt W d   I d H  n1 I d H sZw   Y  | jd usfJ td||| | j|||||I d H S )Nz open_socket origin=%r timeout=%rz.connection.request method=%r url=%r headers=%r)r   r   r.   stater   PENDINGr   loggertrace_open_socket_create_connectionREADYIDLEACTIVEr!   r   r   request)r%   r/   r0   r1   r2   r3   r&   r&   r'   r=   2   s*   (zAsyncHTTPConnection.requestc                    sb   | j \}}}|d u ri n|}|dkr| jnd }z| j||||I d H W S  ty0   d| _ w )Ns   httpsT)r   r   r$   open_tcp_stream	Exceptionr"   )r%   r3   schemehostnameportr   r&   r&   r'   r8   P   s   z AsyncHTTPConnection._open_socketc                 C   sV   |  }td|| |dkrd| _t|| j| jd| _d S d| _t	|| jd| _d S )Nz+create_connection socket=%r http_version=%rzHTTP/2T)r   r$   r   )r   r   )
get_http_versionr6   r7   r!   r   r$   r   r   r    r   )r%   r   http_versionr&   r&   r'   r9   \   s   
z&AsyncHTTPConnection._create_connectionc                 C   s$   | j rtjS | jd u rtjS | jjS N)r"   r   CLOSEDr   r5   r4   r-   r&   r&   r'   r4   l   s
   
zAsyncHTTPConnection.statec                 C   s   | j d uo	| j  S rE   )r   is_connection_droppedr-   r&   r&   r'   rG   t   s   z)AsyncHTTPConnection.is_connection_droppedc                 C   s   | j d ur| j   d S d S rE   )r   mark_as_readyr-   r&   r&   r'   rH   w   s   
z!AsyncHTTPConnection.mark_as_readyrA   c                    sN   | j d ur%td|| | j ||I d H  td|| | j j| _d S d S )Nz start_tls hostname=%r timeout=%rz)start_tls complete hostname=%r timeout=%r)r   r6   r7   	start_tlsr   )r%   rA   r3   r&   r&   r'   rI   {   s   
zAsyncHTTPConnection.start_tlsc              	      sr   | j 4 I d H $ | jd ur!| j I d H  W d   I d H  d S W d   I d H  d S 1 I d H s2w   Y  d S rE   )r.   r   acloser-   r&   r&   r'   rJ      s   
.zAsyncHTTPConnection.aclose)FNN)NNNrE   )r)   N)__name__
__module____qualname__r   boolr   r	   r(   propertyr   r.   bytesr   r   r   r   r   intr   r=   r8   r9   r   r4   rG   rH   rI   rJ   r&   r&   r&   r'   r      sN    


r   N)sslr   typingr   r   r   r   _backends.autor   r	   r
   _typesr   r   r   r   _utilsr   r   baser   r   r   r   r   r   http11r   rK   r6   r   r&   r&   r&   r'   <module>   s    