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   )AsyncNetworkBackendAsyncNetworkStreamc                   @   s   e Zd Zej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 )AsyncIOStreamN)streamreturnc                 C   s
   || _ d S N)_stream)selfr    r   b/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/httpcore/backends/asyncio.py__init__   s    zAsyncIOStream.__init__)	max_bytestimeoutr   c              
      s   t ttjti}t| t|r z2| jj|dI d H W W  d    W  d    S  tj	y   Y W d    W d    dS 0 W d    n1 s0    Y  W d    n1 s0    Y  d S )N)r       )
TimeoutErrorr   anyioBrokenResourceErrorr   r	   
fail_afterr   ZreceiveZEndOfStream)r   r   r   exc_mapr   r   r   read   s    
2zAsyncIOStream.read)bufferr   r   c              	      s   |sd S t ttjti}t|N t|$ | jj|dI d H  W d    n1 sT0    Y  W d    n1 sr0    Y  d S )N)item)	r   r   r   r   r   r	   r   r   send)r   r    r   r   r   r   r   write%   s    
zAsyncIOStream.write)r   c                    s   | j  I d H  d S r   )r   aclose)r   r   r   r   r$   3   s    zAsyncIOStream.aclose)ssl_contextserver_hostnamer   r   c                    s   t ttjti}t| zPt|2 tjjj	j
| j||dddI d H }W d    n1 s\0    Y  W n6 ty } z|  I d H  |W Y d }~n
d }~0 0 W d    n1 s0    Y  t|S )NF)r%   hostnameZstandard_compatibleserver_side)r   r   r   r   r   r	   r   streamstlsZ	TLSStreamwrapr   	Exceptionr$   r   )r   r%   r&   r   r   Z
ssl_streamexcr   r   r   	start_tls6   s"    

.8zAsyncIOStream.start_tls)infor   c                 C   s   |dkr| j tjjjjd S |dkr:| j tjjj	d S |dkrV| j tjjj
d S |dkrr| j tjjjd S |dkr| j tjjjd }t|S d S )N
ssl_objectclient_addrZserver_addrsocketZis_readable)r   extrar   r)   r*   ZTLSAttributer0   abcZSocketAttributelocal_addressZremote_addressZ
raw_socketr
   )r   r/   sockr   r   r   get_extra_infoO   s    zAsyncIOStream.get_extra_info)N)N)NN)__name__
__module____qualname__r   r4   Z
ByteStreamr   inttypingOptionalfloatbytesr   r#   r$   ssl
SSLContextstrr   r.   Anyr7   r   r   r   r   r      s*    
 
  r   c                   @   sZ   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
eddd	d
ZdS )AsyncIOBackendN)hostportr   r5   r   c              	      s   t ttttjti}t|P t|& tj|||dI d H }W d    n1 sR0    Y  W d    n1 sp0    Y  t	|S )N)remote_hostremote_portZ
local_host)
r   r   OSErrorr   r   r   r	   r   connect_tcpr   )r   rE   rF   r   r5   r   r   r   r   r   rJ   _   s    
HzAsyncIOBackend.connect_tcp)pathr   r   c              	      s|   t ttttjti}t|J t|  t|I d H }W d    n1 sL0    Y  W d    n1 sj0    Y  t	|S r   )
r   r   rI   r   r   r   r	   r   Zconnect_unixr   )r   rK   r   r   r   r   r   r   connect_unix_sockett   s    
Lz"AsyncIOBackend.connect_unix_socket)secondsr   c                    s   t |I d H  d S r   )r   sleep)r   rM   r   r   r   rN      s    zAsyncIOBackend.sleep)NN)N)r8   r9   r:   rB   r;   r<   r=   r>   r   rJ   rL   rN   r   r   r   r   rD   ^   s      
rD   )r@   r<   r   _exceptionsr   r   r   r   r   r   r	   _utilsr
   baser   r   r   rD   r   r   r   r   <module>   s   $	K