← Back
Editing: cache.cpython-38.pyc
U W[� � @ 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 sd t j�| � i | _|| _i | _|d kr2ddlm} || _|r`|� � D ]\}\}}| � |||� qDd S )Nr )�reactor)r �ResolverBase�__init__�cache�verbose�cancel�twisted.internetr �_reactor�items�cacheResult)�selfr r r �query�seconds�payload� r �5/usr/lib/python3/dist-packages/twisted/names/cache.pyr s zCacheResolver.__init__c C sb || _ | j�� }| j�� D ]B\}\}\}}}|| }|| | D ]} | j|k r@| j|= qq@qd 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( | j �� D ]}|� � q | j �� | jS r )r �values�clearr )r �cr r r �__getstate__4 s zCacheResolver.__getstate__c s | j �� }t�|||�}z| j| \}\}} } W nF tk rv | jdkr\t�dt |� � t �t� t�|��� Y S X | jr�t�dt |� � || � z8� fdd�|D �� fdd�| D �� fdd�| D �f}W n, tk � r� t �t� t�|��� Y 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 ZRRHeader�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/ r2 r r r3 M s ��c s. g | ]&}t �|jj|j|j|j� |j��qS r r+ r/ r2 r r r3 O s ��)r r r ZQueryr �KeyErrorr r �msg�reprr �failr �Failure�DomainError� ValueErrorZsucceed)r r, r. r- �timeoutr �qr r! Zauthr"