o
    2c                     @   s   d Z ddlZddlZddlZddlZddlZddlZdd Zej	j
ZG dd dejjZG dd dejjZG d	d
 d
ejjZdS )z$trio async I/O library query support    Nc                 C   s   | rt | S tj S N)triomove_on_afterdns_asyncbackendNullContexttimeout r
   G/var/www/html/gps/gps/lib/python3.10/site-packages/dns/_trio_backend.py_maybe_timeout   s   

r   c                   @   s<   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd ZdS )DatagramSocketc                 C   s   || _ |j| _d S r   )socketfamily)selfr   r
   r
   r   __init__   s   zDatagramSocket.__init__c                    sL   t | | j||I d H W  d    S 1 sw   Y  tjj|dNr   )r   r   sendtor   	exceptionTimeout)r   whatdestinationr	   r
   r
   r   r       s
   
 zDatagramSocket.sendtoc                    J   t | | j|I d H W  d    S 1 sw   Y  tjj|dr   )r   r   recvfromr   r   r   r   sizer	   r
   r
   r   r   %   
   
 zDatagramSocket.recvfromc                    s   | j   d S r   )r   closer   r
   r
   r   r   *   s   zDatagramSocket.closec                       | j  S r   )r   getpeernamer   r
   r
   r   r    -      
zDatagramSocket.getpeernamec                    r   r   )r   getsocknamer   r
   r
   r   r"   0   r!   zDatagramSocket.getsocknameN)	__name__
__module____qualname__r   r   r   r   r    r"   r
   r
   r
   r   r      s    r   c                   @   s>   e Zd ZdddZdd Zdd Zdd	 Zd
d Zdd ZdS )StreamSocketFc                 C   s   || _ || _|| _d S r   )r   streamtls)r   r   r'   r(   r
   r
   r   r   5   s   
zStreamSocket.__init__c                    r   r   )r   r'   send_allr   r   r   )r   r   r	   r
   r
   r   sendall:   r   zStreamSocket.sendallc                    r   r   )r   r'   receive_somer   r   r   r   r
   r
   r   recv?   r   zStreamSocket.recvc                    s   | j  I d H  d S r   )r'   acloser   r
   r
   r   r   D      zStreamSocket.closec                    "   | j r| jjj S | jj S r   )r(   r'   transport_streamr   r    r   r
   r
   r   r    G      zStreamSocket.getpeernamec                    r/   r   )r(   r'   r0   r   r"   r   r
   r
   r   r"   M   r1   zStreamSocket.getsocknameN)F)	r#   r$   r%   r   r*   r,   r   r    r"   r
   r
   r
   r   r&   4   s    
r&   c                   @   s,   e Zd Zdd Z			d	ddZdd ZdS )
Backendc                 C   s   dS )Nr   r
   r   r
   r
   r   nameU   s   zBackend.namer   Nc	                    s  t j|||}	d }
z3|r|	t||I d H  |tjkr=t| |	t||I d H  W d    n1 s8w   Y  W n tyJ   |	   w |tj	krTt
|	S |tjkrt |	}
d }	d}|rd}z
t j|
||d}
W n ty   |
 I d H   w t||
|S tdd|  )NFT)server_hostnamezunsupported socket ztype )r   r   bind_lltupleSOCK_STREAMr   connect	Exceptionr   
SOCK_DGRAMr   SocketStream	SSLStreamr-   r&   NotImplementedError)r   afsocktypeprotosourcer   r	   ssl_contextr4   sr'   r(   r
   r
   r   make_socketX   sF   





zBackend.make_socketc                    s   t |I d H  d S r   )r   sleep)r   intervalr
   r
   r   rE   x   r.   zBackend.sleep)r   NNNNN)r#   r$   r%   r3   rD   rE   r
   r
   r
   r   r2   T   s    
 r2   )__doc__r   r   trio.socketdns._asyncbackendr   dns.exceptiondns.inetr   inetlow_level_address_tupler6   r   r   r&   r2   r
   r
   r
   r   <module>   s    