o
    'h                     @   sF   d dl Z d dlZd dlmZmZmZ d dlZd dlZG dd dZ	dS )    N)IteratorOptionalTuplec                   @   s  e Zd Zd)dedefddZdefddZd	edefd
dZd*dedefddZdefddZ	defddZ
defddZdefddZdefddZdedefddZd+ded ddfd d!Zd"eddfd#d$Zejd	edefd%d&Zejdefd'd(ZdS ),Parserr   wirecurrentc                 C   s0   || _ d| _t| j | _|r| | || _d S Nr   )r   r   lenendseekfurthest)selfr   r    r   D/var/www/html/olx_land/venv/lib/python3.10/site-packages/dns/wire.py__init__   s   

zParser.__init__returnc                 C   s   | j | j S N)r
   r   r   r   r   r   	remaining   s   zParser.remainingsizec                 C   sX   |dksJ ||   krtjj| j| j| j|  }|  j|7  _t| j| j| _|S r   )r   dns	exception	FormErrorr   r   maxr   )r   r   outputr   r   r   	get_bytes   s   zParser.get_bytes   length_sizec                 C   s   t | |d}| |S )Nbigint
from_bytesr   )r   r   lengthr   r   r   get_counted_bytes    s   
zParser.get_counted_bytesc                 C   s   |  |  S r   )r   r   r   r   r   r   get_remaining$   s   zParser.get_remainingc                 C      t d| dd S )Nz!Br   r   structunpackr   r   r   r   r   	get_uint8'      zParser.get_uint8c                 C   r%   )Nz!H   r   r&   r   r   r   r   
get_uint16*   r*   zParser.get_uint16c                 C   r%   )Nz!I   r   r&   r   r   r   r   
get_uint32-   r*   zParser.get_uint32c                 C   s   t | ddS )N   r   r   r   r   r   r   
get_uint480   s   zParser.get_uint48formatc                 C   s   t || t |S r   )r'   r(   r   calcsize)r   r1   r   r   r   
get_struct3   s   zParser.get_structNoriginzdns.name.Namec                 C   s   t j| }|r||}|S r   )r   namefrom_wire_parser
relativize)r   r4   r5   r   r   r   get_name6   s   
zParser.get_namewherec                 C   s$   |dk s	|| j krtjj|| _d S r   )r
   r   r   r   r   )r   r9   r   r   r   r   <   s   
zParser.seekc                 c   sd    |dksJ ||   krtjj| j}z| j| | _d V  | j| jkr(tjjW || _d S || _w r   )r   r   r   r   r
   r   )r   r   	saved_endr   r   r   restrict_toC   s   zParser.restrict_toc                 c   s"    z
d V  W | j | _d S | j | _w r   )r   r   r   r   r   r   restore_furthestT   s   zParser.restore_furthest)r   )r   r   )__name__
__module____qualname__bytesr    r   r   r   r#   r$   r)   r,   r.   r0   strr   r3   r   r8   r   
contextlibcontextmanagerr   r;   r<   r   r   r   r   r      s"    	r   )
rB   r'   typingr   r   r   dns.exceptionr   dns.namer   r   r   r   r   <module>   s   