o
    GEDi                     @   s   d dl Z d dlmZ d dlmZmZmZ ddlmZ ddl	m
Z
mZmZmZ ddlmZ ddlmZmZ dd	lmZmZmZ G d
d deeeeef  ZdS )    N)suppress)AnyOptionalTuple   )BaseProtocol)ClientOSErrorClientPayloadErrorServerDisconnectedErrorServerTimeoutError)BaseTimerContext)HttpResponseParserRawResponseMessage)EMPTY_PAYLOAD	DataQueueStreamReaderc                       sH  e Zd ZdZdejddfddZedefddZ	edefd	d
Z
d5ddZd5ddZdefddZdee ddf fddZd5ddZd5 fddZd5 fddZdeddf fddZdededdfddZdd d d!dd"d#d$ee d%ed&ed'ed(ee d)eddfd*d+Zd5d,d-Zd5d.d/Zd5d0d1Zd2eddfd3d4Z  Z S )6ResponseHandlerz8Helper class to adapt between Protocol and StreamReader.loopreturnNc                 C   sZ   t j| |d t| | d| _d | _d| _d | _d | _d| _d| _	d | _
d | _d | _d S )N)r   F    )r   __init__r   _should_close_payload_skip_payload_payload_parser_timer_tail	_upgraded_parser_read_timeout_read_timeout_handle)selfr    r"   c/var/www/www-root/data/www/ovozai.pdev.uz/venv/lib/python3.10/site-packages/aiohttp/client_proto.pyr      s   
zResponseHandler.__init__c                 C   s   | j S N)r   r!   r"   r"   r#   upgraded'   s   zResponseHandler.upgradedc                 C   sV   | j d ur
| j  r| jrdS | jp*| jp*|  d up*| jd up*t| dkp*t| jS )NTr   )	r   is_eofr   r   	exceptionr   lenboolr   r%   r"   r"   r#   should_close+   s   

zResponseHandler.should_closec                 C   s
   d| _ d S NT)r   r%   r"   r"   r#   force_close9   s   
zResponseHandler.force_closec                 C   s2   | j }|d ur|  d | _ d | _|   d S d S r$   )	transportcloser   _drop_timeout)r!   r.   r"   r"   r#   r/   <   s   zResponseHandler.closec                 C   s   | j d uo
| j   S r$   )r.   
is_closingr%   r"   r"   r#   is_connectedD   s   zResponseHandler.is_connectedexcc                    s   |    | jd ur"tt | j  W d    n1 sw   Y  d }| jd urGz| j }W n tyF   | jd urD| jtd Y nw | 	 sbt
|trUt|j }|d u r]t|}| | d| _d | _d | _d | _d| _t | d S )Nz!Response payload is not completedTF)r0   r   r   	Exceptionfeed_eofr   r   set_exceptionr	   r'   
isinstanceOSErrorr   argsr
   r   _reading_pausedsuperconnection_lost)r!   r3   uncompleted	__class__r"   r#   r<   G   s8   






zResponseHandler.connection_lostc                 C   s   |    d S r$   )r0   r%   r"   r"   r#   eof_receivedi   s   zResponseHandler.eof_receivedc                       t    |   d S r$   )r;   pause_readingr0   r%   r>   r"   r#   rB   m      
zResponseHandler.pause_readingc                    rA   r$   )r;   resume_reading_reschedule_timeoutr%   r>   r"   r#   rD   q   rC   zResponseHandler.resume_readingc                    s   d| _ |   t | d S r,   )r   r0   r;   r6   r!   r3   r>   r"   r#   r6   u   s   zResponseHandler.set_exceptionparserpayloadc                 C   s:   || _ || _|   | jr| jd}| _| | d S d S )Nr   )r   r   r0   r   data_received)r!   rG   rH   datar"   r"   r#   
set_parserz   s   zResponseHandler.set_parserFTi   )timerskip_payloadread_until_eofauto_decompressread_timeoutread_bufsizerL   rM   rN   rO   rP   rQ   c             
   C   sX   || _ || _|   t| | j||t| ||d| _| jr*| jd}| _| | d S d S )N)rL   payload_exceptionresponse_with_bodyrN   rO   r   )	r   r   rE   r   _loopr	   r   r   rI   )r!   rL   rM   rN   rO   rP   rQ   rJ   r"   r"   r#   set_response_params   s"   
z#ResponseHandler.set_response_paramsc                 C   s"   | j d ur| j   d | _ d S d S r$   )r    cancelr%   r"   r"   r#   r0      s   


zResponseHandler._drop_timeoutc                 C   s>   | j }| jd ur| j  |r| j|| j| _d S d | _d S r$   )r   r    rV   rT   
call_later_on_read_timeout)r!   timeoutr"   r"   r#   rE      s   



z#ResponseHandler._reschedule_timeoutc                 C   s0   t d}| | | jd ur| j| d S d S )Nz#Timeout on reading data from socket)r   r6   r   rF   r"   r"   r#   rX      s
   

z ResponseHandler._on_read_timeoutrJ   c           	   
   C   sp  |    |sd S | jd ur&| j|\}}|r$d | _d | _|r$| | d S | js.| jd u r7|  j|7  _d S z| j|\}}}W n" tyd } z| j	d urT| j	
  | | W Y d }~d S d }~ww || _d }|D ]&\}}|jrvd| _|| _| js|jdv r| |tfd ql| ||fd ql|d ur|tur|| j n|   |r|r| | d S || _d S d S )NT)   i0  r   )rE   r   	feed_datar   rI   r   r   r   BaseExceptionr.   r/   r6   r+   r   r   coder   on_eofr0   )	r!   rJ   eoftailmessagesr&   r3   rH   messager"   r"   r#   rI      sP   






zResponseHandler.data_received)r   N)!__name__
__module____qualname____doc__asyncioAbstractEventLoopr   propertyr*   r&   r+   r-   r/   r2   r   r\   r<   r@   rB   rD   r6   r   rK   r   floatintrU   r0   rE   rX   bytesrI   __classcell__r"   r"   r>   r#   r      sR    


"	



r   )rg   
contextlibr   typingr   r   r   base_protocolr   client_exceptionsr   r	   r
   r   helpersr   httpr   r   streamsr   r   r   r   r"   r"   r"   r#   <module>   s    "