HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: //usr/lib/python3/dist-packages/twisted/internet/__pycache__/_resolver.cpython-312.pyc
�

�b!����dZddlmZmZmZmZmZmZmZddl	m
Z
ddlmZddl
mZmZddlmZddlmZddlmZmZmZmZdd	lmZdd
lmZddlmZe
e�Gd�d
��Ze eeg�Z!e eg�ee eg�ee!eiZ"eeeeiZ#eed�Z$edediZ%e
e�Gd�d��Z&e
e�Gd�d��Z'e
e�Gd�d��Z(e
e�Gd�d��Z)y)z=
IPv6-aware hostname resolution.

@see: L{IHostnameResolver}
�)�AF_INET�AF_INET6�	AF_UNSPEC�
SOCK_DGRAM�SOCK_STREAM�gaierror�getaddrinfo)�implementer)�
_idnaBytes)�IPv4Address�IPv6Address)�Deferred)�DNSLookupError)�IHostnameResolver�IHostResolution�IResolutionReceiver�IResolverSimple)�deferToThreadPool)�Logger)�nativeStringc��eZdZdZd�Zd�Zy)�HostResolutionz9
    The in-progress resolution of a given hostname.
    c��||_y)zA
        Create a L{HostResolution} with the given name.
        N)�name)�selfrs  �</usr/lib/python3/dist-packages/twisted/internet/_resolver.py�__init__zHostResolution.__init__-s����	�c��t���N)�NotImplementedError�rs r�cancelzHostResolution.cancel3s��!�#�#rN)�__name__�
__module__�__qualname__�__doc__rr#�rrrr's����$rr)�TCP�UDPr)r*c�*�eZdZdZdefd�Z			dd�Zy)�GAIResolverzp
    L{IHostnameResolver} implementation that resolves hostnames by calling
    L{getaddrinfo} in a thread.
    Nc�J�||_|�|jn||_||_y)a�
        Create a L{GAIResolver}.

        @param reactor: the reactor to schedule result-delivery on
        @type reactor: L{IReactorThreads}

        @param getThreadPool: a function to retrieve the thread pool to use for
            scheduling name resolutions.  If not supplied, the use the given
            C{reactor}'s thread pool.
        @type getThreadPool: 0-argument callable returning a
            L{twisted.python.threadpool.ThreadPool}

        @param getaddrinfo: a reference to the L{getaddrinfo} to use - mainly
            parameterized for testing.
        @type getaddrinfo: callable with the same signature as L{getaddrinfo}
        N)�_reactor�
getThreadPool�_getThreadPool�_getaddrinfo)r�reactorr/r	s    rrzGAIResolver.__init__Ws-��" ��
�%2�%:�G�!�!�
�	
��(��rc���������j�}t|�tn
t|��t|������fd�}t�j||�}t��}	�j|	�|j�fd��}
|	S)�<
        See L{IHostnameResolver.resolveHostName}

        @param resolutionReceiver: see interface

        @param hostName: see interface

        @param portNumber: see interface

        @param addressTypes: see interface

        @param transportSemantics: see interface

        @return: see interface
        c�P��	�j�����S#t$rgcYSwxYwr )r1r)�
addressFamily�hostName�
portNumberr�
socketTypes�����r�getz(GAIResolver.resolveHostName.<locals>.get�s:���
��(�(��j�-������
��	�
�s��%�%c	���|D]=\}}}}}t|}�j|tj|d�g|�����?�j	�y�Nr))�	_afToType�addressResolved�_socktypeToTyper:�resolutionComplete)�result�family�socktype�proto�	cannoname�sockaddr�addrType�resolutionReceivers       �r�deliverResultsz3GAIResolver.resolveHostName.<locals>.deliverResults�sZ���@F�<���%��H�$�V�,��"�2�2��_�0�0��5�A�M�H�M��AG�

�1�1�3r)
r0�
_typesToAF�_any�	frozenset�_transportToSocketrr.r�resolutionBegan�addCallback)
rrHr7r8�addressTypes�transportSemantics�poolr:�d�
resolutionrIr6r9s
````       @@r�resolveHostNamezGAIResolver.resolveHostNamens����.�"�"�$��"� �(�D�i��.E�
�
�(�(:�;�
�	�	�
�d�m�m�T�3�7��#�H�-�
��*�*�:�6�	
���	4�
�	4��r�rNr))r$r%r&r'r	rrUr(rrr,r,Ps#���
/3��(�6�� �
2rr,c�2�eZdZdZe�Zd�Z			dd�Zy)�SimpleResolverComplexifierzF
    A converter from L{IResolverSimple} to L{IHostnameResolver}.
    c��||_y)zW
        Construct a L{SimpleResolverComplexifier} with an L{IResolverSimple}.
        N)�_simpleResolver)r�simpleResolvers  rrz#SimpleResolverComplexifier.__init__�s�� .��rNc�R�����	�jd��t���t	��}�j|��jj��}��fd�}��fd�}	|j||	��fd�}
