???<!-- GIF89;a -->
123123123123
.....................................................................................................................................???<!-- GIF89;a -->
123123123123
.....................................................................................................................................3

  \_                 @   sH  d ddddddgZ ddlZeed	r2e jd
dg ddlmZ ddlmZ ddlmZ ddlmZ ddlm	Z	 ddl
mZ d!ZG dd deZG dd deZe	d"dedddZe	d#dedddZeed	re	d$deddd
Ze	d%dedddZG dd dejZG dd deejZG dd dZG d d  d ZdS )&StreamReaderStreamWriterStreamReaderProtocolopen_connectionstart_serverIncompleteReadErrorLimitOverrunError    NZAF_UNIXopen_unix_connectionstart_unix_server   )
coroutines)compat)events)	protocols)	coroutine)logger      c                   s$   e Zd Z fddZdd Z  ZS )r   c                s(   t  jdt||f  || _|| _d S )Nz-%d bytes read on a total of %r expected bytes)super__init__lenpartialexpected)selfr   r   )	__class__ '/usr/lib64/python3.6/asyncio/streams.pyr       s    zIncompleteReadError.__init__c             C   s   t | | j| jffS )N)typer   r   )r   r   r   r   
__reduce__&   s    zIncompleteReadError.__reduce__)__name__
__module____qualname__r   r   __classcell__r   r   )r   r   r      s   c                   s$   e Zd Z fddZdd Z  ZS )r   c                s   t  j| || _d S )N)r   r   consumed)r   messager#   )r   r   r   r   0   s    zLimitOverrunError.__init__c             C   s   t | | jd | jffS )Nr   )r   argsr#   )r   r   r   r   r   4   s    zLimitOverrunError.__reduce__)r   r    r!   r   r   r"   r   r   )r   r   r   *   s   )looplimitc      	      +   sb   |d krt j }t||d}t||d |j fdd| |f|E d H \}}t| ||}||fS )N)r'   r&   )r&   c                  s    S )Nr   r   )protocolr   r   <lambda>Q   s    z!open_connection.<locals>.<lambda>)r   get_event_loopr   r   Zcreate_connectionr   )	hostportr&   r'   kwdsreader	transport_writerr   )r(   r   r   8   s     c            +   s8   d krt j  fdd}j|||f|E d H S )Nc                 s   t d} t|  d}|S )N)r'   r&   )r&   )r   r   )r.   r(   )client_connected_cbr'   r&   r   r   factoryq   s    zstart_server.<locals>.factory)r   r*   Zcreate_server)r2   r+   r,   r&   r'   r-   r3   r   )r2   r'   r&   r   r   V   s    c            +   s`   |d krt j }t||d}t||d |j fdd| f|E d H \}}t| ||}||fS )N)r'   r&   )r&   c                  s    S )Nr   r   )r(   r   r   r)      s    z&open_unix_connection.<locals>.<lambda>)r   r*   r   r   Zcreate_unix_connectionr   )pathr&   r'   r-   r.   r/   r0   r1   r   )r(   r   r	   }   s    c            +   s6   d krt j  fdd}j||f|E d H S )Nc                 s   t d} t|  d}|S )N)r'   r&   )r&   )r   r   )r.   r(   )r2   r'   r&   r   r   r3      s    z"start_unix_server.<locals>.factory)r   r*   Zcreate_unix_server)r2   r4   r&   r'   r-   r3   r   )r2   r'   r&   r   r
      s    c               @   s:   e Zd ZdddZdd Zdd Zdd	 Zed
d ZdS )FlowControlMixinNc             C   s0   |d krt j | _n|| _d| _d | _d| _d S )NF)r   r*   _loop_paused_drain_waiter_connection_lost)r   r&   r   r   r   r      s    zFlowControlMixin.__init__c             C   s    d| _ | jj rtjd|  d S )NTz%r pauses writing)r7   r6   	get_debugr   debug)r   r   r   r   pause_writing   s    
zFlowControlMixin.pause_writingc             C   sF   d| _ | jj rtjd|  | j}|d k	rBd | _|j sB|jd  d S )NFz%r resumes writing)r7   r6   r:   r   r;   r8   done
set_result)r   waiterr   r   r   resume_writing   s    
zFlowControlMixin.resume_writingc             C   sV   d| _ | jsd S | j}|d kr"d S d | _|j r4d S |d krH|jd  n
|j| d S )NT)r9   r7   r8   r=   r>   set_exception)r   excr?   r   r   r   connection_lost   s    z FlowControlMixin.connection_lostc             c   s<   | j rtd| jsd S | j}| jj }|| _|E d H  d S )NzConnection lost)r9   ConnectionResetErrorr7   r8   r6   create_future)r   r?   r   r   r   _drain_helper   s    
zFlowControlMixin._drain_helper)N)	r   r    r!   r   r<   r@   rC   r   rF   r   r   r   r   r5      s
   

	r5   c                   sB   e Zd Zd fdd	Zdd Z fddZdd	 Zd
