3 \˜_ã@sHdddddddgZddlZeed ƒr2ejd d gƒd d lmZd dlmZd dlmZd dlmZd dlm Z d dl m Z d!Z Gdd„de ƒZGdd„deƒZe d"de dœdd„ƒZe d#de dœdd„ƒZeed ƒ�re d$de dœdd „ƒZe d%de dœdd „ƒZGdd„dejƒZGdd„deejƒZGdd„dƒZGd d„dƒZdS)&Ú StreamReaderÚ StreamWriterÚStreamReaderProtocolÚopen_connectionÚ start_serverÚIncompleteReadErrorÚLimitOverrunErroréNZAF_UNIXÚopen_unix_connectionÚstart_unix_serveré)Ú coroutines)Úcompat)Úevents)Ú protocols)Ú coroutine)Úloggeréécs$eZdZ‡fdd„Zdd„Z‡ZS)rcs(tƒjdt|ƒ|fƒ||_||_dS)Nz-%d bytes read on a total of %r expected bytes)ÚsuperÚ__init__ÚlenÚpartialÚexpected)Úselfrr)Ú __class__©ú'/usr/lib64/python3.6/asyncio/streams.pyr szIncompleteReadError.__init__cCst|ƒ|j|jffS)N)Útyperr)rrrrÚ __reduce__&szIncompleteReadError.__reduce__)Ú__name__Ú __module__Ú __qualname__rrÚ __classcell__rr)rrrs cs$eZdZ‡fdd„Zdd„Z‡ZS)rcstƒj|ƒ||_dS)N)rrÚconsumed)rÚmessager#)rrrr0s zLimitOverrunError.__init__cCst|ƒ|jd|jffS)Nr)rÚargsr#)rrrrr4szLimitOverrunError.__reduce__)rr r!rrr"rr)rrr*s )ÚloopÚlimitc +sb|dkrtjƒ}t||d�}t||d�‰|j‡fdd„||f|ŽEdH\}}t|ˆ||ƒ}||fS)N)r'r&)r&csˆS)Nrr)ÚprotocolrrÚQsz!open_connection..)rÚget_event_looprrZcreate_connectionr) ÚhostÚportr&r'ÚkwdsÚreaderÚ transportÚ_Úwriterr)r(rr8s   c+s8ˆdkrtjƒ‰‡‡‡fdd„}ˆj|||f|ŽEdHS)Ncstˆˆd�}t|ˆˆd�}|S)N)r'r&)r&)rr)r.r()Úclient_connected_cbr'r&rrÚfactoryqs zstart_server..factory)rr*Z create_server)r2r+r,r&r'r-r3r)r2r'r&rrVsc+s`|dkrtjƒ}t||d�}t||d�‰|j‡fdd„|f|ŽEdH\}}t|ˆ||ƒ}||fS)N)r'r&)r&csˆS)Nrr)r(rrr)†sz&open_unix_connection..)rr*rrZcreate_unix_connectionr)Úpathr&r'r-r.r/r0r1r)r(rr }s  c+s6ˆdkrtjƒ‰‡‡‡fdd„}ˆj||f|ŽEdHS)Ncstˆˆd�}t|ˆˆd�}|S)N)r'r&)r&)rr)r.r()r2r'r&rrr3‘s z"start_unix_server..factory)rr*Zcreate_unix_server)r2r4r&r'r-r3r)r2r'r&rr Šsc@s:eZdZd dd„Zdd„Zdd„Zdd „Zed d „ƒZdS) ÚFlowControlMixinNcCs0|dkrtjƒ|_n||_d|_d|_d|_dS)NF)rr*Ú_loopÚ_pausedÚ _drain_waiterÚ_connection_lost)rr&rrrr¤s  zFlowControlMixin.__init__cCs d|_|jjƒrtjd|ƒdS)NTz%r pauses writing)r7r6Ú get_debugrÚdebug)rrrrÚ pause_writing­s zFlowControlMixin.pause_writingcCsFd|_|jjƒrtjd|ƒ|j}|dk rBd|_|jƒsB|jdƒdS)NFz%r resumes writing)r7r6r:rr;r8ÚdoneÚ set_result)rÚwaiterrrrÚresume_writing³s  zFlowControlMixin.resume_writingcCsVd|_|jsdS|j}|dkr"dSd|_|jƒr4dS|dkrH|jdƒn |j|ƒdS)NT)r9r7r8r=r>Ú set_exception)rÚexcr?rrrÚconnection_lost¿s z FlowControlMixin.connection_lostccs<|jrtdƒ‚|jsdS|j}|jjƒ}||_|EdHdS)NzConnection lost)r9ÚConnectionResetErrorr7r8r6Ú create_future)rr?rrrÚ _drain_helperÏs zFlowControlMixin._drain_helper)N) rr r!rr<r@rCrrFrrrrr5šs   r5csBeZdZd ‡fdd„ Zdd„Z‡fdd„Zdd „Zd d „Z‡ZS) rNcs*tƒj|d�||_d|_||_d|_dS)N)r&F)rrÚ_stream_readerÚ_stream_writerÚ_client_connected_cbÚ _over_ssl)rZ stream_readerr2r&)rrrrås zStreamReaderProtocol.__init__cCsd|jj|ƒ|jdƒdk |_|jdk r`t|||j|jƒ|_|j|j|jƒ}tj |ƒr`|jj |ƒdS)NZ sslcontext) rGÚ set_transportÚget_extra_inforJrIrr6rHr Z iscoroutineZ create_task)rr/ÚresrrrÚconnection_madeìs    z$StreamReaderProtocol.connection_madecsF|jdk r*|dkr|jjƒn |jj|ƒtƒj|ƒd|_d|_dS)N)rGÚfeed_eofrArrCrH)rrB)rrrrCøs    z$StreamReaderProtocol.connection_lostcCs|jj|ƒdS)N)rGÚ feed_data)rÚdatarrrÚ data_receivedsz"StreamReaderProtocol.data_receivedcCs|jjƒ|jrdSdS)NFT)rGrOrJ)rrrrÚ eof_receiveds z!StreamReaderProtocol.eof_received)NN) rr r!rrNrCrRrSr"rr)rrrÜs   c@sfeZdZdd„Zdd„Zedd„ƒZdd„Zd d „Zd d „Z d d„Z dd„Z ddd„Z e dd„ƒZdS)rcCs||_||_||_||_dS)N)Ú _transportÚ _protocolÚ_readerr6)rr/r(r.r&rrrrszStreamWriter.__init__cCs:|jjd|jg}|jdk r,|jd|jƒddj|ƒS)Nz transport=%rz reader=%rz<%s>ú )rrrTrVÚappendÚjoin)rÚinforrrÚ__repr__!s zStreamWriter.__repr__cCs|jS)N)rT)rrrrr/'szStreamWriter.transportcCs|jj|ƒdS)N)rTÚwrite)rrQrrrr\+szStreamWriter.writecCs|jj|ƒdS)N)rTÚ writelines)rrQrrrr].szStreamWriter.writelinescCs |jjƒS)N)rTÚ write_eof)rrrrr^1szStreamWriter.write_eofcCs |jjƒS)N)rTÚ can_write_eof)rrrrr_4szStreamWriter.can_write_eofcCs |jjƒS)N)rTÚclose)rrrrr`7szStreamWriter.closeNcCs|jj||ƒS)N)rTrL)rÚnameÚdefaultrrrrL:szStreamWriter.get_extra_infoccsN|jdk r |jjƒ}|dk r |‚|jdk r:|jjƒr:dV|jjƒEdHdS)N)rVÚ exceptionrTZ is_closingrUrF)rrBrrrÚdrain=s    zStreamWriter.drain)N)rr r!rr[Úpropertyr/r\r]r^r_r`rLrrdrrrrrs   c@sÎeZdZedfdd„Zdd„Zdd„Zdd „Zd d „Zd d „Z dd„Z dd„Z dd„Z dd„Z edd„ƒZedd„ƒZed'dd„ƒZed)dd„ƒZed d!„ƒZejr¼ed"d#„ƒZed$d%„ƒZejrÊd&d#„ZdS)*rNcCsZ|dkrtdƒ‚||_|dkr*tjƒ|_n||_tƒ|_d|_d|_d|_ d|_ d|_ dS)NrzLimit cannot be <= 0F) Ú ValueErrorÚ_limitrr*r6Ú bytearrayÚ_bufferÚ_eofÚ_waiterÚ _exceptionrTr7)rr'r&rrrrXs zStreamReader.__init__cCsªdg}|jr |jdt|jƒƒ|jr0|jdƒ|jtkrJ|jd|jƒ|jr`|jd|jƒ|jrv|jd|jƒ|jrŒ|jd|jƒ|j rœ|jdƒd d j |ƒS) Nrz%d bytesÚeofzl=%dzw=%rze=%rzt=%rZpausedz<%s>rW) rirXrrjrgÚ_DEFAULT_LIMITrkrlrTr7rY)rrZrrrr[ks    zStreamReader.__repr__cCs|jS)N)rl)rrrrrc}szStreamReader.exceptioncCs0||_|j}|dk r,d|_|jƒs,|j|ƒdS)N)rlrkÚ cancelledrA)rrBr?rrrrA€s zStreamReader.set_exceptioncCs*|j}|dk r&d|_|jƒs&|jdƒdS)N)rkror>)rr?rrrÚ_wakeup_waiter‰s zStreamReader._wakeup_waitercCs ||_dS)N)rT)rr/rrrrK‘szStreamReader.set_transportcCs*|jr&t|jƒ|jkr&d|_|jjƒdS)NF)r7rrirgrTÚresume_reading)rrrrÚ_maybe_resume_transport•sz$StreamReader._maybe_resume_transportcCsd|_|jƒdS)NT)rjrp)rrrrrOšszStreamReader.feed_eofcCs|jo |j S)N)rjri)rrrrÚat_eofžszStreamReader.at_eofc Csv|sdS|jj|ƒ|jƒ|jdk rr|j rrt|jƒd|jkrry|jjƒWntk rjd|_YnXd|_dS)NrT) riÚextendrprTr7rrgZ pause_readingÚNotImplementedError)rrQrrrrP¢s   zStreamReader.feed_datac csV|jdk rtd|ƒ‚|jr,d|_|jjƒ|jjƒ|_z|jEdHWdd|_XdS)NzH%s() called while another coroutine is already waiting for incoming dataF)rkÚ RuntimeErrorr7rTrqr6rE)rZ func_namerrrÚ_wait_for_data¸s   zStreamReader._wait_for_dataccs¬d}t|ƒ}y|j|ƒEdH}Wn†tk rB}z|jSd}~Xnftk r¦}zJ|jj||jƒrv|jd|j|…=n |jjƒ|j ƒt |j dƒ‚WYdd}~XnX|S)Nó r) rÚ readuntilrrrriÚ startswithr#Úclearrrrfr%)rÚsepÚseplenÚlineÚerrrÚreadlineÔs  zStreamReader.readlinerxccsút|ƒ}|dkrtdƒ‚|jdk r(|j‚d}x†t|jƒ}|||kr||jj||ƒ}|dkr\P|d|}||jkr|td|ƒ‚|jr t|jƒ}|jj ƒt |dƒ‚|j dƒEdHq.W||jkrÈtd|ƒ‚|jd||…}|jd||…=|j ƒt|ƒS)Nrz,Separator should be at least one-byte stringr z2Separator is not found, and chunk exceed the limitryz2Separator is found, but chunk is longer than limitéÿÿÿÿ) rrfrlriÚfindrgrrjÚbytesr{rrwrr)rZ separatorr}ÚoffsetZbuflenZisepÚchunkrrrryôs:         zStreamReader.readuntilr ccs¤|jdk r|j‚|dkrdS|dkrZg}x&|j|jƒEdH}|sBP|j|ƒq*Wdj|ƒS|j rz|j rz|jdƒEdHt|jd|…ƒ}|jd|…=|j ƒ|S)NróÚread) rlr‡rgrXrYrirjrwrƒrr)rÚnZblocksÚblockrQrrrr‡Ps$   zStreamReader.readccsÂ|dkrtdƒ‚|jdk r |j‚|dkr,dSxFt|jƒ|krr|jr`t|jƒ}|jjƒt||ƒ‚|jdƒEdHq.Wt|jƒ|kr˜t|jƒ}|jjƒnt|jd|…ƒ}|jd|…=|j ƒ|S)Nrz*readexactly size can not be less than zeror†Ú readexactly) rfrlrrirjrƒr{rrwrr)rrˆZ incompleterQrrrrŠƒs&       zStreamReader.readexactlycCs|S)Nr)rrrrÚ __aiter__®szStreamReader.__aiter__ccs|jƒEdH}|dkrt‚|S)Nr†)r€ÚStopAsyncIteration)rÚvalrrrÚ __anext__²szStreamReader.__anext__cCs|S)Nr)rrrrr‹¼s)rxr�)r�)rr r!rnrr[rcrArprKrrrOrsrPrrwr€ryr‡rŠr ZPY35r‹rŽZPY352rrrrrVs,    [ 2 *  i)NN)NN)N)N)Ú__all__ZsocketÚhasattrrtÚr r rrrÚlogrrnÚEOFErrorrÚ Exceptionrrrr r ZProtocolr5rrrrrrrÚs@       "  B3G