
    *GjY1              	           d dl Z d dlmZ d dlmZmZ ddlmZ ddlm	Z	m
Z
mZmZmZ ddlmZmZmZmZmZmZ ddlmZmZ dd	lmZ dd
lmZmZmZ  G d deeeeef                            ZdS )    N)suppress)AnyCallable   )BaseProtocol)ClientConnectionErrorClientOSErrorClientPayloadErrorServerDisconnectedErrorSocketTimeoutError)_EXC_SENTINELDEFAULT_CHUNK_SIZEEMPTY_BODY_STATUS_CODESBaseTimerContextset_exception
set_result)HttpResponseParserRawResponseMessage)HttpProcessingError)EMPTY_PAYLOAD	DataQueueStreamReaderc                   2    e Zd ZdZdej        ddfdZeddej        d         z  fd            Z	ede
fd            Zede
fd            Zd2d	Zd2d
Zd2dZde
fdZdedz  ddf fdZd2dZd2 fdZd3de
ddf fdZefdededdf fdZ	 d4dededeg df         dz  ddfdZdddddeddddd
dedz  d e
d!e
d"e
d#edz  d$ed%ed&ed'ed(eddfd)Zd2d*Z d2d+Z!d2d,Z"ededz  fd-            Z#e#j$        d#edz  ddfd.            Z#d2d/Z%d0e&ddfd1Z' xZ(S )5ResponseHandlerz8Helper class to adapt between Protocol and StreamReader.loopreturnNc                    t          j        | |d            t          j        | |           d| _        d | _        d| _        d | _        d | _        d | _        d| _	        d | _
        d | _        d| _        d | _        d| _        d S )N)r   parserF       )r   __init__r   _should_close_payload_skip_payload_payload_parser_data_received_cb_timer_tail_read_timeout_read_timeout_handle_timeout_ceil_threshold_closed_connection_lost_called)selfr   s     \/home/rurouni/.hermes/hermes-agent/venv/lib/python3.11/site-packages/aiohttp/client_proto.pyr!   zResponseHandler.__init__   s    dd;;;;4&&&"-1"#<@
+/@D!56$48',$$$r   c                 h    | j         %| j        s| j                                        | _         | j         S )a6  Future that is set when the connection is closed.

        This property returns a Future that will be completed when the connection
        is closed. The Future is created lazily on first access to avoid creating
        futures that will never be awaited.

        Returns:
            - A Future[None] if the connection is still open or was closed after
              this property was accessed
            - None if connection_lost() was already called before this property
              was ever accessed (indicating no one is waiting for the closure)
        )r,   r-   _loopcreate_futurer.   s    r/   closedzResponseHandler.closed3   s1     <(D:3355DL|r   c                     | j         S N)	_upgradedr3   s    r/   upgradedzResponseHandler.upgradedE   s
    ~r   c                     t          | j        pI| j        d uo| j                                         p&| j        p| j        d up| j        d up| j        p| j                  S r6   )	boolr"   r#   is_eofr7   
_exceptionr%   _bufferr(   r3   s    r/   should_closezResponseHandler.should_closeI   s     T)H$-2F2F2H2H.H~ d* #4/	
 | z
 
 	
r   c                     d| _         d S NT)r"   r3   s    r/   force_closezResponseHandler.force_closeU   s    !r   c                     d | _         | j        }|8|                                 d | _        d | _        |                                  d S d S r6   )r<   	transportcloser#   _drop_timeoutr.   rC   s     r/   rD   zResponseHandler.closeX   T    N	 OO!DN DM     	 ! r   c                     d | _         | j        }|8|                                 d | _        d | _        |                                  d S d S r6   )r<   rC   abortr#   rE   rF   s     r/   rI   zResponseHandler.aborta   rG   r   c                 H    | j         d uo| j                                          S r6   )rC   
is_closingr3   s    r/   is_connectedzResponseHandler.is_connectedj   s%    ~T)M$.2K2K2M2M.MMr   excc                    d| _         |                                  |}|}|d u }| j        B|rt          | j        d            n*|J t	          | j        t          d|          |           | j        Et          t                    5  | j        	                                 d d d            n# 1 swxY w Y   d }| j
        j	 | j
        	                                }nO# t          $ rB}| j        1d|}|s|d|}t	          | j        t          |          |           Y d }~nd }~ww xY w|                                 s]t          |t                    rt!          |j         }|rt%          |          }|rt&          n|}|J |J |                     ||           d| _        d | _
        d | _        d | _        d| _        t-                                          |           d S )NTzConnection lost: z#Response payload is not completed: z. F)r-   rE   r,   r   r   r   r%   r   	Exceptionfeed_eof_parserr#   r
   r;   
isinstanceOSErrorr	   argsr   r   r"   _reading_pausedsuperconnection_lost)
r.   rM   original_connection_errorreraised_excconnection_closed_cleanlyuncompletedunderlying_excclient_payload_exc_msgunderlying_non_eof_exc	__class__s
            r/   rW   zResponseHandler.connection_lostm   s   '+$$'!0$=$E!<# ) 
4<....0<<<L)J,EJJ  .   +)$$ 0 0$--///0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 <#"l3355   =,QnQQ + 5 5 > >8> > / "*+ABB&    {{}} 	E3W== N,.G.LM( D6{CC
 -/. #
 *555+++|-CDDD!#$-----s*   	B//B36B3C 
