B
    `)                 @   s   d dl 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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 eeZG d
d deZdS )    )
SSLContext)OptionalTuplecast   )SyncBackendSyncLockSyncSocketStreamr   )URLHeadersOriginTimeoutDict)
get_loggerurl_to_origin   )SyncByteStreamSyncHTTPTransportConnectionStateNewConnectionRequired)SyncBaseHTTPConnectionc               @   s   e Zd Zd!eeeeeeedddZ	edddZ
edd	d
ZeedddZd"eeeeeeeeeef dddZd#eedddZeddddZeedddZedddZddddZd$eeddddZdddd ZdS )%SyncHTTPConnectionFN)originhttp2udsssl_contextsocketlocal_addressbackendc             C   s~   || _ || _|| _|d kr t n|| _|| _|| _| jrH| jddg d | _d| _	d| _
d| _d | _|d krtt n|| _d S )Nzhttp/1.1h2F)r   r   r   r   r   r   r   set_alpn_protocols
connection	is_http11is_http2connect_failedZ
expires_atr   r   )selfr   r   r   r   r   r   r    r%   H/home/dcms/DCMS/lib/python3.7/site-packages/httpcore/_sync/connection.py__init__   s    
zSyncHTTPConnection.__init__)returnc             C   s.   d}| j rd}n
| jrd}d| d| j dS )NUNKNOWNzHTTP/1.1zHTTP/2z!<SyncHTTPConnection http_version=z state=>)r!   r"   state)r$   http_versionr%   r%   r&   __repr__.   s    zSyncHTTPConnection.__repr__c             C   s(   | j d krdS | jtjkrdS | j  S )NzNot connectedZ
Connecting)r    r+   r   PENDINGinfo)r$   r%   r%   r&   r/   6   s
    
zSyncHTTPConnection.infoc             C   s   t | ds| j | _| jS )N_request_lock)hasattrr   Zcreate_lockr0   )r$   r%   r%   r&   request_lock=   s    
zSyncHTTPConnection.request_lock)methodurlheadersstreamextr(   c          	   C   s   t || jkst|d kri n|}tt|di }| jp | jtj	krx| j
sjtd| j| | || _
| | j
 n.| jtjtjfkrn| jtjkr| jrnt W d Q R X | jd k	sttd||| | j|||||S )Ntimeoutz open_socket origin=%r timeout=%rz.connection.request method=%r url=%r headers=%r)r   r   AssertionErrorr   r   getr2   r+   r   r.   r   loggertrace_open_socket_create_connectionZREADYZIDLEZACTIVEr"   r   r    request)r$   r3   r4   r5   r6   r7   r8   r%   r%   r&   r?   E   s&    zSyncHTTPConnection.request)r8   r(   c             C   s   | j \}}}|d kri n|}|dkr*| jnd }y:| jd krR| jj||||| jdS | j| j|||S W n tk
r   d| _ Y nX d S )Ns   https)r   T)	r   r   r   r   Zopen_tcp_streamr   Zopen_uds_stream	Exceptionr#   )r$   r8   schemehostnameportr   r%   r%   r&   r=   f   s     

zSyncHTTPConnection._open_socket)r   r(   c             C   sl   |  }td|| |dkrFddlm} d| _||| j| jd| _n"ddl	m
} d| _||| jd| _d S )	Nz+create_connection socket=%r http_version=%rzHTTP/2r   )SyncHTTP2ConnectionT)r   r   r   )SyncHTTP11Connection)r   r   )Zget_http_versionr;   r<   r   rD   r"   r   r   r    Zhttp11rE   r!   )r$   r   r,   rD   rE   r%   r%   r&   r>   {   s    
z%SyncHTTPConnection._create_connectionc             C   s&   | j rtjS | jd krtjS | j S )N)r#   r   ZCLOSEDr    r.   Z	get_state)r$   r%   r%   r&   r+      s
    
zSyncHTTPConnection.statec             C   s   | j d k	o| j  S )N)r    is_connection_dropped)r$   r%   r%   r&   rF      s    z(SyncHTTPConnection.is_connection_droppedc             C   s   | j d k	r| j   d S )N)r    mark_as_ready)r$   r%   r%   r&   rG      s    
z SyncHTTPConnection.mark_as_ready)rB   r8   r(   c             C   s:   | j d k	r6td|| | j ||| _td|| d S )Nz start_tls hostname=%r timeout=%rz)start_tls complete hostname=%r timeout=%r)r    r;   r<   	start_tlsr   )r$   rB   r8   r%   r%   r&   rH      s    
zSyncHTTPConnection.start_tlsc          	   C   s*   | j  | jd k	r| j  W d Q R X d S )N)r2   r    close)r$   r%   r%   r&   rI      s    
zSyncHTTPConnection.close)FNNNNN)NNN)N)N) __name__
__module____qualname__r   boolstrr   r	   r   r'   r-   r/   propertyr   r2   bytesr
   r   r   dictr   intr?   r   r=   r>   r   r+   rF   rG   rH   rI   r%   r%   r%   r&   r      s,          r   N)sslr   typingr   r   r   Z_backends.syncr   r   r	   _typesr
   r   r   r   _utilsr   r   baser   r   r   r   httpr   rJ   r;   r   r%   r%   r%   r&   <module>   s   