U
    d                     @   sD   d dl Z d dlZG dd deZG dd deZG dd deZdS )    Nc                   @   s.   e Zd Zdd Zdd Zd
ddZdd	 ZdS )Unreaderc                 C   s   t  | _d S N)ioBytesIObufself r	   O/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/gunicorn/http/unreader.py__init__   s    zUnreader.__init__c                 C   s
   t  d S r   )NotImplementedErrorr   r	   r	   r
   chunk   s    zUnreader.chunkNc                 C   s   |d k	rt |tstd|d k	r:|dkr.dS |dk r:d }| jdtj |d krt| j rt| j }t	
 | _|S |d kr|  }|S | j |k r|  }|s| j }t	
 | _|S | j| q| j }t	
 | _| j||d   |d | S )Nz&size parameter must be an int or long.r       )
isinstanceint	TypeErrorr   seekosSEEK_ENDtellgetvaluer   r   r   write)r   sizeretdr   datar	   r	   r
   read   s4    





zUnreader.readc                 C   s    | j dtj | j | d S )Nr   )r   r   r   r   r   )r   r   r	   r	   r
   unread4   s    zUnreader.unread)N)__name__
__module____qualname__r   r   r   r   r	   r	   r	   r
   r      s   
 r   c                       s&   e Zd Zd fdd	Zdd Z  ZS )SocketUnreader    c                    s   t    || _|| _d S r   )superr   sockmxchunk)r   r$   Z	max_chunk	__class__r	   r
   r   :   s    
zSocketUnreader.__init__c                 C   s   | j | jS r   )r$   recvr%   r   r	   r	   r
   r   ?   s    zSocketUnreader.chunk)r"   r   r   r    r   r   __classcell__r	   r	   r&   r
   r!   9   s   r!   c                       s$   e Zd Z fddZdd Z  ZS )IterUnreaderc                    s   t    t|| _d S r   )r#   r   iter)r   iterabler&   r	   r
   r   D   s    
zIterUnreader.__init__c                 C   s8   | j s
dS zt| j W S  tk
r2   d | _ Y dS X d S )Nr   )r,   nextStopIterationr   r	   r	   r
   r   H   s    zIterUnreader.chunkr)   r	   r	   r&   r
   r+   C   s   r+   )r   r   objectr   r!   r+   r	   r	   r	   r
   <module>   s   ,
