§
    ÈtºfÁ  ã                   ó\   — d Z ddlmZ ddlmZmZ ddlmZmZ  G d„ dej	        ¦  «        Z
dS )z 
An in-memory caching resolver.
é    )Údefer)ÚcommonÚdns)ÚfailureÚlogc                   óF   — e Zd ZdZdZdd„Zd„ Zd„ Zd„ Zdd„Z	dd	„Z
d
„ ZdS )ÚCacheResolverzƒ
    A resolver that serves records from a local, memory cache.

    @ivar _reactor: A provider of L{interfaces.IReactorTime}.
    Nr   c                 óü   — t           j                             | ¦  «         i | _        || _        i | _        |€ddlm} || _        |r4| 	                    ¦   «         D ]!\  }\  }}|  
                    |||¦  «         Œ d S d S )Nr   )Úreactor)r   ÚResolverBaseÚ__init__ÚcacheÚverboseÚcancelÚtwisted.internetr   Ú_reactorÚitemsÚcacheResult)Úselfr   r   r   ÚqueryÚsecondsÚpayloads          úR/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/twisted/names/cache.pyr   zCacheResolver.__init__   s¤   € ÝÔ×$Ò$ TÑ*Ô*Ð*àˆŒ
ØˆŒØˆŒØˆ?Ø0Ð0Ð0Ð0Ð0Ð0ØˆŒàð 	:Ø-2¯[ª[©]¬]ð :ð :Ñ)�Ñ)˜ Ø× Ò  ¨°Ñ9Ô9Ð9Ð9ð	:ð 	:ð:ð :ó    c                 óÜ   — || _         | j                             ¦   «         }| j                             ¦   «         D ]1\  }\  }\  }}}||z
  }||z   |z   D ]}	|	j        |k     r
| j        |=  nŒŒ2d S ©N)Ú__dict__r   r   r   r   Úttl)
r   ÚstateÚnowÚkÚwhenÚansÚaddÚnsÚdiffÚrecs
             r   Ú__setstate__zCacheResolver.__setstate__&   s’   € ØˆŒàŒm×#Ò#Ñ%Ô%ˆØ)-¬×)9Ò)9Ñ);Ô);ð 	ð 	Ñ%ˆAÑ%�‘n�s˜C Ø˜‘:ˆDØ˜S‘y 2‘~ð ð �Ø”7˜T’>�>Øœ
 1˜Ø�Eð "øð	ð 	r   c                 ó¢   — | j                              ¦   «         D ]}|                      ¦   «          Œ| j                              ¦   «          | j        S r   )r   ÚvaluesÚclearr   )r   Úcs     r   Ú__getstate__zCacheResolver.__getstate__1   sJ   € Ø”×#Ò#Ñ%Ô%ð 	ð 	ˆAØ�HŠH‰JŒJˆJˆJØŒ×ÒÑÔÐØŒ}Ðr   c                 óæ  ‡— | j                              ¦   «         }t          j        |||¦  «        }	 | j        |         \  }\  }}	}
| j        r$t          j        dt          |¦  «        z   ¦  «         ||z
  Š	 ˆfd„|D ¦   «         ˆfd„|	D ¦   «         ˆfd„|
D ¦   «         f}t          j
        |¦  «        S # t          $ r; t          j        t          j        t          j        |¦  «        ¦  «        ¦  «        cY S w xY w# t           $ rj | j        dk    r$t          j        dt          |¦  «        z   ¦  «         t          j        t          j        t          j        |¦  «        ¦  «        ¦  «        cY S w xY w)NzCache hit for c           	      ó‚   •— g | ];}t          j        |j        j        |j        |j        |j        ‰z
  |j        ¦  «        ‘Œ<S © ©r   ÚRRHeaderÚnameÚtypeÚclsr   r   ©Ú.0Úrr&   s     €r   ú
<listcomp>z)CacheResolver._lookup.<locals>.<listcomp>G   óR   ø€ ð ð ð ð õ œØœFœK¨¬°´¸¼À¹ÀaÄiñô ðð ð r   c           	      ó‚   •— g | ];}t          j        |j        j        |j        |j        |j        ‰z
  |j        ¦  «        ‘Œ<S r0   r1   r6   s     €r   r9   z)CacheResolver._lookup.<locals>.<listcomp>M   r:   r   c           	      ó‚   •— g | ];}t          j        |j        j        |j        |j        |j        ‰z
  |j        ¦  «        ‘Œ<S r0   r1   r6   s     €r   r9   z)CacheResolver._lookup.<locals>.<listcomp>S   r:   r   é   zCache miss for )r   r   r   ÚQueryr   r   r   ÚmsgÚreprr   ÚsucceedÚ
