
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
U
    'â7`ã  ã                   @   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                	       sP  e Zd ZdZejddœdd„Zeedœdd„ƒZ	eedœd	d
„ƒZ
ddœdd„Zddœdd„Zedœdd„Zee ddœ‡ fdd„Zddœdd„Zddœ‡ fdd„Zddœ‡ fdd„Zeddœ‡ fdd„Zeeddœdd„Zdddd dd!d"œee eeeee edd#œd$d%„Zddœd&d'„Zddœd(d)„Zddœd*d+„Zedd,œd-d.„Z‡  Z S )/ÚResponseHandlerz8Helper class to adapt between Protocol and StreamReader.N)ÚloopÚreturnc                 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_parserZ_timerÚ_tailÚ	_upgradedÚ_parserÚ_read_timeoutÚ_read_timeout_handle)Úselfr   © r!   úG/opt/alt/python38/lib64/python3.8/site-packages/aiohttp/client_proto.pyr      s    zResponseHandler.__init__)r   c                 C   s   | j S ©N)r   ©r    r!   r!   r"   Úupgraded'   s    zResponseHandler.upgradedc                 C   sV   | j d k	r| j  ¡ r| jrdS | jpT| jpT|  ¡ d k	pT| jd k	pTt| ƒdkpTt| 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   s.   | j }|d k	r*| ¡  d | _ d | _|  ¡  d S r#   )Ú	transportÚcloser   Ú_drop_timeout)r    r-   r!   r!   r"   r.   <   s    zResponseHandler.closec                 C   s   | j d k	o| j  ¡  S r#   )r-   Z
is_closingr$   r!   r!   r"   Úis_connectedD   s    zResponseHandler.is_connected)Úexcr   c              	      sà   |   ¡  | jd k	r0ttƒ� | j ¡  W 5 Q R X d }| jd k	r|z| j ¡ }W n. tk
rz   | jd k	rv| j tdƒ¡ Y nX |  	¡ s²t
|tƒr˜t|jŽ }|d kr¨t|ƒ}|  |¡ d| _d | _d | _d | _d| _tƒ  |¡ d S )Nz!Response payload is not completedTF)r/   r   r   Ú	ExceptionZfeed_eofr   r   Úset_exceptionr	   r&   Ú
isinstanceÚOSErrorr   Úargsr
   r   Z_reading_pausedÚsuperÚconnection_lost)r    r1   Zuncompleted©Ú	__class__r!   r"   r8   G   s2    



ÿ



zResponseHandler.connection_lostc                 C   s   |   ¡  d S r#   )r/   r$   r!   r!   r"   Úeof_receivedi   s    zResponseHandler.eof_receivedc                    s   t ƒ  ¡  |  ¡  d S r#   )r7   Úpause_readingr/   r$   r9   r!   r"   r<   m   s    
zResponseHandler.pause_readingc                    s   t ƒ  ¡  |  ¡  d S r#   )r7   Úresume_readingÚ_reschedule_timeoutr$   r9   r!   r"   r=   q   s    
zResponseHandler.resume_readingc                    s   d| _ |  ¡  tƒ  |¡ d S r+   )r   r/   r7   r3   ©r    r1   r9   r!   r"   r3   u   s    zResponseHandler.set_exception)ÚparserÚpayloadr   c                 C   s6   || _ || _|  ¡  | jr2| jd }| _|  |¡ d S )Nr   )r   r   r/   r   Údata_received)r    r@   rA   Údatar!   r!   r"   Ú
set_parserz   s    zResponseHandler.set_parserFTi   )ÚtimerÚskip_payloadÚread_until_eofÚauto_decompressÚread_timeoutÚread_bufsize)rE   rF   rG   rH   rI   rJ   r   c             
   C   sT   || _ || _|  ¡  t| | j||t| ||d�| _| jrP| jd }| _|  |¡ d S )N)rE   Zpayload_exceptionZresponse_with_bodyrG   rH   r   )	r   r   r>   r   Ú_loopr	   r   r   rB   )r    rE   rF   rG   rH   rI   rJ   rC   r!   r!   r"   Úset_response_params‰   s     
øz#ResponseHandler.set_response_paramsc                 C   s   | j d k	r| j  ¡  d | _ d S r#   )r   Úcancelr$   r!   r!   r"   r/   §   s    

zResponseHandler._drop_timeoutc                 C   s<   | j }| jd k	r| j ¡  |r2| j || j¡| _nd | _d S r#   )r   r   rM   rK   Z
call_laterÚ_on_read_timeout)r    Útimeoutr!   r!   r"   r>   ¬   s    

 ÿz#ResponseHandler._reschedule_timeoutc                 C   s,   t dƒ}|  |¡ | jd k	r(| j |¡ d S )Nz#Timeout on reading data from socket)r   r3   r   r?   r!   r!   r"   rN   ¸   s    

z ResponseHandler._on_read_timeout)rC   r   c           	   
   C   sx  |   ¡  |sd S | jd k	rL| j |¡\}}|rHd | _d | _|rH|  |¡ d S | js\| jd krn|  j|7  _�nz| j |¡\}}}W nF tk
rÊ } z(| j	d k	rª| j	 
¡  |  |¡ W Y ¢d S d }~X Y nX || _d }|D ]P\}}|jrîd| _|| _| j�s|jdk�r|  |tfd¡ qÚ|  ||fd¡ qÚ|d k	�rV|tk	�rN| | j¡ n|  ¡  |�rt|�rn|  |¡ n|| _d S )NT)éÌ   i0  r   )r>   r   Z	feed_datar   rB   r   r   r   ÚBaseExceptionr-   r.   r3   r*   r   r   Úcoder   Zon_eofr/   )	r    rC   ÚeofÚtailÚmessagesr%   r1   rA   Úmessager!   r!   r"   rB   ¾   sJ    






zResponseHandler.data_received)!Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚasyncioZAbstractEventLoopr   Úpropertyr)   r%   r*   r,   r.   r0   r   rQ   r8   r;   r<   r=   r3   r   rD   r   ÚfloatÚintrL   r/   r>   rN   ÚbytesrB   Ú__classcell__r!   r!   r9   r"   r      sD   "ø÷r   )r[   Ú
contextlibr   Útypingr   r   r   Zbase_protocolr   Zclient_exceptionsr   r	   r
   r   Zhelpersr   Úhttpr   r   Zstreamsr   r   r   r   r!   r!   r!   r"   Ú<module>   s   