й¼]ð^ã @sÓdddddddgZddlZeed ƒrIejd d gƒd d lmZd dlmZd dlmZd dlmZd dlm Z d dl m Z d"Z Gdd„de ƒZGdd„deƒZe ddddde dd„ƒZe ddddde dd„ƒZeed ƒrte dddde dd „ƒZe dddde dd „ƒZGdd„dejƒZGdd„deejƒZGd d„dƒZGd!d„dƒZdS)#Ú StreamReaderÚ StreamWriterÚStreamReaderProtocolÚopen_connectionÚ start_serverÚIncompleteReadErrorÚLimitOverrunErroréNÚAF_UNIXÚopen_unix_connectionÚstart_unix_serveré)Ú coroutines)Úcompat)Úevents)Ú protocols)Ú coroutine)Úloggeréécs"eZdZ‡fdd†Z‡S)rcs6tƒjdt|ƒ|fƒ||_||_dS)Nz-%d bytes read on a total of %r expected bytes)ÚsuperÚ__init__ÚlenÚpartialÚexpected)Úselfrr)Ú __class__©ú,/opt/alt/python35/lib64/python3.5/streams.pyr s  zIncompleteReadError.__init__)Ú__name__Ú __module__Ú __qualname__rrr)rrrs cs"eZdZ‡fdd†Z‡S)rcstƒj|ƒ||_dS)N)rrÚconsumed)rÚmessager!)rrrr-szLimitOverrunError.__init__)rrr rrr)rrr's ÚloopÚlimitc +s�|dkrtjƒ}td|d|ƒ}t|d|ƒ‰|j‡fdd†|||�EdH\}}t|ˆ||ƒ}||fS)Nr$r#csˆS)Nrr)ÚprotocolrrÚKsz!open_connection..)rÚget_event_looprrÚcreate_connectionr) ÚhostÚportr#r$ÚkwdsÚreaderÚ transportÚ_Úwriterr)r%rr2s  )c+sKˆdkrtjƒ‰‡‡‡fdd†}ˆj||||�EdHS)Ncs.tdˆdˆƒ}t|ˆdˆƒ}|S)Nr$r#)rr)r,r%)Úclient_connected_cbr$r#rrÚfactoryks  zstart_server..factory)rr'Z create_server)r0r)r*r#r$r+r1r)r0r$r#rrPs  c+sŠ|dkrtjƒ}td|d|ƒ}t|d|ƒ‰|j‡fdd†||�EdH\}}t|ˆ||ƒ}||fS)Nr$r#csˆS)Nrr)r%rrr&€sz&open_unix_connection..)rr'rrZcreate_unix_connectionr)Úpathr#r$r+r,r-r.r/r)r%rr ws  &c+sHˆdkrtjƒ‰‡‡‡fdd†}ˆj|||�EdHS)Ncs.tdˆdˆƒ}t|ˆdˆƒ}|S)Nr$r#)rr)r,r%)r0r$r#rrr1‹s  z"start_unix_server..factory)rr'Zcreate_unix_server)r0r2r#r$r+r1r)r0r$r#rr „s  c@sUeZdZddd„Zdd„Zdd„Zdd „Zed d „ƒZdS) ÚFlowControlMixinNcCsF|dkrtjƒ|_n ||_d|_d|_d|_dS)NF)rr'Ú_loopÚ_pausedÚ _drain_waiterÚ_connection_lost)rr#rrrržs     zFlowControlMixin.__init__cCs,d|_|jjƒr(tjd|ƒdS)NTz%r pauses writing)r5r4Ú get_debugrÚdebug)rrrrÚ pause_writing§s zFlowControlMixin.pause_writingcCscd|_|jjƒr(tjd|ƒ|j}|dk r_d|_|jƒs_|jdƒdS)NFz%r resumes writing)r5r4r8rr9r6ÚdoneÚ set_result)rÚwaiterrrrÚresume_writing­s     zFlowControlMixin.resume_writingcCsud|_|jsdS|j}|dkr/dSd|_|jƒrHdS|dkrd|jdƒn |j|ƒdS)NT)r7r5r6r;r<Ú set_exception)rÚexcr=rrrÚconnection_lost¹s       z FlowControlMixin.connection_lostccsP|jrtdƒ‚|js"dS|j}|jjƒ}||_|EdHdS)NzConnection lost)r7ÚConnectionResetErrorr5r6r4Ú create_future)rr=rrrÚ _drain_helperÉs     zFlowControlMixin._drain_helper) rrr rr:r>rArrDrrrrr3”s   r3cs^eZdZdd‡fdd†Zdd„Z‡fdd†Zdd „Zd d „Z‡S) rNcs;tƒjd|ƒ||_d|_||_d|_dS)Nr#F)rrÚ_stream_readerÚ_stream_writerÚ_client_connected_cbÚ _over_ssl)rZ stream_readerr0r#)rrrrßs    zStreamReaderProtocol.__init__cCs�|jj|ƒ|jdƒdk |_|jdk rŒt|||j|jƒ|_|j|j|jƒ}tj |ƒrŒ|jj |ƒdS)NZ sslcontext) rEÚ set_transportÚget_extra_inforHrGrr4rFr Z iscoroutineZ create_task)rr-ÚresrrrÚconnection_madeæs   z$StreamReaderProtocol.connection_madecsa|jdk r;|dkr+|jjƒn|jj|ƒtƒj|ƒd|_d|_dS)N)rEÚfeed_eofr?rrArF)rr@)rrrrAòs  z$StreamReaderProtocol.connection_lostcCs|jj|ƒdS)N)rEÚ feed_data)rÚdatarrrÚ data_receivedüsz"StreamReaderProtocol.data_receivedcCs|jjƒ|jrdSdS)NFT)rErMrH)rrrrÚ eof_receivedÿs  z!StreamReaderProtocol.eof_received)rrr rrLrArPrQrr)rrrÖs   c@s—eZdZdd„Zdd„Zedd„ƒZdd„Zd d „Zd d „Z d d„Z dd„Z ddd„Z e dd„ƒZdS)rcCs(||_||_||_||_dS)N)Ú _transportÚ _protocolÚ_readerr4)rr-r%r,r#rrrrs   zStreamWriter.__init__cCsM|jjd|jg}|jdk r<|jd|jƒddj|ƒS)Nz transport=%rz reader=%rz<%s>ú )rrrRrTÚappendÚjoin)rÚinforrrÚ__repr__szStreamWriter.__repr__cCs|jS)N)rR)rrrrr-!szStreamWriter.transportcCs|jj|ƒdS)N)rRÚwrite)rrOrrrrZ%szStreamWriter.writecCs|jj|ƒdS)N)rRÚ writelines)rrOrrrr[(szStreamWriter.writelinescCs |jjƒS)N)rRÚ write_eof)rrrrr\+szStreamWriter.write_eofcCs |jjƒS)N)rRÚ can_write_eof)rrrrr].szStreamWriter.can_write_eofcCs |jjƒS)N)rRÚclose)rrrrr^1szStreamWriter.closeNcCs|jj||ƒS)N)rRrJ)rÚnameÚdefaultrrrrJ4szStreamWriter.get_extra_infoccsi|jdk r0|jjƒ}|dk r0|‚|jdk rS|jjƒrSdV|jjƒEdHdS)N)rTÚ exceptionrRZ is_closingrSrD)rr@rrrÚdrain7s  zStreamWriter.drain)rrr rrYÚpropertyr-rZr[r\r]r^rJrrbrrrrr s       c@s0eZdZeddd„Zdd„Zdd„Zdd „Zd d „Zd d „Z dd„Z dd„Z dd„Z dd„Z edd„ƒZedd„ƒZeddd„ƒZed'dd„ƒZed d!„ƒZejred"d#„ƒZed$d%„ƒZejr,d&d#„ZdS)(rNcCs…|dkrtdƒ‚||_|dkr?tjƒ|_n ||_tƒ|_d|_d|_d|_ d|_ d|_ dS)NrzLimit cannot be <= 0F) Ú ValueErrorÚ_limitrr'r4Ú bytearrayÚ_bufferÚ_eofÚ_waiterÚ _exceptionrRr5)rr$r#rrrrRs          zStreamReader.__init__cCsãdg}|jr,|jdt|jƒƒ|jrB|jdƒ|jtkre|jd|jƒ|jr‚|jd|jƒ|jrŸ|jd|jƒ|jr¼|jd|jƒ|j rÒ|jdƒd d j |ƒS) Nrz%d bytesÚeofzl=%dzw=%rze=%rzt=%rZpausedz<%s>rU) rgrVrrhreÚ_DEFAULT_LIMITrirjrRr5rW)rrXrrrrYes          zStreamReader.__repr__cCs|jS)N)rj)rrrrrawszStreamReader.exceptioncCsD||_|j}|dk r@d|_|jƒs@|j|ƒdS)N)rjriÚ cancelledr?)rr@r=rrrr?zs      zStreamReader.set_exceptioncCs;|j}|dk r7d|_|jƒs7|jdƒdS)N)rirmr<)rr=rrrÚ_wakeup_waiterƒs     zStreamReader._wakeup_waitercCs ||_dS)N)rR)rr-rrrrI‹szStreamReader.set_transportcCs;|jr7t|jƒ|jkr7d|_|jjƒdS)NF)r5rrgrerRÚresume_reading)rrrrÚ_maybe_resume_transport�s! z$StreamReader._maybe_resume_transportcCsd|_|jƒdS)NT)rhrn)rrrrrM”s zStreamReader.feed_eofcCs|jo|j S)N)rhrg)rrrrÚat_eof˜szStreamReader.at_eofc Cs•|s dS|jj|ƒ|jƒ|jdk r‘|j r‘t|jƒd|jkr‘y|jjƒWntk r‡d|_Yn Xd|_dS)NrT) rgÚextendrnrRr5rreZ pause_readingÚNotImplementedError)rrOrrrrNœs   zStreamReader.feed_datac csq|jdk rtd|ƒ‚|jr>d|_|jjƒ|jjƒ|_z|jEdHWdd|_XdS)NzH%s() called while another coroutine is already waiting for incoming dataF)riÚ RuntimeErrorr5rRror4rC)rÚ func_namerrrÚ_wait_for_data²s     zStreamReader._wait_for_dataccsÝd}t|ƒ}y|j|ƒEdH}Wn¬tk rX}z |jSWYdd}~Xn�tk rØ}za|jj||jƒrœ|jd|j|…=n |jjƒ|j ƒt |j dƒ‚WYdd}~XnX|S)Ns r) rÚ readuntilrrrrgÚ startswithr!ÚclearrprdÚargs)rÚsepÚseplenÚlineÚerrrÚreadlineÎs   &zStreamReader.readlines ccsYt|ƒ}|dkr$tdƒ‚|jdk r<|j‚d}x·t|jƒ}|||kr²|jj||ƒ}|dkr†P|d|}||jkr²td|ƒ‚|jræt|jƒ}|jj ƒt |dƒ‚|j dƒEdHqEW||jkrtd|ƒ‚|jd||…}|jd||…=|j ƒt|ƒS)Nrz,Separator should be at least one-byte stringr z2Separator is not found, and chunk exceed the limitrwz2Separator is found, but chunk is longer than limitéÿÿÿÿ) rrdrjrgÚfindrerrhÚbytesryrrvrp)rZ separatorr|ÚoffsetÚbuflenZisepÚchunkrrrrwîs:          zStreamReader.readuntilr ccsÖ|jdk r|j‚|dkr(dS|dkryg}x/|j|jƒEdH}|s[P|j|ƒq=Wdj|ƒS|j rŸ|j rŸ|jdƒEdHt|jd|…ƒ}|jd|…=|j ƒ|S)NróÚread) rjr‡rerVrWrgrhrvr‚rp)rÚnZblocksÚblockrOrrrr‡Js$     zStreamReader.readccs |dkrtdƒ‚|jdk r0|j‚|dkr@dSx_t|jƒ|kr¡|jrŒt|jƒ}|jjƒt||ƒ‚|jdƒEdHqCWt|jƒ|krÖt|jƒ}|jjƒn)t|jd|…ƒ}|jd|…=|j ƒ|S)Nrz*readexactly size can not be less than zeror†Ú readexactly) rdrjrrgrhr‚ryrrvrp)rrˆZ incompleterOrrrrŠ}s&       zStreamReader.readexactlycCs|S)Nr)rrrrÚ __aiter__¨szStreamReader.__aiter__ccs'|jƒEdH}|dkr#t‚|S)Nr†)rÚStopAsyncIteration)rÚvalrrrÚ __anext__¬s zStreamReader.__anext__cCs|S)Nr)rrrrr‹¶sr€)rrr rlrrYrar?rnrIrprMrqrNrrvrrwr‡rŠrZPY35r‹rŽZPY352rrrrrPs,          [2*  i)Ú__all__ÚsocketÚhasattrrrÚr rrrrÚlogrrlÚEOFErrorrÚ Exceptionrrrr r ZProtocolr3rrrrrrrÚs@      " B3G