
­­­­­­­­­­­­­­­­­­
<!DOCTYPE html>
<html>
U
    9`                     @   s   d dl Z d dlZd dlZd dlZd dlmZmZmZmZ ddl	m
Z
 dZdZdZdZejejejejejejejejejejejejdZejejejejej d	Z!G d
d dZ"dS )    N)AnyListOptionalSet   )errorz3.0.0)DNSResolverr      )AZAAAAANYZCAAZCNAMEZMXZNAPTRZNSZPTRZSOAZSRVZTXT)INZCHAOSZHSZNONEr   c                   @   s   e Zd Zd eee  eej eddddZ	e
ejdddZejee ddd	dZeejeedd
ddZd!eeeejdddZeejejdddZeejdddZddddZeeeddddZeeddddZddddZdS )"r   N)nameserversloopkwargsreturnc                 K   sd   |p
t  | _| jd k	st|dd  tjf d| ji|| _|rJ|| _	t
 | _t
 | _d | _d S )NZsock_state_cb)asyncioZget_event_loopr   AssertionErrorpoppycaresChannel_sock_state_cb_channelr   set	_read_fds
_write_fds_timer)selfr   r   r    r   @/opt/alt/python38/lib/python3.8/site-packages/aiodns/__init__.py__init__/   s    zDNSResolver.__init__)r   c                 C   s   | j jS Nr   Zserversr   r   r   r   r   <   s    zDNSResolver.nameservers)valuer   c                 C   s   || j _d S r    r!   )r   r#   r   r   r   r   @   s    )futresulterrornor   c                 C   s>   |   rd S |d k	r0| t|tj| n
| | d S r    )Z	cancelledZset_exceptionr   ZDNSErrorr   errnostrerrorZ
set_result)r$   r%   r&   r   r   r   	_callbackD   s
    zDNSResolver._callback)hostqtypeqclassr   c                 C   s   zt | }W n" tk
r.   td|Y nX |d k	rhzt| }W n" tk
rf   td|Y nX tj| jd}t	| j
|}| jj||||d |S )Nzinvalid query type: {}zinvalid query class: {}r   )Zquery_class)query_type_mapKeyError
ValueErrorformatquery_class_mapr   Futurer   	functoolspartialr)   r   query)r   r*   r+   r,   r$   cbr   r   r   r6   M   s    zDNSResolver.query)r*   familyr   c                 C   s0   t j| jd}t| j|}| j||| |S Nr-   )r   r3   r   r4   r5   r)   r   gethostbyname)r   r*   r8   r$   r7   r   r   r   r:   ]   s    zDNSResolver.gethostbyname)namer   c                 C   s.   t j| jd}t| j|}| j|| |S r9   )r   r3   r   r4   r5   r)   r   gethostbyaddr)r   r;   r$   r7   r   r   r   r<   c   s    zDNSResolver.gethostbyaddrc                 C   s   | j   d S r    )r   cancelr"   r   r   r   r=   i   s    zDNSResolver.cancel)fdreadablewritabler   c                 C   s   |s|rn|r,| j || j|t | j| |rP| j || j|t | j| | j	d kr| j 
d| j| _	nj|| jkr| j| | j | || jkr| j| | j | | js| js| j	d k	r| j	  d | _	d S Ng      ?)r   Z
add_reader_handle_eventREADr   addZ
add_writerWRITEr   r   
call_later	_timer_cbdiscardZremove_readerZremove_writerr=   )r   r>   r?   r@   r   r   r   r   l   s$    



zDNSResolver._sock_state_cb)r>   eventr   c                 C   s8   t j}t j}|tkr|}n|tkr&|}| j|| d S r    )r   ARES_SOCKET_BADrC   rE   r   
process_fd)r   r>   rI   Zread_fdZwrite_fdr   r   r   rB      s    zDNSResolver._handle_eventc                 C   s<   | j s| jr2| jtjtj | jd| j| _	nd | _	d S rA   )
r   r   r   rK   r   rJ   r   rF   rG   r   r"   r   r   r   rG      s    zDNSResolver._timer_cb)NN)N)__name__
__module____qualname__r   r   strr   ZAbstractEventLoopr   r   propertyr   r   r   setterstaticmethodr3   intr)   r6   socketZAddressFamilyr:   r<   r=   boolr   rB   rG   r   r   r   r   r   .   s(      	r   )#r   r4   r   rT   typingr   r   r   r    r   __version____all__rC   rE   ZQUERY_TYPE_AZQUERY_TYPE_AAAAZQUERY_TYPE_ANYZQUERY_TYPE_CAAZQUERY_TYPE_CNAMEZQUERY_TYPE_MXZQUERY_TYPE_NAPTRZQUERY_TYPE_NSZQUERY_TYPE_PTRZQUERY_TYPE_SOAZQUERY_TYPE_SRVZQUERY_TYPE_TXTr.   ZQUERY_CLASS_INZQUERY_CLASS_CHAOSZQUERY_CLASS_HSZQUERY_CLASS_NONEZQUERY_CLASS_ANYr2   r   r   r   r   r   <module>   s:   