Viewing File: /opt/alt/python38/lib64/python3.8/site-packages/aiohttp/__pycache__/resolver.cpython-38.opt-1.pyc
U
'7` @ s d dl Z d dlZd dlmZmZmZmZ ddlmZ ddl m
Z
dZzd dlZW n e
k
rh dZY nX dZG dd d eZG d
d deZereneZdS ) N)AnyDictListOptional )AbstractResolver)get_running_loop)ThreadedResolver
AsyncResolverDefaultResolverFc @ s^ e Zd ZdZd
eej ddddZdej fe
eeee
e
ef ddd Zdd
ddZdS )r zsUse Executor for synchronous getaddrinfo() calls, which defaults to
concurrent.futures.ThreadPoolExecutor.
N)loopreturnc C s t || _d S N)r _loop)selfr r C/opt/alt/python38/lib64/python3.8/site-packages/aiohttp/resolver.py__init__ s zThreadedResolver.__init__r )hostnameportfamilyr
c
s | j j||tj|tjdI d H }g }|D ]r\}}}}}|tjkrj|d rjt|tjtjB \} }
t |
}n|d d \} }|
|| |||tjtjB d q(|S )N)typer flags r hostr r protor )
r ZgetaddrinfosocketZSOCK_STREAMZ
AI_ADDRCONFIGAF_INET6ZgetnameinfoZNI_NUMERICHOSTZNI_NUMERICSERVintappendAI_NUMERICHOSTAI_NUMERICSERV)r r r r Zinfoshosts_r addressr Z_portr r r resolve s4
zThreadedResolver.resolver
c s d S r r r r r r close@ s zThreadedResolver.close)N)__name__
__module____qualname____doc__r asyncioAbstractEventLoopr r AF_INETstrr r r r r' r* r r r r r s $r c @ s e Zd ZdZdeej eeddddZde j
feeee
eeef ddd Zde j
feeee
eeef dd
dZddd
dZdS )r
z9Use the `aiodns` package to make asynchronous DNS lookupsN)r argskwargsr
c O sH t d krtdt|| _t j|d|i|| _t| jdsD| j| _d S )Nz Resolver requires aiodns libraryr
gethostbyname) aiodnsRuntimeErrorr r ZDNSResolver _resolverhasattr_resolve_with_queryr' )r r r3 r4 r r r r G s
zAsyncResolver.__init__r )r r r r
c
s z| j ||I d H }W nL tjjk
rd } z*t|jdkrF|jd nd}t||W 5 d }~X Y nX g }|jD ]$}| ||||dt
jt
jB d qp|std|S )Nr DNS lookup failedr r )
r8 r5 r6 errorDNSErrorlenr3 OSErrorZ addressesr! r r"