Your IP : 216.73.217.152
B
:��]� � @ sV d Z ddlmZmZ ddlmZmZ ddlmZm Z ddl
mZ G dd� dej�Z
dS ) z
An in-memory caching resolver.
� )�division�absolute_import)�dns�common)�failure�log)�deferc @ sR e Zd ZdZdZddd�Zdd� Zdd � Zd
d� Zddd
�Z ddd�Z
dd� ZdS )�
CacheResolverz�
A resolver that serves records from a local, memory cache.
@ivar _reactor: A provider of L{interfaces.IReactorTime}.
Nr c C sh t j�| � i | _|| _i | _|d kr2ddlm} || _|rdx&|� � D ]\}\}}| �
|||� qFW d S )Nr )�reactor)r �ResolverBase�__init__�cache�verbose�cancel�twisted.internetr
�_reactor�items�cacheResult)�selfr
r r
�query�seconds�payload� r �F/opt/alt/python37/lib64/python3.7/site-packages/twisted/names/cache.pyr s zCacheResolver.__init__c
C sh || _ | j�� }xR| j�� D ]D\}\}\}}}|| }x(|| | D ]} | j|k rD| j|= P qDW qW d S )N)�__dict__r r r
r �ttl)
r �state�now�k�when�ans�add�ns�diffZrecr r r �__setstate__( s
zCacheResolver.__setstate__c C s, x| j �� D ]}|� � qW | j �� | jS )N)r �values�clearr )r �cr r r �__getstate__4 s
zCacheResolver.__getstate__c
s | j �� }t�|||�}y| j| \}\}} }
W nB tk
rr | jdkr\t�dt |� � t
�t�
t�|���S X | jr�t�dt |� � || � y8� fdd�|D �� fdd�| D �� fdd�|
D �f}W n& tk
r� t
�t�
t�|���S X t
�|�S d S )N� zCache miss for zCache hit for c s. g | ]&}t �|jj|j|j|j� |j��qS r )r �RRHeader�name�type�clsr r )�.0�r)r# r r �
<listcomp>K s z)CacheResolver._lookup.<locals>.<listcomp>c s. g | ]&}t �|jj|j|j|j� |j��qS r )r r* r+ r, r- r r )r. r/ )r# r r r0 M s c s. g | ]&}t �|jj|j|j|j� |j��qS r )r r* r+ r, r- r r )r. r/ )r# r r r0 O s )r r r ZQueryr
�KeyErrorr r �msg�reprr �failr �Failure�DomainError�
ValueErrorZsucceed)r r+ r- r, �timeoutr �qr r Zauthr! �resultr )r# r �_lookup; s*
zCacheResolver._lookupc C s t �t�t�|���S )N)r r4 r r5 r r6 )r r+ r8 r r r �lookupAllRecordsW s zCacheResolver.lookupAllRecordsc C s� | j dkrt�d| � |p$| j�� |f| j|<