o
    RÊÆh°!  ã                   @   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_parserÚ_timerÚ_tailÚ	_upgradedÚ_parserÚ_read_timeoutÚ_read_timeout_handleÚ_timeout_ceil_threshold)Úselfr   © r%   úa/var/www/html/HyperOracle/crypto_trader/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_close;   s   
zResponseHandler.force_closec                 C   s2   | j }|d ur| ¡  d | _ d | _|  ¡  d S d S r'   )Ú	transportÚcloser   Ú_drop_timeout)r$   r2   r%   r%   r&   r3   >   s   üzResponseHandler.closec                 C   s   | j d uo
| j  ¡  S r'   )r2   Ú
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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)r4   r   r   Ú	ExceptionÚfeed_eofr    r   Úset_exceptionr	   r+   Ú
isinstanceÚOSErrorr   Úargsr
   r   Ú_reading_pausedÚsuperÚconnection_lost)r$   r7   Úuncompleted©Ú	__class__r%   r&   r@   I   s8   

ÿ

ÿ€þ


zResponseHandler.connection_lostc                 C   ó   |   ¡  d S r'   )r4   r(   r%   r%   r&   Úeof_receivedk   s   zResponseHandler.eof_receivedc                    ó   t ƒ  ¡  |  ¡  d S r'   )r?   Úpause_readingr4   r(   rB   r%   r&   rG   o   ó   
zResponseHandler.pause_readingc                    rF   r'   )r?   Úresume_readingÚ_reschedule_timeoutr(   rB   r%   r&   rI   s   rH   zResponseHandler.resume_readingc                    s   d| _ |  ¡  tƒ  |¡ d S r0   )r   r4   r?   r:   ©r$   r7   rB   r%   r&   r:   w   s   zResponseHandler.set_exceptionÚparserÚpayloadc                 C   s:   || _ || _|  ¡  | jr| jd}| _|  |¡ d S d S )Nr   )r   r   r4   r   Údata_received)r$   rL   rM   Ú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_sizerQ   rR   rS   rT   rU   rV   rW   rX   rY   c       	         C   sZ   || _ || _|| _t| | j||t| ||||	d�
| _| jr+| jd}
| _|  |
¡ d S d S )N)rQ   Úpayload_exceptionÚresponse_with_bodyrS   rT   rX   rY   r   )	r   r!   r#   r   Ú_loopr	   r    r   rN   )r$   rQ   rR   rS   rT   rU   rV   rW   rX   rY   rO   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&   r4   ¯   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^   r\   Ú
call_laterÚ_on_read_timeout)r$   Útimeoutr%   r%   r&   rJ   ´   s   


ÿ
z#ResponseHandler._reschedule_timeoutc                 C   rD   r'   )rJ   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   rK   r%   r%   r&   r`   Ã   s
   

ÿz ResponseHandler._on_read_timeoutrO   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�t|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*   )rJ   r   Ú	feed_datar   rN   r   r    r   ÚBaseExceptionr2   r3   r:   r/   r   r   r   Úcoder   Úon_eofr4   )	r$   rO   ÚeofÚtailÚmessagesr)   r7   rM   Úmessager%   r%   r&   rN   É   sT   




€ø
ÿ
üzResponseHandler.data_received)r   N)"Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚasyncioÚAbstractEventLoopr   Úpropertyr.   r)   r/   r1   r3   r6   r   rd   r@   rE   rG   rI   r:   r   rP   r   ÚfloatÚintr]   r4   rJ   rb   r`   ÚbytesrN   Ú__classcell__r%   r%   rB   r&   r      sf    


"õýüûúùø	÷
öõ
ô
$


r   )ro   Ú
contextlibr   Útypingr   r   r   Úbase_protocolr   Úclient_exceptionsr   r	   r
   r   Úhelpersr   r   Úhttpr   r   Ústreamsr   r   r   r   r%   r%   r%   r&   Ú<module>   s    "