509318396
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
U
    'â7`   ã                   @   sž   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dl	m
Z
 dZzd dlZW n ek
rh   dZY nX dZG dd	„ d	eƒZG d
d„ deƒZer–eneZdS )é    N)ÚAnyÚDictÚListÚOptionalé   )ÚAbstractResolver)Úget_running_loop)ÚThreadedResolverÚAsyncResolverÚDefaultResolverFc                   @   s^   e Zd ZdZdeej ddœdd„Zdej	fe
eeeee
ef  dœdd	„Zdd
œdd„ZdS )r	   zsUse Executor for synchronous getaddrinfo() calls, which defaults to
    concurrent.futures.ThreadPoolExecutor.
    N)ÚloopÚreturnc                 C   s   t |ƒ| _d S ©N)r   Ú_loop)Úselfr   © r   úC/opt/alt/python38/lib64/python3.8/site-packages/aiohttp/resolver.pyÚ__init__   s    zThreadedResolver.__init__r   )ÚhostnameÚportÚfamilyr   c              
   Ã   s    | j j||tj|tjd�I d H }g }|D ]r\}}}}}|tjkrj|d rjt |tjtjB ¡\}	}
t	|
ƒ}n|d d… \}	}| 
||	|||tjtjB dœ¡ q(|S )N)Útyper   Úflagsé   é   ©r   Úhostr   r   Úprotor   )r   ZgetaddrinfoÚsocketZSOCK_STREAMZAI_ADDRCONFIGÚAF_INET6ZgetnameinfoZNI_NUMERICHOSTZNI_NUMERICSERVÚintÚappendÚAI_NUMERICHOSTÚAI_NUMERICSERV)r   r   r   r   ZinfosÚhostsÚ_r   Úaddressr   Z_portr   r   r   Úresolve   s4    û 
ÿ

úÿzThreadedResolver.resolve©r   c                 Ã   s   d S r   r   ©r   r   r   r   Úclose@   s    zThreadedResolver.close)N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   ÚasyncioÚAbstractEventLoopr   r   ÚAF_INETÚstrr    r   r   r   r'   r*   r   r   r   r   r	      s    ÿ  þ$r	   c                   @   sŠ   e Zd ZdZdeej eeddœdd„Zde	j
feeeeeeef  dœdd	„Zde	j
feeeeeeef  dœd
d„Zddœdd„ZdS )r
   z9Use the `aiodns` package to make asynchronous DNS lookupsN)r   ÚargsÚkwargsr   c                 O   sH   t d krtdƒ‚t|ƒ| _t j|d|i|—Ž| _t| jdƒsD| j| _d S )Nz Resolver requires aiodns libraryr   Úgethostbyname)	ÚaiodnsÚRuntimeErrorr   r   ZDNSResolverÚ	_resolverÚhasattrÚ_resolve_with_queryr'   )r   r   r3   r4   r   r   r   r   G   s    
zAsyncResolver.__init__r   )r   r   r   r   c           	   
   Ã   s¦   z| j  ||¡I d H }W nL tjjk
rd } z*t|jƒdkrF|jd nd}t|ƒ|‚W 5 d }~X Y nX g }|jD ]$}| 	||||dt
jt
jB dœ¡ qp|s¢tdƒ‚|S )Nr   úDNS lookup failedr   r   )r8   r5   r6   ÚerrorÚDNSErrorÚlenr3   ÚOSErrorZ	addressesr!   r   r"   r#   )	r   r   r   r   ÚrespÚexcÚmsgr$   r&   r   r   r   r'   W   s&    

úÿzAsyncResolver.resolvec           
   
   Ã   s´   |t jkrd}nd}z| j ||¡I d H }W nL tjjk
rx } z*t|jƒdkrZ|jd nd}t	|ƒ|‚W 5 d }~X Y nX g }|D ] }	| 
||	j||dt jdœ¡ q‚|s°t	dƒ‚|S )NZAAAAÚAr   r;   r   r   )r   r   r8   Zqueryr6   r<   r=   r>   r3   r?   r!   r   r"   )
r   r   r   r   Zqtyper@   rA   rB   r$   Zrrr   r   r   r:   q   s,    
úÿz!AsyncResolver._resolve_with_queryr(   c                 Ã   s
   | j  ¡ S r   )r8   Úcancelr)   r   r   r   r*   ‘   s    zAsyncResolver.close)N)r+   r,   r-   r.   r   r/   r0   r   r   r   r1   r2   r    r   r   r'   r:   r*   r   r   r   r   r
   D   s2    þû ÿ  þ ÿ  þ r
   )r/   r   Útypingr   r   r   r   Úabcr   Zhelpersr   Ú__all__r6   ÚImportErrorZaiodns_defaultr	   r
   r   r   r   r   r   Ú<module>   s   
0Q