o
    2cU                     @   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%curio async I/O library query support    Nc                 C   s   | rt | S tj S N)curioignore_afterdns_asyncbackendNullContexttimeout r
   H/var/www/html/gps/gps/lib/python3.10/site-packages/dns/_curio_backend.py_maybe_timeout   s   

r   c                   @   <   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      || _ |j| _d S r   socketfamilyselfr   r
   r
   r   __init__      zDatagramSocket.__init__c              	      s`   t |4 I d H  | j||I d H W  d   I d H  S 1 I d H s$w   Y  tjj|dNr   )r   r   sendtor   	exceptionTimeout)r   whatdestinationr	   r
   r
   r   r       s
   ,zDatagramSocket.sendtoc              	      ^   t |4 I d H  | j|I d H W  d   I d H  S 1 I d H s#w   Y  tjj|dr   )r   r   recvfromr   r   r   r   sizer	   r
   r
   r   r   %   
   ,zDatagramSocket.recvfromc                       | j  I d H  d S r   r   closer   r
   r
   r   r$   *      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          r   c                   @   r   )StreamSocketc                 C   r   r   r   r   r
   r
   r   r   5   r   zStreamSocket.__init__c              	      r   r   )r   r   sendallr   r   r   )r   r   r	   r
   r
   r   r2   9   r!   zStreamSocket.sendallc              	      r   r   )r   r   recvr   r   r   r   r
   r
   r   r3   >   r!   zStreamSocket.recvc                    r"   r   r#   r%   r
   r
   r   r$   C   r&   zStreamSocket.closec                    r'   r   r(   r%   r
   r
   r   r)   F   r*   zStreamSocket.getpeernamec                    r'   r   r+   r%   r
   r
   r   r,   I   r*   zStreamSocket.getsocknameN)	r-   r.   r/   r   r2   r3   r$   r)   r,   r
   r
   r
   r   r1   4   r0   r1   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   nameN   s   zBackend.namer   Nc	              	      s   |t jkr2tj  |||}	z|r|	t|| W t|	S W t|	S  ty1   |	 I d H   w |t jkrw|r?t||}
nd }
t	|4 I d H  tj
|d |d ||
|dI d H }	W d   I d H  t|	S 1 I d H snw   Y  t|	S tdd|  )Nr      )sslsource_addrserver_hostnamezunsupported socket ztype )r   
SOCK_DGRAMr   bind_lltuple	Exceptionr$   r   SOCK_STREAMr   open_connectionr1   NotImplementedError)r   afsocktypeprotosourcer   r	   ssl_contextr9   sr8   r
   r
   r   make_socketQ   s<   

zBackend.make_socketc                    s   t |I d H  d S r   )r   sleep)r   intervalr
   r
   r   rH   k   r&   zBackend.sleep)r   NNNNN)r-   r.   r/   r5   rG   rH   r
   r
   r
   r   r4   M   s    
r4   )__doc__r   r   curio.socketdns._asyncbackendr   dns.exceptiondns.inetr   inetlow_level_address_tupler<   r   r   r1   r4   r
   r
   r
   r   <module>   s   