a
     d                     @   sp   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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   )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ejdddZdS )
TrioStreamN)streamreturnc                 C   s
   || _ d S N)_streamselfr    r   _/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/httpcore/backends/trio.py__init__   s    zTrioStream.__init__)	max_bytestimeoutr   c              	      s   |d u rt dn|}tjttjti}t|\ t|2 | jj	|dI d H W  d    W  d    S 1 sp0    Y  W d    n1 s0    Y  d S )Ninf)r   )
floattrioTooSlowErrorr   BrokenResourceErrorr   r	   
fail_afterr   Zreceive_some)r   r   r   timeout_or_infexc_mapr   r   r   read   s
    
zTrioStream.read)bufferr   r   c              	      s   |sd S |d u rt dn|}tjttjti}t|N t|$ | jj	|dI d H  W d    n1 sj0    Y  W d    n1 s0    Y  d S )Nr   )data)
r   r   r   r   r   r   r	   r   r   Zsend_all)r   r"   r   r   r    r   r   r   write   s    
zTrioStream.write)r   c                    s   | j  I d H  d S r   )r   aclose)r   r   r   r   r%   .   s    zTrioStream.aclose)ssl_contextserver_hostnamer   r   c                    s   |d u rt dn|}tjttjti}tj| j||ddd}t| z<t	| |
 I d H  W d    n1 st0    Y  W n6 ty } z|  I d H  |W Y d }~n
d }~0 0 W d    n1 s0    Y  t|S )Nr   TF)r&   r'   Zhttps_compatibleserver_side)r   r   r   r   r   r   	SSLStreamr   r	   r   do_handshake	Exceptionr%   r   )r   r&   r'   r   r   r    Z
ssl_streamexcr   r   r   	start_tls1   s&    
08zTrioStream.start_tls)infor   c                 C   s   |dkrt | jtjr| jjS |dkr4|  j S |dkrJ|  j S |dkr| j}t |tjrl|j	}qXt |tj
s|J |jS |dkr| d}| S d S )NZ
ssl_objectclient_addrZserver_addrsocketis_readable)
isinstancer   r   r)   Z_ssl_object_get_socket_streamr0   getsocknamegetpeernametransport_streamSocketStreamget_extra_infor1   )r   r.   r   r0   r   r   r   r8   L   s     
zTrioStream.get_extra_infoc                 C   s.   | j }t|tjr|j}qt|tjs*J |S r   )r   r2   r   r)   r6   r7   r   r   r   r   r3   ^   s
    zTrioStream._get_socket_stream)N)N)NN)__name__
__module____qualname__r   abcZStreamr   inttypingOptionalr   bytesr!   r$   r%   ssl
SSLContextstrr   r-   Anyr8   r7   r3   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 )TrioBackendN)hostportr   local_addressr   c           	   	      s   |d u rt dn|}tjttjttti}|d u r4i nd|i}t|V t|, tj	f ||d|I d H }W d    n1 s0    Y  W d    n1 s0    Y  t
|S )Nr   rH   )rF   rG   )r   r   r   r   r   r   OSErrorr	   r   Zopen_tcp_streamr   )	r   rF   rG   r   rH   r   r    kwargsr   r   r   r   connect_tcpg   s    
HzTrioBackend.connect_tcp)pathr   r   c              	      s   |d u rt dn|}tjttjttti}t|J t|  t	|I d H }W d    n1 sb0    Y  W d    n1 s0    Y  t
|S )Nr   )r   r   r   r   r   r   rI   r	   r   Zopen_unix_socketr   )r   rL   r   r   r    r   r   r   r   connect_unix_socket   s    
LzTrioBackend.connect_unix_socket)secondsr   c                    s   t |I d H  d S r   )r   sleep)r   rN   r   r   r   rO      s    zTrioBackend.sleep)NN)N)r9   r:   r;   rC   r=   r>   r?   r   r   rK   rM   rO   r   r   r   r   rE   f   s      
rE   )rA   r>   r   _exceptionsr   r   r   r   r   r   r	   baser   r   r   rE   r   r   r   r   <module>   s   $	T