File: //lib64/python3.6/site-packages/tornado/platform/__pycache__/twisted.cpython-36.opt-1.pyc
3
��f� � @ s� d Z ddlZddlZddlZddlZddlmZ ddlm Z ddl
ZddlZddlZddl
ZddlmZmZ ddlmZ ddlmZ ddlmZ ddlZejr�dd lmZmZmZmZ G d
d� de�Zeejd�r�ejj e�eed
�dd��Z!dS )aB Bridges between the Twisted reactor and Tornado IOLoop.
This module lets you run applications and libraries written for
Twisted in a Tornado application. It can be used in two modes,
depending on which library's underlying event loop you want to use.
This module has been tested with Twisted versions 11.0.0 and newer.
� N)�Deferred)�failure)�Future�future_set_exc_info)�utf8)�gen)�Resolver)� Generator�Any�List�Tuplec @ s: e Zd ZdZdd�dd�Zejdeeedd�d d
��Z dS )�TwistedResolvera� Twisted-based asynchronous resolver.
This is a non-blocking and non-threaded resolver. It is
recommended only when threads cannot be used, since it has
limitations compared to the standard ``getaddrinfo``-based
`~tornado.netutil.Resolver` and
`~tornado.netutil.DefaultExecutorResolver`. Specifically, it returns at
most one result, and arguments other than ``host`` and ``family``
are ignored. It may fail to resolve when ``family`` is not
``socket.AF_UNSPEC``.
Requires Twisted 12.1 or newer.
.. versionchanged:: 5.0
The ``io_loop`` argument (deprecated since version 4.1) has been removed.
N)�returnc C s\ t jjj� | _t jjjd�}t jjj | jd�}t jj
jd| jd�}t jjj|||g�| _
d S )Nz
/etc/hosts)�reactorz/etc/resolv.conf)�twisted�internetZasyncioreactorZAsyncioSelectorReactorr �namesZhostsr �cacheZ
CacheResolverZclient�resolveZ
ResolverChain�resolver)�selfZ
host_resolverZcache_resolverZ
real_resolver� r �/usr/lib64/python3.6/twisted.py�
initializeB s zTwistedResolver.initializer z*Generator[Any, Any, List[Tuple[int, Any]]])�host�port�familyr c
c s t jjj|�r|}tj}n�t jjj|�r4|}tj}n�| jj t
|��}t� }|j|j
� |V }t|tj�r�y|j� W q� t jjjk
r� } zt|��W Y d d }~X q�X n2t jjj|�r�tj}nt jjj|�r�tj}ntj}|tjkr�||kr�td||f ��tjt|�||ffg} | S )Nz%Requested socket family %d but got %d)r r ZabstractZisIPAddress�socketZAF_INETZ
isIPv6AddressZAF_INET6r Z
getHostByNamer r ZaddBoth�
set_result�
isinstancer �Failure�raiseExceptionr �errorZDomainError�IOErrorZ AF_UNSPEC� Exception�typing�cast�int)
r r r r ZresolvedZresolved_familyZdeferredZfut�e�resultr r r r P s2 zTwistedResolver.resolve)r )
�__name__�
__module__�__qualname__�__doc__r r � coroutine�strr'