o
    2cX                     @   s   d Z ddlZddlZddlZddlZdd ZG dd dZdd 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asyncio library query support    Nc                   C   s&   zt  W S  ty   t   Y S w N)asyncioget_running_loopAttributeErrorget_event_loop r   r   J/var/www/html/gps/gps/lib/python3.10/site-packages/dns/_asyncio_backend.py_get_running_loop   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 )_DatagramProtocolc                 C   s   d | _ d | _d S r   )	transportrecvfromselfr   r   r   __init__   s   
z_DatagramProtocol.__init__c                 C   s
   || _ d S r   )r   )r   r   r   r   r   connection_made   s   
z!_DatagramProtocol.connection_madec                 C   s$   | j r| j ||f d | _ d S d S r   )r   
set_result)r   dataaddrr   r   r   datagram_received   s   
z#_DatagramProtocol.datagram_receivedc                 C   (   | j r| j  s| j | d S d S d S r   r   doneset_exceptionr   excr   r   r   error_received       z _DatagramProtocol.error_receivedc                 C   r   r   r   r   r   r   r   connection_lost$   r   z!_DatagramProtocol.connection_lostc                 C   s   | j   d S r   )r   closer   r   r   r   r   (   s   z_DatagramProtocol.closeN)	__name__
__module____qualname__r   r   r   r   r   r   r   r   r   r   r      s    r   c                    sD   |rz
t | |I d H W S  t jy   tjj|dw | I d H S )N)timeout)r   wait_forTimeoutErrordns	exceptionTimeout)	awaitabler#   r   r   r   _maybe_wait_for,   s   
r*   c                   @   r
   )DatagramSocketc                 C      || _ || _|| _d S r   )familyr   protocol)r   r-   r   r.   r   r   r   r   7      
zDatagramSocket.__init__c                    s   | j || d S r   )r   sendto)r   whatdestinationr#   r   r   r   r0   <   s   zDatagramSocket.sendtoc                    s<   t   }| jjd u sJ || j_t||I d H  | S r   )r	   create_futurer.   r   r*   result)r   sizer#   r   r   r   r   r   @   s   
zDatagramSocket.recvfromc                    s   | j   d S r   )r.   r   r   r   r   r   r   H   s   zDatagramSocket.closec                       | j dS Npeernamer   get_extra_infor   r   r   r   getpeernameK      zDatagramSocket.getpeernamec                    r6   Nsocknamer9   r   r   r   r   getsocknameN   r<   zDatagramSocket.getsocknameN)	r    r!   r"   r   r0   r   r   r;   r?   r   r   r   r   r+   6   s    r+   c                   @   r
   )StreamSocketc                 C   r,   r   )r-   readerwriter)r   afrA   rB   r   r   r   r   S   r/   zStreamSocket.__init__c                    s$   | j | t| j  |I d H S r   )rB   writer*   drain)r   r1   r#   r   r   r   sendallX   s   zStreamSocket.sendallc                    s   t | j||I d H S r   )r*   rA   read)r   countr#   r   r   r   recv\   s   
zStreamSocket.recvc                    s8   | j   z| j  I d H  W d S  ty   Y d S w r   )rB   r   wait_closedr   r   r   r   r   r   `   s   
zStreamSocket.closec                    r6   r7   rB   r:   r   r   r   r   r;   g   r<   zStreamSocket.getpeernamec                    r6   r=   rK   r   r   r   r   r?   j   r<   zStreamSocket.getsocknameN)	r    r!   r"   r   rF   rI   r   r;   r?   r   r   r   r   r@   R   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   nameo   s   zBackend.namer   Nc	              
      s   t  }	|tjkr|	jt|||dI d H \}
}t||
|S |tjkr@ttj	|d |d |||||d|I d H \}}t
|||S tdd|  )N)r-   protor      )sslr-   rN   
local_addrserver_hostnamezunsupported socket ztype )r	   socket
SOCK_DGRAMcreate_datagram_endpointr   r+   SOCK_STREAMr*   r   open_connectionr@   NotImplementedError)r   rC   socktyperN   sourcer2   r#   ssl_contextrR   loopr   r.   rwr   r   r   make_socketr   s0   


	zBackend.make_socketc                    s   t |I d H  d S r   )r   sleep)r   intervalr   r   r   r`      s   zBackend.sleep)r   NNNNN)r    r!   r"   rM   r_   r`   r   r   r   r   rL   n   s    
rL   )__doc__rS   r   dns._asyncbackendr&   dns.exceptionr	   r   r*   _asyncbackendr+   r@   rL   r   r   r   r   <module>   s   
