o
    Zh!                     @   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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status_code_must_be_empty_body)HttpResponseParserRawResponseMessage)EMPTY_PAYLOAD	DataQueueStreamReaderc                       sd  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
d<ddZd<ddZdefddZdee ddf fddZd<ddZd< fddZd< 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$d$d%	d&ee d'ed(ed)ed*ee d+ed,ed-ed.eddfd/d0Zd<d1d2Zd<d3d4Zd<d5d6Zd<d7d8Zd9eddfd:d;Z   Z!S )=ResponseHandlerz8Helper class to adapt between Protocol and StreamReader.loopreturnNc                 C   s`   t j| |d t| | d| _d | _d| _d | _d | _d| _d| _	d | _
d | _d | _d| _d S )N)r   F       )r   __init__r   _should_close_payload_skip_payload_payload_parserZ_timer_tail	_upgraded_parser_read_timeout_read_timeout_handle_timeout_ceil_threshold)selfr    r$   K/var/www/html/lang_env/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_close;   s   
zResponseHandler.force_closec                 C   s2   | j }|d ur|  d | _ d | _|   d S d S r&   )	transportcloser   _drop_timeout)r#   r1   r$   r$   r%   r2   >   s   zResponseHandler.closec                 C   s   | j d uo
| j   S r&   )r1   
is_closingr'   r$   r$   r%   is_connectedF   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rUz| j }W n$ tyT } z| jd urJtd}||_| j	| W Y d }~nd }~ww | 
 spt|trct|j }|d u rkt|}| 	| d| _d | _d | _d | _d| _t | d S )Nz!Response payload is not completedTF)r3   r   r   	Exceptionfeed_eofr   r   r	   	__cause__set_exceptionr*   
isinstanceOSErrorr   argsr
   r   Z_reading_pausedsuperconnection_lost)r#   r6   Zuncompletede	__class__r$   r%   r?   I   s8   






zResponseHandler.connection_lostc                 C      |    d S r&   )r3   r'   r$   r$   r%   eof_receivedk   s   zResponseHandler.eof_receivedc                       t    |   d S r&   )r>   pause_readingr3   r'   rA   r$   r%   rF   o      
zResponseHandler.pause_readingc                    rE   r&   )r>   resume_reading_reschedule_timeoutr'   rA   r$   r%   rH   s   rG   zResponseHandler.resume_readingc                    s   d| _ |   t | d S r/   )r   r3   r>   r:   r#   r6   rA   r$   r%   r:   w   s   zResponseHandler.set_exceptionparserpayloadc                 C   s:   || _ || _|   | jr| jd}| _| | d S d S )Nr   )r   r   r3   r   data_received)r#   rK   rL   datar$   r$   r%   
set_parser|   s   zResponseHandler.set_parserFTi   r   i  )	timerskip_payloadread_until_eofauto_decompressread_timeoutread_bufsizetimeout_ceil_thresholdmax_line_sizemax_field_sizerP   rQ   rR   rS   rT   rU   rV   rW   rX   c       	         C   sZ   || _ || _|| _t| | j||t| ||||	d
| _| jr+| jd}
| _| |
 d S d S )N)rP   Zpayload_exceptionZresponse_with_bodyrR   rS   rW   rX   r   )	r   r    r"   r   _loopr	   r   r   rM   )r#   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rN   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%   r3      s   


zResponseHandler._drop_timeoutc                 C   s>   | j }| jd ur| j  |r| j|| j| _d S d | _d S r&   )r    r!   r[   rY   
call_later_on_read_timeout)r#   timeoutr$   r$   r%   rI      s   



z#ResponseHandler._reschedule_timeoutc                 C   rC   r&   )rI   r'   r$   r$   r%   start_timeout   s   zResponseHandler.start_timeoutc                 C   s0   t d}| | | jd ur| j| d S d S )Nz#Timeout on reading data from socket)r   r:   r   rJ   r$   r$   r%   r]      s
   

z ResponseHandler._on_read_timeoutrN   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st|jr| |tfd ql| ||fd ql|d ur|tur|| j n|   |r|r| | d S || _d S d S r)   )rI   r   	feed_datar   rM   r   r   r   BaseExceptionr1   r2   r:   r.   r   r   r   coder   Zon_eofr3   )	r#   rN   eoftailmessagesr(   r6   rL   messager$   r$   r%   rM      sT   






zResponseHandler.data_received)r   N)"__name__
__module____qualname____doc__asyncioAbstractEventLoopr   propertyr-   r(   r.   r0   r2   r5   r   ra   r?   rD   rF   rH   r:   r   rO   r   floatintrZ   r3   rI   r_   r]   bytesrM   __classcell__r$   r$   rA   r%   r      sf    


"	


$


r   )rk   
contextlibr   typingr   r   r   Zbase_protocolr   Zclient_exceptionsr   r	   r
   r   helpersr   r   httpr   r   streamsr   r   r   r   r$   r$   r$   r%   <module>   s    "