ValueErrorÚfailr   ÚFailureÚDomainErrorÚKeyError)r   r3   r5   r4   Útimeoutr    Úqr"   r#   Úauthr$   Úresultr&   s               @r   Ú_lookupzCacheResolver._lookup7   sË  ø€ ØŒm×#Ò#Ñ%Ô%ˆÝŒI�d˜D #Ñ&Ô&ˆð#	-Ø%)¤Z°¤]Ñ"ˆDÑ"�3˜˜cð Œ|ð 7Ý”Ð(­4°©:¬:Ñ5Ñ6Ô6Ð6Ø˜‘:ˆDð-ðð ð ð ð "%ð	ñ ô ðð ð ð ð "&ð	ñ ô ðð ð ð ð "%ð	ñ ô ð�õ. ”} VÑ,Ô,Ð,øõ ð Jð Jð JÝ”z¥'¤/µ#´/À$Ñ2GÔ2GÑ"HÔ"HÑIÔIÐIÐIÐIðJøøøøõ= ð 	Fð 	Fð 	FØŒ|˜aÒÐÝ”Ð)­D°©J¬JÑ6Ñ7Ô7Ð7Ý”:�gœo­c¬o¸dÑ.CÔ.CÑDÔDÑEÔEÐEÐEÐEð	Føøøs%   ²C< Á7)B4 Â4AC9Ã8C9Ã<A1E0Å/E0c                 ór   — t          j        t          j        t	          j        |¦  «        ¦  «        ¦  «        S r   )r   rC   r   rD   r   rE   )r   r3   rG   s      r   ÚlookupAllRecordszCacheResolver.lookupAllRecords_   s&   € ÝŒz�'œ/­#¬/¸$Ñ*?Ô*?Ñ@Ô@ÑAÔAÐAr   c                 ó  — | j         dk    rt          j        d|z  ¦  «         |p| j                             ¦   «         |f| j        |<   || j        v r| j        |                              ¦   «          t          |d         ¦  «        t          |d         ¦  «        z   t          |d         ¦  «        z   }|r(|d         j        }|D ]}t          ||j        ¦  «        }Œnd}| j         
                    || j        |¦  «        | j        |<   dS )a±  
        Cache a DNS entry.

        @param query: a L{dns.Query} instance.

        @param payload: a 3-tuple of lists of L{dns.RRHeader} records, the
            matching result of the query (answers, authority and additional).

        @param cacheTime: The time (seconds since epoch) at which the entry is
            considered to have been added to the cache. If L{None} is given,
            the current time is used.
        r=   zAdding %r to cacher   é   N)r   r   r?   r   r   r   r   Úlistr   ÚminÚ	callLaterÚ
clearEntry)r   r   r   Ú	cacheTimeÚsÚmr8   s          r   r   zCacheResolver.cacheResultb   s  € ð Œ<˜!ÒÐÝŒGÐ(¨5Ñ0Ñ1Ô1Ð1à&ÐA¨$¬-×*?Ò*?Ñ*AÔ*AÀ7ÐKˆŒ
�5Ñà�D”KÐÐØŒK˜Ô×%Ò%Ñ'Ô'Ð'å�˜”ÑÔ�t G¨A¤JÑ/Ô/Ñ/µ$°w¸q´zÑ2BÔ2BÑBˆØð 	Ø�!””ˆAØð "ð "�Ý˜˜1œ5‘M”M��ð"ð ˆAà!œ]×4Ò4°Q¸¼ÈÑOÔOˆŒ�EÑÐÐr   c                 ó&   — | j         |= | j        |= d S r   )r   r   )r   r   s     r   rS   zCacheResolver.clearEntry�   s   € ØŒJ�uÐØŒK˜ÐÐÐr   )Nr   Nr   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r(   r-   rK   rM   r   rS   r0   r   r   r	   r	      s¦   € € € € € ðð ð €Eð:ð :ð :ð :ð	ð 	ð 	ðð ð ð&-ð &-ð &-ðPBð Bð Bð BðPð Pð Pð Pð>ð ð ð ð r   r	   N)r[   r   r   Útwisted.namesr   r   Útwisted.pythonr   r   r   r	   r0   r   r   ú<module>r^      s”   ðð
ð ð
 #Ð "Ð "Ð "Ð "Ð "Ø %Ð %Ð %Ð %Ð %Ð %Ð %Ð %Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'ðtð tð tð tð t�FÔ'ñ tô tð tð tð tr   