D*(8D%%D*c                 .    |                                   d S r6   )rE   r3   s    r/   eof_receivedzResponseHandler.eof_received   s    r   c                 p    t                                                       |                                  d S r6   )rV   pause_readingrE   )r.   r_   s    r/   rc   zResponseHandler.pause_reading   s1    r   Tresume_parserc                 r    t                                          |           |                                  d S r6   )rV   resume_reading_reschedule_timeout)r.   rd   r_   s     r/   rf   zResponseHandler.resume_reading   s3    }---  """""r   	exc_causec                     d| _         |                                  t                                          ||           d S r@   )r"   rE   rV   r   )r.   rM   rh   r_   s      r/   r   zResponseHandler.set_exception   s?    
 "c9-----r   r   payloaddata_received_cbc                     || _         || _        || _        |                                  | j        r&| j        dc}| _        |                     |           d S d S )Nr   )r#   r%   r&   rE   r(   data_received)r.   r   rj   rk   datas        r/   
set_parserzResponseHandler.set_parser   sk      %!1: 	%#z3D$*t$$$$$	% 	%r   Fr    i     )
timerskip_payloadread_until_eofauto_decompressread_timeoutread_bufsizetimeout_ceil_thresholdmax_line_sizemax_field_sizemax_headersrq   rr   rs   rt   ru   rv   rw   rx   ry   rz   c       
             || _         || _        || _        t          | | j        ||t
          | ||||	|
          | _        | j        r&| j        dc}| _        |                     |           d S d S )N)rq   payload_exceptionresponse_with_bodyrs   rt   rx   ry   rz   r   )	r$   r)   r+   r   r1   r
   rQ   r(   rm   )r.   rq   rr   rs   rt   ru   rv   rw   rx   ry   rz   rn   s               r/   set_response_paramsz#ResponseHandler.set_response_params   s     *)'=$)J0#//)+')#
 
 
 : 	%#z3D$*t$$$$$	% 	%r   c                 X    | j         "| j                                          d | _         d S d S r6   )r*   cancelr3   s    r/   rE   zResponseHandler._drop_timeout  s6    $0%,,...(,D%%% 10r   c                     | j         }| j        | j                                         |r'| j                            || j                  | _        d S d | _        d S r6   )r)   r*   r   r1   
call_later_on_read_timeout)r.   timeouts     r/   rg   z#ResponseHandler._reschedule_timeout  sh    $$0%,,... 	-(,
(=(=.) )D%%% )-D%%%r   c                 .    |                                   d S r6   )rg   r3   s    r/   start_timeoutzResponseHandler.start_timeout  s      """""r   c                     | j         S r6   r)   r3   s    r/   ru   zResponseHandler.read_timeout  s    !!r   c                     || _         d S r6   r   )r.   ru   s     r/   ru   zResponseHandler.read_timeout   s    )r   c                     t          d          }|                     |           | j        t          | j        |           d S d S )Nz#Timeout on reading data from socket)r   r   r#   )r.   rM   s     r/   r   z ResponseHandler._on_read_timeout$  sL     !FGG3=$$------ %$r   rn   c                 d   |r|                                   | j        a| j        |                                  | j                            |          \  }}|r%d | _        d | _        |r|                     |           d S | j        s| j        | xj        |z  c_        d S 	 | j                            |          \  }}}n# t          $ r}| j
        | j
                                         t          |t                    s t          |t                    r"t          |j        |j        |j                  }nt                      }|                     ||           Y d }~d S d }~ww xY w|| _        d }|D ]e\  }	}|	j        rd| _        || _        | j        s|	j        t,          v r|                     |	t.          fd           M|                     |	|fd           f|8|t.          ur|                    | j                   n|                                  |r|r|                     |           d S d S d S )N)codemessageheadersTr   )rg   r%   r&   	feed_datar#   rm   r7   rQ   r(   BaseExceptionrC   rD   rR   rO   r   r   r   r   r   r>   r"   r$   r   r   on_eofrE   )
r.   rn   eoftailmessagesr8   r\   rM   rj   r   s
             r/   rm   zResponseHandler.data_received*  s     	'$$&&& +%1&&(((,66t<<IC - $'+$ -&&t,,,F> 	T\1JJ$JJF	'+|'='=d'C'C$Hh 	 	 	~) $$&&&ni88 .*=>> ,)',*2*2   *++sN333FFFFF%	( "'+ ( 		6 		6GW# *%)"#DM! 6W\5L%L%L7;;;;115555
 m++t12222""$$$ 	% 	%t$$$$$	% 	% 	% 	%s    B? ?
E%	BE  E%)r   N)Tr6   ))__name__
__module____qualname____doc__asyncioAbstractEventLoopr!   propertyFuturer4   r:   r8   r>   rA   rD   rI   rL   r   rW   ra   rc   rf   r   r   r   r   ro   r   r   floatintr~   rE   rg   r   ru   setterr   bytesrm   __classcell__)r_   s   @r/   r   r      s       BB-W6 -4 - - - -, w~d33    X" $    X 	
d 	
 	
 	
 X	
" " " "! ! ! !! ! ! !Nd N N N NI.=4#7 I.D I. I. I. I. I. I.V        # #D #D # # # # # # $1. .. !. 
	. . . . . . 7;	% %% % #2t8,t3	%
 
% % % %0 *."$ $%).()!"$% $% $%  $&$% 	$%
 $% $% dl$% $% !&$% $% $% $% 
$% $% $% $%L- - - -

- 
- 
- 
-# # # # "edl " " " X" * *$ * * * *. . . .H%% H%D H% H% H% H% H% H% H% H%r   r   ) r   
contextlibr   typingr   r   base_protocolr   client_exceptionsr   r	   r
   r   r   helpersr   r   r   r   r   r   httpr   r   http_exceptionsr   streamsr   r   r   tupler    r   r/   <module>r      sz                          ' ' ' ' ' '                             9 8 8 8 8 8 8 8 0 0 0 0 0 0 ; ; ; ; ; ; ; ; ; ;X% X% X% X% X%lIe4F4T.U$V X% X% X% X% X%r   