|j|
�|S#t$rt���Y��wxYw)r4�asciic�>���jtd|���yr<)r>r)�addressr8rHs ��r�addressReceivedzCSimpleResolverComplexifier.resolveHostName.<locals>.addressReceived�s����.�.�{�5�'�:�/V�Wrc���|jt�s*�jjd|��j��yy)Nz'while looking up {name} with {resolver})r�resolver)�checkr�_log�failurerZ)�errorr7rs ��r�
errorReceivedzASimpleResolverComplexifier.resolveHostName.<locals>.errorReceived�s=����;�;�~�.��	�	�!�!�=��!�!�1�1�	"��/rc�&���j�yr )r@)rArHs �r�finishz:SimpleResolverComplexifier.resolveHostName.<locals>.finish�s����1�1�3r)
�encode�UnicodeEncodeErrorrrrrNrZ�
getHostByName�addCallbacksrO)rrHr7r8rPrQrT�	onAddressr`rgris````       rrUz*SimpleResolverComplexifier.resolveHostName�s����0	,����w�/�H� ��)��#�H�-�
��*�*�:�6��(�(�6�6�x�@�	�	X�	�	����
�>�	4�	���f�%����A"�	,�
"�(�+�H�	,�s�B�B&�%B&rV)r$r%r&r'rrdrrUr(rrrXrX�s%����8�D�.��� �
:rrXc�(�eZdZdZd�Zd�Zd�Zd�Zy)�FirstOneWinszT
    An L{IResolutionReceiver} which fires a L{Deferred} with its first result.
    c� �||_d|_y)zp
        @param deferred: The L{Deferred} to fire when the first resolution
            result arrives.
        FN)�	_deferred�	_resolved)r�deferreds  rrzFirstOneWins.__init__�s��
"�����rc��||_y)z�
        See L{IResolutionReceiver.resolutionBegan}

        @param resolution: See L{IResolutionReceiver.resolutionBegan}
        N)�_resolution)rrTs  rrNzFirstOneWins.resolutionBegan�s��&��rc�v�|jryd|_|jj|j�y)z�
        See L{IResolutionReceiver.addressResolved}

        @param address: See L{IResolutionReceiver.addressResolved}
        NT)rsrr�callback�host)rr_s  rr>zFirstOneWins.addressResolveds+���>�>�������������-rc��|jry|jjt|jj
��y)z?
        See L{IResolutionReceiver.resolutionComplete}
        N)rsrr�errbackrrvrr"s rr@zFirstOneWins.resolutionCompletes1���>�>�������~�d�.>�.>�.C�.C�D�ErN)r$r%r&r'rrNr>r@r(rrrprp�s����&�	.�Frrpc��eZdZdZd�Zdd�Zy)�ComplexResolverSimplifierzE
    A converter from L{IHostnameResolver} to L{IResolverSimple}
    c��||_y)z�
        Create a L{ComplexResolverSimplifier} with an L{IHostnameResolver}.

        @param nameResolver: The L{IHostnameResolver} to use.
        N)�
_nameResolver)r�nameResolvers  rrz"ComplexResolverSimplifier.__init__s��*��rc�r�t�}|jjt|�|dtg�|S)z�
        See L{IResolverSimple.getHostByName}

        @param name: see L{IResolverSimple.getHostByName}

        @param timeouts: see L{IResolverSimple.getHostByName}

        @return: see L{IResolverSimple.getHostByName}
        r)rrrUrpr)rr�timeoutsrAs    rrlz'ComplexResolverSimplifier.getHostByName&s1��������*�*�<��+?��q�;�-�X��
rN)r()r$r%r&r'rrlr(rrr}r}s���*�rr}N)*r'�socketrrrrrrr	�zope.interfacer
�twisted.internet._idnar�twisted.internet.addressrr
�twisted.internet.deferr�twisted.internet.errorr�twisted.internet.interfacesrrrr�twisted.internet.threadsr�twisted.loggerr�twisted.python.compatrrrLrKrJr=rMr?r,rXrpr}r(rr�<module>r�sQ��
����'�-�=�+�1���7�!�.�
�_��
$�
$��
$� �+�{�+�,���{�m��g�
�{�m��h��)��
��[��k�
�	�����������
�
��O�O� �O�d
�
��G�G� �G�T
�
 �!�&F�&F�"�&F�R
�_�����r