B `@sddlZddlmZddlmZmZmZddlmZddl m Z m Z m Z m Z ddlmZddlmZmZdd lmZmZmZGd d d eeeeefZdS) N)suppress)AnyOptionalTuple) BaseProtocol) ClientOSErrorClientPayloadErrorServerDisconnectedErrorServerTimeoutError)BaseTimerContext)HttpResponseParserRawResponseMessage) EMPTY_PAYLOAD DataQueue StreamReaderc sPeZdZdZejddddZeedddZ eedd d Z ddd d Z ddd dZ edddZ eeddfdd ZddddZddfdd Zddfdd Zeddfdd ZeeddddZdddd dd!d"eeeeeeeedd#d$d%Zddd&d'Zddd(d)Zddd*d+Zedd,d-d.ZZ S)/ResponseHandlerz8Helper class to adapt between Protocol and StreamReader.N)loopreturncCsZtj||dt||d|_d|_d|_d|_d|_d|_d|_ d|_ d|_ d|_ dS)N)rF) r__init__r _should_close_payload _skip_payload_payload_parserZ_timer_tail _upgraded_parser _read_timeout_read_timeout_handle)selfrr!o/private/var/folders/7j/8686xlfs15q3tgljmghtvg0r0000gn/T/pip-target-isidps9b/lib/python/aiohttp/client_proto.pyrs zResponseHandler.__init__)rcCs|jS)N)r)r r!r!r"upgraded'szResponseHandler.upgradedcCsV|jdk r|jr|jrdS|jpT|jpT|dk pT|jdk pTt|dkpTt|jS)NTr) ris_eofrr exceptionrlenboolr)r r!r!r" should_close+s   zResponseHandler.should_closecCs d|_dS)NT)r)r r!r!r" force_close9szResponseHandler.force_closecCs.|j}|dk r*|d|_d|_|dS)N) transportcloser _drop_timeout)r r*r!r!r"r+<s zResponseHandler.closecCs|jdk o|j S)N)r*Z is_closing)r r!r!r" is_connectedDszResponseHandler.is_connected)excrc s||jdk r0tt|jWdQRXd}|jdk r|y|j}Wn.tk rz|jdk rv|jtdYnX| st |t rt |j }|dkrt|}||d|_d|_d|_d|_d|_t|dS)Nz!Response payload is not completedTF)r,rr ExceptionZfeed_eofrr set_exceptionr r$ isinstanceOSErrorrargsr rZ_reading_pausedsuperconnection_lost)r r.Z uncompleted) __class__r!r"r5Gs0       zResponseHandler.connection_lostcCs |dS)N)r,)r r!r!r" eof_receivediszResponseHandler.eof_receivedcst|dS)N)r4 pause_readingr,)r )r6r!r"r8ms zResponseHandler.pause_readingcst|dS)N)r4resume_reading_reschedule_timeout)r )r6r!r"r9qs zResponseHandler.resume_readingcsd|_|t|dS)NT)rr,r4r0)r r.)r6r!r"r0uszResponseHandler.set_exception)parserpayloadrcCs6||_||_||jr2|jd}|_||dS)Nr)rrr,r data_received)r r;r<datar!r!r" set_parserzs zResponseHandler.set_parserFTi)timer skip_payloadread_until_eofauto_decompress read_timeout read_bufsize)r@rArBrCrDrErc CsT||_||_|t||j||t| ||d|_|jrP|jd}|_||dS)N)r@Zpayload_exceptionZresponse_with_bodyrBrCr) rrr:r _loopr rrr=)r r@rArBrCrDrEr>r!r!r"set_response_paramss  z#ResponseHandler.set_response_paramscCs|jdk r|jd|_dS)N)rcancel)r r!r!r"r,s  zResponseHandler._drop_timeoutcCs<|j}|jdk r|j|r2|j||j|_nd|_dS)N)rrrHrFZ call_later_on_read_timeout)r timeoutr!r!r"r:s  z#ResponseHandler._reschedule_timeoutcCs,td}|||jdk r(|j|dS)Nz#Timeout on reading data from socket)r r0r)r r.r!r!r"rIs  z ResponseHandler._on_read_timeout)r>rc Csv||sdS|jdk rL|j|\}}|rHd|_d|_|rH||dS|js\|jdkrn|j|7_ny|j|\}}}Wn@tk r}z"|j dk r|j | |dSd}~XYnX||_d}xX|D]P\}}|j rd|_ ||_|js|jdkr||tfdq|||fdqW|dk rT|tk rL||jn||rr|rl||n||_dS)NT)i0r)r:rZ feed_datarr=rrr BaseExceptionr*r+r0r(rrcoderZon_eofr,) r r>eoftailmessagesr#r.r<messager!r!r"r=sJ        zResponseHandler.data_received)!__name__ __module__ __qualname____doc__asyncioZAbstractEventLooprpropertyr'r#r(r)r+r-rrLr5r7r8r9r0rr?r floatintrGr,r:rIbytesr= __classcell__r!r!)r6r"rs4 " r)rV contextlibrtypingrrrZ base_protocolrZclient_exceptionsrr r r Zhelpersr httpr rZstreamsrrrrr!r!r!r"s