U
    	fX                     @   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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   )SOCKET_OPTION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 )AnyIOStreamN)streamreturnc                 C   s
   || _ d S N)_stream)selfr    r   [/var/www/html/apigroqsegura/apigroq/lib/python3.8/site-packages/httpcore/_backends/anyio.py__init__   s    zAnyIOStream.__init__)	max_bytestimeoutr   c                    s   t ttjttjti}t|x t|b z.| jj	|dI d H W W  5 Q R  W  5 Q R  S  tj
k
r   Y W 5 Q R  W 5 Q R  dS X W 5 Q R X W 5 Q R X d S )N)r       )TimeoutErrorr   anyioBrokenResourceErrorr   ClosedResourceErrorr	   
fail_afterr   receiveEndOfStream)r   r   r   exc_mapr   r   r   read   s       
.zAnyIOStream.read)bufferr   r   c              
      s^   |sd S t ttjttjti}t|0 t| | jj	|dI d H  W 5 Q R X W 5 Q R X d S )N)item)
r   r   r   r   r   r   r	   r   r   send)r   r$   r   r"   r   r   r   write&   s       
zAnyIOStream.write)r   c                    s   | j  I d H  d S r   )r   aclose)r   r   r   r   r(   5   s    zAnyIOStream.aclose)ssl_contextserver_hostnamer   r   c                    s   t ttjti}t|x z<t|( tjjj	j
| j||dddI d H }W 5 Q R X W n4 tk
r } z|  I d H  |W 5 d }~X Y nX W 5 Q R X t|S )NF)r)   hostnamestandard_compatibleserver_side)r   r   r   r   r   r	   r   streamstls	TLSStreamwrapr   	Exceptionr(   r   )r   r)   r*   r   r"   Z
ssl_streamexcr   r   r   	start_tls8   s&      

 zAnyIOStream.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_addrserver_addrsocketis_readable)r   extrar   r.   r/   TLSAttributer6   abcSocketAttributelocal_addressremote_address
raw_socketr
   )r   r5   sockr   r   r   get_extra_infoQ   s    zAnyIOStream.get_extra_info)N)N)NN)__name__
__module____qualname__r   r=   
ByteStreamr   inttypingOptionalfloatbytesr#   r'   r(   ssl
SSLContextstrr   r4   AnyrC   r   r   r   r   r      s.         r   c                   @   sv   e Zd Zdeeeje eje ejeje	  e
dddZdeeje ejeje	  e
dddZeddd	d
ZdS )AnyIOBackendN)hostportr   r?   socket_optionsr   c           	   
      s|   |d krg }t ttttjti}t|H t|2 tj|||dI d H }|D ]}|j	j
|  qNW 5 Q R X W 5 Q R X t|S )N)remote_hostremote_port
local_host)r   r   OSErrorr   r   r   r	   r   connect_tcp_raw_socket
setsockoptr   )	r   rR   rS   r   r?   rT   r"   r   optionr   r   r   rY   a   s&       
"zAnyIOBackend.connect_tcp)pathr   rT   r   c              
      sv   |d krg }t ttttjti}t|B t|, t|I d H }|D ]}|j	j
|  qHW 5 Q R X W 5 Q R X t|S r   )r   r   rX   r   r   r   r	   r   connect_unixrZ   r[   r   )r   r]   r   rT   r"   r   r\   r   r   r   connect_unix_socket|   s       
"z AnyIOBackend.connect_unix_socket)secondsr   c                    s   t |I d H  d S r   )r   sleep)r   r`   r   r   r   ra      s    zAnyIOBackend.sleep)NNN)NN)rD   rE   rF   rO   rH   rI   rJ   rK   Iterabler   r   rY   r_   ra   r   r   r   r   rQ   `   s(        rQ   )rM   rI   r   _exceptionsr   r   r   r   r   r   r	   _utilsr
   baser   r   r   r   rQ   r   r   r   r   <module>   s   $	M