a
     d                     @   s|   d dl Z d dlZd dlZddlmZmZmZmZmZm	Z	m
Z
 ddlmZ ddlmZmZ G dd deZG d	d
 d
eZdS )    N   )ConnectErrorConnectTimeout	ReadErrorReadTimeout
WriteErrorWriteTimeoutmap_exceptions)is_socket_readable   )NetworkBackendNetworkStreamc                   @   s   e Zd ZejddddZdeeje e	dddZ
de	eje ddd	d
ZddddZdejeje eje edddZeejdddZdS )
SyncStreamN)sockreturnc                 C   s
   || _ d S N)_sock)selfr    r   _/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/httpcore/backends/sync.py__init__   s    zSyncStream.__init__)	max_bytestimeoutr   c                 C   sT   t jtt jti}t|( | j| | j|W  d    S 1 sF0    Y  d S r   )	socketr   r   errorr   r	   r   
settimeoutrecv)r   r   r   exc_mapr   r   r   read   s    
zSyncStream.read)bufferr   r   c                 C   sn   |sd S t jtt jti}t|: |rL| j| | j|}||d  }q"W d    n1 s`0    Y  d S r   )	r   r   r   r   r   r	   r   r   send)r   r   r   r   nr   r   r   write   s    
zSyncStream.write)r   c                 C   s   | j   d S r   )r   close)r   r   r   r   r#   '   s    zSyncStream.close)ssl_contextserver_hostnamer   r   c                 C   s   t jtt jti}t|b z | j| |j| j|d}W n0 t	yj } z| 
  |W Y d }~n
d }~0 0 W d    n1 s0    Y  t|S )N)r%   )r   r   r   r   r   r	   r   r   wrap_socket	Exceptionr#   r   )r   r$   r%   r   r   r   excr   r   r   	start_tls*   s    

8zSyncStream.start_tls)infor   c                 C   sf   |dkrt | jtjr| jjS |dkr0| j S |dkrB| j S |dkrP| jS |dkrbt| jS d S )NZ
ssl_objectclient_addrZserver_addrr   Zis_readable)
isinstancer   ssl	SSLSocket_sslobjgetsocknamegetpeernamer
   )r   r*   r   r   r   get_extra_info<   s    


zSyncStream.get_extra_info)N)N)NN)__name__
__module____qualname__r   r   inttypingOptionalfloatbytesr   r"   r#   r-   
SSLContextstrr   r)   Anyr2   r   r   r   r   r      s     r   c                   @   sJ   e Zd Zdeeeje eje edddZ	d	eeje edddZ
dS )
SyncBackendN)hostportr   local_addressr   c           	      C   sl   ||f}|d u rd n|df}t jtt jti}t|  t j|||d}W d    n1 sZ0    Y  t|S )Nr   )source_address)r   r   r   r   r   r	   create_connectionr   )	r   r?   r@   r   rA   addressrB   r   r   r   r   r   connect_tcpK   s    
$zSyncBackend.connect_tcp)pathr   r   c                 C   sd   t jtt jti}t|4 t  t jt j}|| |	| W d    n1 sR0    Y  t
|S r   )r   r   r   r   r   r	   AF_UNIXSOCK_STREAMr   connectr   )r   rF   r   r   r   r   r   r   connect_unix_socket[   s    

(zSyncBackend.connect_unix_socket)NN)N)r3   r4   r5   r<   r6   r7   r8   r9   r   rE   rJ   r   r   r   r   r>   J   s      
r>   )r   r-   r7   _exceptionsr   r   r   r   r   r   r	   _utilsr
   baser   r   r   r>   r   r   r   r   <module>   s   $	8