d Z  ZS )r   Nc                s*   t  j|d || _d | _|| _d| _d S )N)r&   F)r   r   _stream_reader_stream_writer_client_connected_cb	_over_ssl)r   Zstream_readerr2   r&   )r   r   r   r      s
    zStreamReaderProtocol.__init__c             C   sd   | j j| |jdd k	| _| jd k	r`t|| | j | j| _| j| j | j}tj	|r`| jj
| d S )NZ
sslcontext)rG   set_transportget_extra_inforJ   rI   r   r6   rH   r   ZiscoroutineZcreate_task)r   r/   resr   r   r   connection_made   s    


z$StreamReaderProtocol.connection_madec                sF   | j d k	r*|d kr| j j  n| j j| t j| d | _ d | _d S )N)rG   feed_eofrA   r   rC   rH   )r   rB   )r   r   r   rC      s    
z$StreamReaderProtocol.connection_lostc             C   s   | j j| d S )N)rG   	feed_data)r   datar   r   r   data_received  s    z"StreamReaderProtocol.data_receivedc             C   s   | j j  | jrdS dS )NFT)rG   rO   rJ   )r   r   r   r   eof_received  s    
z!StreamReaderProtocol.eof_received)NN)	r   r    r!   r   rN   rC   rR   rS   r"   r   r   )r   r   r      s
   	
c               @   sf   e Zd Zdd Zdd Zedd Zdd Zd	d
 Zdd Z	dd Z
dd ZdddZedd ZdS )r   c             C   s   || _ || _|| _|| _d S )N)
_transport	_protocol_readerr6   )r   r/   r(   r.   r&   r   r   r   r     s    zStreamWriter.__init__c             C   s:   | j jd| j g}| jd k	r,|jd| j  ddj| S )Nztransport=%rz	reader=%rz<%s> )r   r   rT   rV   appendjoin)r   infor   r   r   __repr__!  s    
zStreamWriter.__repr__c             C   s   | j S )N)rT   )r   r   r   r   r/   '  s    zStreamWriter.transportc             C   s   | j j| d S )N)rT   write)r   rQ   r   r   r   r\   +  s    zStreamWriter.writec             C   s   | j j| d S )N)rT   
writelines)r   rQ   r   r   r   r]   .  s    zStreamWriter.writelinesc             C   s
   | j j S )N)rT   	write_eof)r   r   r   r   r^   1  s    zStreamWriter.write_eofc             C   s
   | j j S )N)rT   can_write_eof)r   r   r   r   r_   4  s    zStreamWriter.can_write_eofc             C   s
   | j j S )N)rT   close)r   r   r   r   r`   7  s    zStreamWriter.closeNc             C   s   | j j||S )N)rT   rL   )r   namedefaultr   r   r   rL   :  s    zStreamWriter.get_extra_infoc             c   sN   | j d k	r | j j }|d k	r || jd k	r:| jj r:d V  | jj E d H  d S )N)rV   	exceptionrT   Z
is_closingrU   rF   )r   rB   r   r   r   drain=  s    	



zStreamWriter.drain)N)r   r    r!   r   r[   propertyr/   r\   r]   r^   r_   r`   rL   r   rd   r   r   r   r   r     s   

