
­­­­­­­­­­­­­­­­­­
<!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    )	cancelledset_exceptionr   ZDNSErrorr   errnostrerror
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   r9   M   s    zDNSResolver.query)r-   familyr   c                 C   s0   t j| jd}t| j|}| j||| |S Nr0   )r   r6   r   r7   r8   r,   r   gethostbyname)r   r-   r;   r$   r:   r   r   r   r=   ]   s    zDNSResolver.gethostbyname)namer   c                 C   s.   t j| jd}t| j|}| j|| |S r<   )r   r6   r   r7   r8   r,   r   gethostbyaddr)r   r>   r$   r:   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   rA   rB   rC   r   r   r   r   l   s$    



zDNSResolver._sock_state_cb)rA   eventr   c                 C   s8   t j}t j}|tkr|}n|tkr&|}| j|| d S r    )r   ARES_SOCKET_BADrF   rH   r   
process_fd)r   rA   rL   Zread_fdZwrite_fdr   r   r   rE      s    zDNSResolver._handle_eventc                 C   s<   | j s| jr2| jtjtj | jd| j| _	nd | _	d S rD   )
r   r   r   rN   r   rM   r   rI   rJ   r   r"   r   r   r   rJ      s    zDNSResolver._timer_cb)NN)N)__name__
__module____qualname__r   r   strr   ZAbstractEventLoopr   r   propertyr   r   r   setterstaticmethodr6   intr,   r9   socketAddressFamilyr=   r?   r@   boolr   rE   rJ   r   r   r   r   r   .   s(      	r   )#r   r7   r   rW   typingr   r   r   r    r   __version____all__rF   rH   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_TXTr1   ZQUERY_CLASS_INZQUERY_CLASS_CHAOSZQUERY_CLASS_HSZQUERY_CLASS_NONEZQUERY_CLASS_ANYr5   r   r   r   r   r   <module>   s:   