
    <|h	                     8    d Z ddlZddlmZ dgZ G d de      Zy)z(
Native thread-based hostname resolver.
    N)get_hubResolverc                   B    e Zd ZdZddZd Zd Zd Zd Zd Z	d	 Z
d
 Zy)r   a  
    Implementation of the resolver API using native threads and native resolution
    functions.

    Using the native resolution mechanisms ensures the highest
    compatibility with what a non-gevent program would return
    including good support for platform specific configuration
    mechanisms. The use of native (non-greenlet) threads ensures that
    a caller doesn't block other greenlets.

    This implementation also has the benefit of being very simple in comparison to
    :class:`gevent.resolver_ares.Resolver`.

    .. tip::

        Most users find this resolver to be quite reliable in a
        properly monkey-patched environment. However, there have been
        some reports of long delays, slow performance or even hangs,
        particularly in long-lived programs that make many, many DNS
        requests. If you suspect that may be happening to you, try the
        dnspython or ares resolver (and submit a bug report).
    Nc                     |
t               }|j                  | _        t        j                  |j
                  vr4|xj
                  t        j                  t        j                  fz  c_        y y N)r   
threadpoolpool_socketgaierror	NOT_ERRORherror)selfhubs     U/var/www/html/test/engine/venv/lib/python3.12/site-packages/gevent/resolver/thread.py__init__zResolver.__init__$   sO    ;)CNN	3==0 MMg..??M 1    c                     dt        |       j                  t        |       j                  t        |       | j                  fz  S )Nz<%s.%s at 0x%x pool=%r>)type
__module____name__idr	   r   s    r   __repr__zResolver.__repr__-   s=    (DJ,A,A,0J,?,?,.tHdii,A A 	Ar   c                      y r    r   s    r   closezResolver.close2   s    r   c                 V    | j                   j                  t        j                  |      S r   )r	   applyr
   gethostbynamer   argss     r   r   zResolver.gethostbyname8   s    yyw44d;;r   c                 V    | j                   j                  t        j                  |      S r   )r	   r   r
   gethostbyname_exr    s     r   r#   zResolver.gethostbyname_ex;   s    yyw77>>r   c                 X    | j                   j                  t        j                  ||      S r   )r	   r   r
   getaddrinfor   r!   kwargss      r   r%   zResolver.getaddrinfo>       yyw22D&AAr   c                 X    | j                   j                  t        j                  ||      S r   )r	   r   r
   gethostbyaddrr&   s      r   r*   zResolver.gethostbyaddrA   s    yyw44dFCCr   c                 X    | j                   j                  t        j                  ||      S r   )r	   r   r
   getnameinfor&   s      r   r,   zResolver.getnameinfoD   r(   r   r   )r   r   __qualname____doc__r   r   r   r   r#   r%   r*   r,   r   r   r   r   r      s4    ,@A
<?BDBr   )r.   r
   
gevent.hubr   __all__objectr   r   r   r   <module>r2      s)      ,8Bv 8Br   