o
    €Ýh?  ã                   @   s"   d dl Z dgZG dd„ deƒZdS )é    NÚReceiveBufferc                   @   sj   e Zd Zdd„ Zdd„ Zdd„ Zejd dk reZeZ	d	d
„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ ZdS )r   c                 C   s   t ƒ | _d| _d| _d| _d S )Nr   ó    )Ú	bytearrayÚ_dataÚ_startÚ
_looked_atÚ_looked_for©Úself© r   úZ/var/www/html/magazine_api/magazine_env/lib/python3.10/site-packages/h11/_receivebuffer.pyÚ__init__*   s   
zReceiveBuffer.__init__c                 C   s   t t| ƒƒS ©N)ÚboolÚlenr	   r   r   r   Ú__bool__1   s   zReceiveBuffer.__bool__c                 C   s   t | j| jd … ƒS r   )Úbytesr   r   r	   r   r   r   Ú	__bytes__5   s   zReceiveBuffer.__bytes__r   é   c                 C   s   t | jƒ| j S r   )r   r   r   r	   r   r   r   Ú__len__<   s   zReceiveBuffer.__len__c                 C   sJ   | j t| jƒd kr#| jd | j …= |  j| j 8  _|  j | j 8  _ d S d S )Né   )r   r   r   r   r	   r   r   r   Úcompress?   s
   ýzReceiveBuffer.compressc                 C   s   |  j |7  _ | S r   )r   )r
   Z	bytesliker   r   r   Ú__iadd__G   s   zReceiveBuffer.__iadd__c                 C   s4   | j | j| j| … }|sd S |  jt|ƒ7  _|S r   )r   r   r   )r
   ÚcountÚoutr   r   r   Úmaybe_extract_at_mostK   s
   z#ReceiveBuffer.maybe_extract_at_mostc                 C   s~   | j |krt| j| jt|ƒ d ƒ}n| j}| j ||¡}|dkr,t| jƒ| _|| _ d S |t|ƒ }| j| j|… }|| _|S )Né   éÿÿÿÿ)r   Úmaxr   r   r   r   Úfind)r
   ÚneedleZsearch_startÚoffsetÚ	new_startr   r   r   r   Úmaybe_extract_until_nextR   s   
z&ReceiveBuffer.maybe_extract_until_nextc                 C   s~   | j | j| jd … dkr|  jd7  _g S |  d¡}|d u r!d S | d¡}|d |d   kr5dks8J ‚ J ‚|dd …= |S )Nr   s   
s   

éþÿÿÿr   r   )r   r   r#   Úsplit)r
   ÚdataÚlinesr   r   r   Úmaybe_extract_linese   s   

$
z!ReceiveBuffer.maybe_extract_linesN)Ú__name__Ú
__module__Ú__qualname__r   r   r   ÚsysÚversion_infoÚ__str__Ú__nonzero__r   r   r   r   r#   r(   r   r   r   r   r   )   s    )r,   Ú__all__Úobjectr   r   r   r   r   Ú<module>   s    &