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   )SyncLockSyncSocketStreamSyncBackend)URLHeadersOriginTimeoutDict)
get_loggerurl_to_origin   )SyncByteStreamSyncHTTPTransportConnectionStateNewConnectionRequired)SyncHTTP2Connection)SyncHTTP11Connectionc                   @   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 )&SyncHTTPConnectionFN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/_sync/connection.py__init__   s   zSyncHTTPConnection.__init__returnc                 C   s   t | ds| j | _| jS )N_request_lock)hasattrr$   create_lockr*   r%   r&   r&   r'   request_lock*   s   
zSyncHTTPConnection.request_lockmethodurlheadersstreamtimeoutc                 C   s   t || jks	J | j= | jtjkr+| js$td| j| | 	|| _| 
| j n| jtjtjfv r5n| jtjkr?| jr?nt W d    n1 sLw   Y  | jd usXJ td||| | j|||||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SyncHTTPConnection.requestc                 C   sZ   | j \}}}|d u ri n|}|dkr| jnd }z
| j||||W S  ty,   d| _ w )Ns   httpsT)r   r   r$   open_tcp_stream	Exceptionr"   )r%   r3   schemehostnameportr   r&   r&   r'   r8   P   s   zSyncHTTPConnection._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%SyncHTTPConnection._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SyncHTTPConnection.statec                 C   s   | j d uo	| j  S rE   )r   is_connection_droppedr-   r&   r&   r'   rG   t   s   z(SyncHTTPConnection.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 SyncHTTPConnection.mark_as_readyrA   c                 C   sF   | j d ur!td|| | j || 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SyncHTTPConnection.start_tlsc                 C   sP   | j  | jd ur| j  W d    d S W d    d S 1 s!w   Y  d S rE   )r.   r   closer-   r&   r&   r'   rJ      s   
"zSyncHTTPConnection.close)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    