c               @   s   e Zd ZedfddZdd Zdd Zdd	 Zd
d Zdd Z	dd Z
dd Zdd Zdd Zedd Zedd Zed'ddZed)ddZed d! Zejred"d# Zed$d% Zejrd&d# ZdS )*r   Nc             C   sZ   |dkrt d|| _|d kr*tj | _n|| _t | _d| _d | _d | _	d | _
d| _d S )Nr   zLimit cannot be <= 0F)
ValueError_limitr   r*   r6   	bytearray_buffer_eof_waiter
_exceptionrT   r7   )r   r'   r&   r   r   r   r   X  s    zStreamReader.__init__c             C   s   dg}| j r |jdt| j   | jr0|jd | jtkrJ|jd| j  | jr`|jd| j  | jrv|jd| j  | jr|jd| j  | j	r|jd d	d
j
| S )Nr   z%d byteseofzl=%dzw=%rze=%rzt=%rZpausedz<%s>rW   )ri   rX   r   rj   rg   _DEFAULT_LIMITrk   rl   rT   r7   rY   )r   rZ   r   r   r   r[   k  s     


zStreamReader.__repr__c             C   s   | j S )N)rl   )r   r   r   r   rc   }  s    zStreamReader.exceptionc             C   s0   || _ | j}|d k	r,d | _|j s,|j| d S )N)rl   rk   	cancelledrA   )r   rB   r?   r   r   r   rA     s    zStreamReader.set_exceptionc             C   s*   | j }|d k	r&d | _ |j s&|jd  d S )N)rk   ro   r>   )r   r?   r   r   r   _wakeup_waiter  s
    zStreamReader._wakeup_waiterc             C   s
   || _ d S )N)rT   )r   r/   r   r   r   rK     s    zStreamReader.set_transportc             C   s*   | j r&t| j| jkr&d| _ | jj  d S )NF)r7   r   ri   rg   rT   resume_reading)r   r   r   r   _maybe_resume_transport  s    z$StreamReader._maybe_resume_transportc             C   s   d| _ | j  d S )NT)rj   rp   )r   r   r   r   rO     s    zStreamReader.feed_eofc             C   s   | j o| j S )N)rj   ri   )r   r   r   r   at_eof  s    zStreamReader.at_eofc             C   sv   |sd S | j j| | j  | jd k	rr| j rrt| j d| j krry| jj  W n tk
rj   d | _Y nX d| _d S )Nr   T)	ri   extendrp   rT   r7   r   rg   Zpause_readingNotImplementedError)r   rQ   r   r   r   rP     s    
zStreamReader.feed_datac             c   sV   | j d k	rtd| | jr,d| _| jj  | jj | _ z| j E d H  W d d | _ X d S )NzH%s() called while another coroutine is already waiting for incoming dataF)rk   RuntimeErrorr7   rT   rq   r6   rE   )r   Z	func_namer   r   r   _wait_for_data  s    


zStreamReader._wait_for_datac             c   s   d}t |}y| j|E d H }W n tk
rB } z|jS d }~X nf tk
r } zJ| jj||jrv| jd |j| = n
| jj  | j	  t
|jd W Y d d }~X nX |S )N   
r   )r   	readuntilr   r   r   ri   
startswithr#   clearrr   rf   r%   )r   sepseplenlineer   r   r   readline  s    
 zStreamReader.readlinerx   c             c   s   t |}|dkrtd| jd k	r(| jd}xt | j}|| |kr|| jj||}|dkr\P |d | }|| jkr|td|| jrt| j}| jj	  t
|d | jdE d H  q.W || jkrtd|| jd ||  }| jd || = | j  t|S )Nr   z,Separator should be at least one-byte stringr   z2Separator is not found, and chunk exceed the limitry   z2Separator is found, but chunk is longer than limit)r   rf   rl   ri   findrg   r   rj   bytesr{   r   rw   rr   )r   Z	separatorr}   offsetZbuflenZisepchunkr   r   r   ry     s:    






zStreamReader.readuntilr   c             c   s   | j d k	r| j |dkrdS |dk rZg }x&| j| jE d H }|sBP |j| q*W dj|S | j rz| j rz| jdE d H  t| jd | }| jd |= | j	  |S )Nr       read)
rl   r   rg   rX   rY   ri   rj   rw   r   rr   )r   nZblocksblockrQ   r   r   r   r   P  s$    

zStreamReader.readc             c   s   |dk rt d| jd k	r | j|dkr,dS xFt| j|k rr| jr`t| j}| jj  t||| jdE d H  q.W t| j|krt| j}| jj  nt| jd | }| jd |= | j	  |S )Nr   z*readexactly size can not be less than zeror   readexactly)
rf   rl   r   ri   rj   r   r{   r   rw   rr   )r   r   Z
incompleterQ   r   r   r   r     s&    




zStreamReader.readexactlyc             C   s   | S )Nr   )r   r   r   r   	__aiter__  s    zStreamReader.__aiter__c             c   s   | j  E d H }|dkrt|S )Nr   )r   StopAsyncIteration)r   valr   r   r   	__anext__  s    zStreamReader.__anext__c             C   s   | S )Nr   )r   r   r   r   r     s    )rx   r   )r   )r   r    r!   rn   r   r[   rc   rA   rp   rK   rr   rO   rs   rP   r   rw   r   ry   r   r   r   ZPY35r   r   ZPY352r   r   r   r   r   V  s,   	 [2*i   )NN)NN)N)N)__all__Zsockethasattrrt    r   r   r   r   r   logr   rn   EOFErrorr   	Exceptionr   r   r   r	   r
   ZProtocolr5   r   r   r   r   r   r   r   <module>   s@   
"B3G