o
    h                     @   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dejjddfddZ	ddedej	e
 defdd	Z	dd
edej	e
 ddfddZdddZ		ddejdej	e dej	e
 defddZdedejfddZdS )AnyIOStreamstreamreturnNc                 C   s
   || _ d S N)_stream)selfr    r   X/var/www/html/flask_server/venv/lib/python3.10/site-packages/httpcore/_backends/anyio.py__init__   s   
zAnyIOStream.__init__	max_bytestimeoutc              
      s   t ttjttjttjti}t|H t|2 z| j	j
|dI d H W W  d    W  d    S  tjyI   Y W d    W d    dS w 1 sMw   Y  W d    d S 1 s]w   Y  d S )N)r       )TimeoutErrorr   anyioBrokenResourceErrorr   ClosedResourceErrorEndOfStreamr	   
fail_afterr   receive)r   r   r   exc_mapr   r   r   read   s&   
"zAnyIOStream.readbufferc              	      s   |sd S t ttjttjti}t|0 t| | jj	|dI d H  W d    n1 s.w   Y  W d    d S W d    d S 1 sFw   Y  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.writec                    s   | j  I d H  d S r   )r   aclose)r   r   r   r   r(   6      zAnyIOStream.aclosessl_contextserver_hostnamec                    s   t ttjttjti}t|I z(t| tjj	j
j| j||dddI d H }W d    n1 s2w   Y  W n tyM } z	|  I d H  |d }~ww W d    t|S 1 s[w   Y  t|S )NF)r*   hostnamestandard_compatibleserver_side)r   r   r   r   r   r   r	   r    streamstls	TLSStreamwrapr   	Exceptionr(   r   )r   r*   r+   r   r"   
ssl_streamexcr   r   r   	start_tls9   s6   


zAnyIOStream.start_tlsinfoc                 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r+| j tjjj
d S |dkr9| j tjjjd S |dkrK| j tjjjd }t|S d S )N
ssl_objectclient_addrserver_addrsocketis_readable)r   extrar   r/   r0   TLSAttributer8   abcSocketAttributelocal_addressremote_address
raw_socketr
   )r   r7   sockr   r   r   get_extra_infoS   s   zAnyIOStream.get_extra_infor   )r   NNN)__name__
__module____qualname__r   r?   
ByteStreamr   inttypingOptionalfloatbytesr#   r'   r(   ssl
SSLContextstrr   r6   AnyrE   r   r   r   r   r      s>    



r   c                   @   s   e Zd Z			ddededeje deje dejeje	  de
fdd	Z		dd
edeje dejeje	  de
fddZdeddfddZdS )AnyIOBackendNhostportr   rA   socket_optionsr   c           	   	      s   |d u rg }t ttttjti}t|@ t| tj|||dI d H }|D ]}|j	j
|  q(W d    n1 s;w   Y  W d    t|S W d    t|S 1 sWw   Y  t|S )N)remote_hostremote_port
local_host)r   r   OSErrorr   r   r   r	   r    connect_tcp_raw_socket
setsockoptr   )	r   rU   rV   r   rA   rW   r"   r   optionr   r   r   r\   c   s2   





zAnyIOBackend.connect_tcppathc              	      s   |d u rg }t ttttjti}t|= t| t|I d H }|D ]}|j	j
|  q%W d    n1 s8w   Y  W d    t|S W d    t|S 1 sTw   Y  t|S r   )r   r   r[   r   r   r   r	   r    connect_unixr]   r^   r   )r   r`   r   rW   r"   r   r_   r   r   r   connect_unix_socket~   s*   


z AnyIOBackend.connect_unix_socketsecondsc                    s   t |I d H  d S r   )r   sleep)r   rc   r   r   r   rd      r)   zAnyIOBackend.sleep)NNNrF   )rG   rH   rI   rR   rK   rL   rM   rN   Iterabler   r   r\   rb   rd   r   r   r   r   rT   b   s:    

rT   )rP   rL   r   _exceptionsr   r   r   r   r   r   r	   _utilsr
   baser   r   r   r   rT   r   r   r   r   <module>   s    $	O