U ,a h@s&dZddlZddlZddlZddlZeedr6ed7ZddlmZddlmZddlm Z dd lm Z dd lm Z dd l m Z dd lmZd ZddedddZd dedddZeedrd!dedddZd"dedddZGddde jZGdddee jZGdddZGdddZdS)#) StreamReader StreamWriterStreamReaderProtocolopen_connection start_serverNZAF_UNIX)open_unix_connectionstart_unix_server) coroutines)events) exceptions)format_helpers) protocols)logger)sleepi)looplimitc st|dkrt}ntjdtddt||d}t||d|jfdd||f|IdH\}}t|||}||fS)N[The loop argument is deprecated since Python 3.8, and scheduled for removal in Python 3.10. stacklevelrrrcsSNrprotocolr4/opt/alt/python38/lib64/python3.8/asyncio/streams.py5z!open_connection..) r get_event_loopwarningswarnDeprecationWarningrrZcreate_connectionr) hostportrrkwdsreader transport_writerrrrrs"    rcsJdkrtntjdtddfdd}j|||f|IdHS)Nrrrcstd}t|d}|SNrrrrr'rclient_connected_cbrrrrfactoryXs  zstart_server..factory)r r r!r"r#Z create_server)r/r$r%rrr&r0rr.rr:s rcsr|dkrt}ntjdtddt||d}t||d|jfdd|f|IdH\}}t|||}||fS)NrrrrrcsSrrrrrrrprz&open_unix_connection..) r r r!r"r#rrZcreate_unix_connectionr)pathrrr&r'r(r)r*rrrrds     rcsHdkrtntjdtddfdd}j||f|IdHS)Nrrrcstd}t|d}|Sr+r,r-r.rrr0~s  z"start_unix_server..factory)r r r!r"r#Zcreate_unix_server)r/r1rrr&r0rr.rrts rc@s>eZdZdddZddZddZdd Zd d Zd d ZdS)FlowControlMixinNcCs0|dkrt|_n||_d|_d|_d|_dSNF)r r _loop_paused _drain_waiter_connection_lost)selfrrrr__init__s  zFlowControlMixin.__init__cCs d|_|jrtd|dS)NTz%r pauses writing)r5r4 get_debugrdebugr8rrr pause_writings zFlowControlMixin.pause_writingcCsFd|_|jrtd||j}|dk rBd|_|sB|ddS)NFz%r resumes writing)r5r4r:rr;r6done set_resultr8waiterrrrresume_writings  zFlowControlMixin.resume_writingcCsVd|_|jsdS|j}|dkr"dSd|_|r4dS|dkrH|dn ||dSNT)r7r5r6r>r? set_exceptionr8excrArrrconnection_losts z FlowControlMixin.connection_lostcs<|jrtd|jsdS|j}|j}||_|IdHdS)NzConnection lost)r7ConnectionResetErrorr5r6r4 create_futurer@rrr _drain_helpers zFlowControlMixin._drain_helpercCstdSr)NotImplementedErrorr8streamrrr_get_close_waitersz"FlowControlMixin._get_close_waiter)N) __name__ __module__ __qualname__r9r=rBrGrJrNrrrrr2s    r2csbeZdZdZdfdd ZeddZddZfdd Zd d Z d d Z ddZ ddZ Z S)rNcsntj|d|dk r,t||_|j|_nd|_|dk r@||_d|_d|_d|_ ||_ d|_ |j |_dS)NrF)superr9weakrefref_stream_reader_wr_source_traceback_strong_reader_reject_connection_stream_writer _transport_client_connected_cb _over_sslr4rI_closed)r8Z stream_readerr/r __class__rrr9s  zStreamReaderProtocol.__init__cCs|jdkrdS|Sr)rUr<rrr_stream_readers z#StreamReaderProtocol._stream_readercCs|jr6ddi}|jr|j|d<|j||dS||_|j}|dk rT|||ddk |_ |j dk rt ||||j|_ | ||j }t |r|j|d|_dS)NmessagezpAn open stream was garbage collected prior to establishing network connection; call "stream.close()" explicitly.Zsource_tracebackZ sslcontext)rXrVr4Zcall_exception_handlerabortrZr` set_transportget_extra_infor\r[rrYr Z iscoroutineZ create_taskrW)r8r(contextr'resrrrconnection_mades2      z$StreamReaderProtocol.connection_madecsx|j}|dk r*|dkr |n |||jsV|dkrJ|jdn |j|t|d|_d|_ d|_ dSr) r`feed_eofrDr]r>r?rRrGrUrYrZ)r8rFr'r^rrrG s     z$StreamReaderProtocol.connection_lostcCs|j}|dk r||dSr)r` feed_data)r8datar'rrr data_receivedsz"StreamReaderProtocol.data_receivedcCs$|j}|dk r||jr dSdS)NFT)r`rhr\)r8r'rrr eof_received s z!StreamReaderProtocol.eof_receivedcCs|jSr)r]rLrrrrN+sz&StreamReaderProtocol._get_close_waitercCs"|j}|r|s|dSr)r]r> cancelled exception)r8closedrrr__del__.szStreamReaderProtocol.__del__)NN)rOrPrQrVr9propertyr`rgrGrkrlrNrp __classcell__rrr^rrs    rc@sreZdZddZddZeddZddZd d Zd d Z d dZ ddZ ddZ ddZ dddZddZdS)rcCs4||_||_||_||_|j|_|jddSr)rZ _protocol_readerr4rIZ _complete_futr?)r8r(rr'rrrrr9@s  zStreamWriter.__init__cCs@|jjd|jg}|jdk r0|d|jdd|S)N transport=zreader=<{}> )r_rOrZrtappendformatjoinr8inforrr__repr__Js zStreamWriter.__repr__cCs|jSrrZr<rrrr(PszStreamWriter.transportcCs|j|dSr)rZwriter8rjrrrrTszStreamWriter.writecCs|j|dSr)rZ writelinesrrrrrWszStreamWriter.writelinescCs |jSr)rZ write_eofr<rrrrZszStreamWriter.write_eofcCs |jSr)rZ can_write_eofr<rrrr]szStreamWriter.can_write_eofcCs |jSr)rZcloser<rrrr`szStreamWriter.closecCs |jSr)rZ is_closingr<rrrrcszStreamWriter.is_closingcs|j|IdHdSr)rsrNr<rrr wait_closedfszStreamWriter.wait_closedNcCs|j||Sr)rZrd)r8namedefaultrrrrdiszStreamWriter.get_extra_infocsL|jdk r |j}|dk r ||jr8tdIdH|jIdHdS)Nr)rtrnrZrrrsrJ)r8rFrrrdrainls   zStreamWriter.drain)N)rOrPrQr9r}rqr(rrrrrrrrdrrrrrr6s    rc@seZdZdZedfddZddZddZdd Zd d Z d d Z ddZ ddZ ddZ ddZddZddZd&ddZd'ddZd d!Zd"d#Zd$d%ZdS)(rNcCsv|dkrtd||_|dkr*t|_n||_t|_d|_d|_d|_ d|_ d|_ |j rrt td|_dS)NrzLimit cannot be <= 0Fr ) ValueError_limitr r r4 bytearray_buffer_eof_waiter _exceptionrZr5r:r extract_stacksys _getframerV)r8rrrrrr9s   zStreamReader.__init__cCsdg}|jr"|t|jd|jr2|d|jtkrN|d|j|jrf|d|j|jr~|d|j|jr|d|j|j r|dd d |S) Nrz byteseofzlimit=zwaiter=z exception=ruZpausedrvrw) rrxlenrr_DEFAULT_LIMITrrrZr5ryrzr{rrrr}s    zStreamReader.__repr__cCs|jSr)rr<rrrrnszStreamReader.exceptioncCs0||_|j}|dk r,d|_|s,||dSr)rrrmrDrErrrrDs zStreamReader.set_exceptioncCs*|j}|dk r&d|_|s&|ddSr)rrmr?r@rrr_wakeup_waiters zStreamReader._wakeup_waitercCs ||_dSrr~)r8r(rrrrcszStreamReader.set_transportcCs*|jr&t|j|jkr&d|_|jdSr3)r5rrrrZresume_readingr<rrr_maybe_resume_transportsz$StreamReader._maybe_resume_transportcCsd|_|dSrC)rrr<rrrrhszStreamReader.feed_eofcCs|jo |j Sr)rrr<rrrat_eofszStreamReader.at_eofcCst|sdS|j|||jdk rp|jspt|jd|jkrpz|jWntk rhd|_YnXd|_dS)NrT) rextendrrZr5rrZ pause_readingrKrrrrris   zStreamReader.feed_datacsX|jdk rt|d|jr.d|_|j|j|_z|jIdHW5d|_XdS)NzF() called while another coroutine is already waiting for incoming dataF)r RuntimeErrorr5rZrr4rI)r8Z func_namerrr_wait_for_datas   zStreamReader._wait_for_datac sd}t|}z||IdH}Wntjk rN}z|jWYSd}~XYnhtjk r}zH|j||jr|jd|j|=n |j | t |j dW5d}~XYnX|S)N r) r readuntilr IncompleteReadErrorpartialLimitOverrunErrorr startswithconsumedclearrrargs)r8sepseplenlineerrrreadline s  zStreamReader.readlinercst|}|dkrtd|jdk r(|jd}t|j}|||kr||j||}|dkrZq|d|}||jkr|td||jrt |j}|j t |d| dIdHq,||jkrtd||jd||}|jd||=| t |S)Nrz,Separator should be at least one-byte stringr z2Separator is not found, and chunk exceed the limitrz2Separator is found, but chunk is longer than limit)rrrrfindrr rrbytesrrrr)r8Z separatorroffsetZbuflenZisepchunkrrrr(s>         zStreamReader.readuntilrcs|jdk r|j|dkrdS|dkrVg}||jIdH}|s@qL||q(d|S|jsr|jsr|dIdHt|jd|}|jd|=| |S)Nrrread) rrrrxrzrrrrr)r8nZblocksblockrjrrrrs"     zStreamReader.readcs|dkrtd|jdk r |j|dkr,dSt|j|krr|jr`t|j}|jt||| dIdHq,t|j|krt|j}|jnt|jd|}|jd|=| |S)Nrz*readexactly size can not be less than zeror readexactly) rrrrrrrr rrr)r8rZ incompleterjrrrrs&       zStreamReader.readexactlycCs|Srrr<rrr __aiter__szStreamReader.__aiter__cs|IdH}|dkrt|S)Nr)rStopAsyncIteration)r8valrrr __anext__szStreamReader.__anext__)r)r)rOrPrQrVrr9r}rnrDrrcrrhrrirrrrrrrrrrrrs$  [ 2)r)NN)NN)N)N)__all__Zsocketrr!rShasattrr r r r rlogrZtasksrrrrrrZProtocolr2rrrrrrrsF         ! '   DkP