o
    Š©Zh—  ã                   @   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	   úM/var/www/html/lang_env/lib/python3.10/site-packages/gunicorn/http/unreader.pyÚ__init__   ó   zUnreader.__init__c                 C   s   t ƒ ‚r   )ÚNotImplementedErrorr   r	   r	   r
   Úchunk   s   zUnreader.chunkNc                 C   s  |d urt |tƒstdƒ‚|d ur|dkrdS |dk rd }| j dtj¡ |d u r:| j ¡ r:| j ¡ }t	 
¡ | _|S |d u rD|  ¡ }|S | j ¡ |k rj|  ¡ }|s]| j ¡ }t	 
¡ | _|S | j |¡ | j ¡ |k sK| 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   s6   



ú

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.unreadr   )Ú__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   ?   r   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   s2   | j sdS zt| j ƒW S  ty   d | _ Y dS w )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
   ,
