£Á°èZ¨Ä…–K§‚«“ô4“ÒÙ´dîfUÙÃÅ WKbyÊ¦•êŽ…È®FÒ¿ÊÎóCozá¬S@6{Í:›œêZÌ:Š•_%:¢¾¾~;‘Ã~èŠ©ÊÇí`ÔÑ©úë™µ'5I¿fš×WO%ø9¾«¾DK|€ùÍD”Ýs]nHÕ¶ê×Ó¼ãžªéUWŸÈË%DÒÕ¬ï‘]/Åcx  ‰ï2ß]ä6G[]S£ÔÏ¯rs{úëóµmÒï#UQxo·õÞCe]"±/aÙ&Eã4ú9Jé_ÞåëdãöKë)AÞ                  ¯¹ægƒÛowÐø^d™ý½ßB7áyMä9ÜÖUã
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
<html>

].                 @   sk   d  d l  Z  d  d l m Z Gd d   d e  j  Z Gd d   d  Z Gd d   d  Z d	 d
   Z d S)    N)dequec               @   s   e  Z d  Z d Z d Z d Z d Z d d 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 d d   Z d d   Z d d   Z d d    Z d! d"   Z d# d$   Z d% d&   Z d S)'
async_chati   r   zlatin-1Nc             C   s8   d |  _  g  |  _ t   |  _ t j j |  | |  d  S)N    )ac_in_bufferincomingr   producer_fifoasyncore
dispatcher__init__)selfsockmap r   -/opt/alt/python35/lib64/python3.5/asynchat.pyr
   C   s    		zasync_chat.__init__c             C   s   t  d   d  S)Nzmust be implemented in subclass)NotImplementedError)r   datar   r   r   collect_incoming_dataQ   s    z async_chat.collect_incoming_datac             C   s   |  j  j |  d  S)N)r   append)r   r   r   r   r   _collect_incoming_dataT   s    z!async_chat._collect_incoming_datac             C   s&   d j  |  j  } |  j d  d   =| S)Nr   )joinr   )r   dr   r   r   	_get_dataW   s    zasync_chat._get_datac             C   s   t  d   d  S)Nzmust be implemented in subclass)r   )r   r   r   r   found_terminator\   s    zasync_chat.found_terminatorc             C   sa   t  | t  r- |  j r- t | |  j  } n' t  | t  rT | d k  rT t d   | |  _ d  S)Nr   z-the number of received bytes must be positive)
isinstancestruse_encodingbytesencodingint
ValueError
terminator)r   Ztermr   r   r   set_terminator_   s
    zasync_chat.set_terminatorc             C   s   |  j  S)N)r    )r   r   r   r   get_terminatorj   s    zasync_chat.get_terminatorc             C   si  y |  j  |  j  } WnH t k
 r. d  SYn3 t k
 r` } z |  j   d  SWYd  d  } ~ Xn Xt | t  r |  j r t t |  j	  } |  j
 | |  _
 x|  j
 rdt |  j
  } |  j   } | s |  j |  j
  d |  _
 q t | t  rw| } | | k  r1|  j |  j
  d |  _
 |  j | |  _ qa|  j |  j
 d  |   |  j
 | d   |  _
 d |  _ |  j   q t |  } |  j
 j |  } | d k r| d k r|  j |  j
 d  |   |  j
 | | d   |  _
 |  j   q t |  j
 |  } | rH| | k rD|  j |  j
 d  |   |  j
 | d   |  _
 Pq |  j |  j
  d |  _
 q Wd  S)Nr   r      )recvac_in_buffer_sizeBlockingIOErrorOSErrorhandle_errorr   r   r   r   r   r   lenr"   r   r   r    r   findfind_prefix_at_end)r   r   whyZlbr    nZterminator_lenindexr   r   r   handle_readr   sR    
			zasync_chat.handle_readc             C   s   |  j    d  S)N)initiate_send)r   r   r   r   handle_write   s    zasync_chat.handle_writec             C   s   |  j    d  S)N)close)r   r   r   r   handle_close   s    zasync_chat.handle_closec             C   s   t  | t t t f  s- t d t |    |  j } t |  | k r xQ t d t |  |  D]$ } |  j	 j
 | | | |   qa Wn |  j	 j
 |  |  j   d  S)Nz#data argument must be byte-ish (%r)r   )r   r   	bytearray
memoryview	TypeErrortypeac_out_buffer_sizer*   ranger   r   r1   )r   r   Zsabsir   r   r   push   s    	%zasync_chat.pushc             C   s   |  j  j |  |  j   d  S)N)r   r   r1   )r   Zproducerr   r   r   push_with_producer   s    zasync_chat.push_with_producerc             C   s   d S)Nr#   r   )r   r   r   r   readable   s    zasync_chat.readablec             C   s   |  j  p |  j S)N)r   	connected)r   r   r   r   writable   s    zasync_chat.writablec             C   s   |  j  j d   d  S)N)r   r   )r   r   r   r   close_when_done   s    zasync_chat.close_when_donec             C   sg  x`|  j  rb|  j rb|  j  d } | sL |  j  d =| d  k rL |  j   d  S|  j } y | d  |  } WnD t k
 r | j   } | r |  j  j |  n
 |  j  d =w Yn Xt | t  r |  j	 r t
 | |  j  } y |  j |  } Wn  t k
 r|  j   d  SYn X| r^| t |  k  s:| t |  k  rT| | d   |  j  d <n
 |  j  d =d  SWd  S)Nr   )r   r?   r4   r9   r7   more
appendleftr   r   r   r   r   sendr(   r)   r*   )r   firstZobsr   Znum_sentr   r   r   r1      s8    

	

	$
zasync_chat.initiate_sendc             C   s*   d |  _  |  j d  d   =|  j j   d  S)Nr   )r   r   r   clear)r   r   r   r   discard_buffers  s    	zasync_chat.discard_buffers)__name__
__module____qualname__r&   r9   r   r   r
   r   r   r   r   r!   r"   r0   r2   r4   r<   r=   r>   r@   rA   r1   rG   r   r   r   r   r   4   s*   H(r   c               @   s+   e  Z d  Z d d d  Z d d   Z d S)simple_produceri   c             C   s   | |  _  | |  _ d  S)N)r   buffer_size)r   r   rL   r   r   r   r
     s    	zsimple_producer.__init__c             C   se   t  |  j  |  j k rK |  j d  |  j  } |  j |  j d   |  _ | S|  j } d |  _ | Sd  S)Nr   )r*   r   rL   )r   resultr   r   r   rB     s    		zsimple_producer.moreN)rH   rI   rJ   r
   rB   r   r   r   r   rK     s   rK   c               @   s[   e  Z d  Z d d d  Z d d   Z d d   Z d d	   Z d
 d   Z d d   Z d S)fifoNc             C   sJ   d d  l  } | j d t d d | s7 t   |  _ n t |  |  _ d  S)Nr   z(fifo class will be removed in Python 3.6
stacklevel   )warningswarnDeprecationWarningr   list)r   rT   rQ   r   r   r   r
   !  s    	zfifo.__init__c             C   s   t  |  j  S)N)r*   rT   )r   r   r   r   __len__*  s    zfifo.__len__c             C   s   |  j  S)N)rT   )r   r   r   r   is_empty-  s    zfifo.is_emptyc             C   s   |  j  d S)Nr   )rT   )r   r   r   r   rE   0  s    z
fifo.firstc             C   s   |  j  j |  d  S)N)rT   r   )r   r   r   r   r   r<   3  s    z	fifo.pushc             C   s$   |  j  r d |  j  j   f Sd Sd  S)Nr#   r   )r   N)rT   popleft)r   r   r   r   pop6  s    	zfifo.pop)	rH   rI   rJ   r
   rU   rV   rE   r<   rX   r   r   r   r   rN      s   	rN   c             C   sE   t  |  d } x. | r@ |  j | d  |   r@ | d 8} q W| S)Nr#   )r*   endswith)ZhaystackZneedlelr   r   r   r,   L  s    #r,   )r   collectionsr   r	   r   rK   rN   r,   r   r   r   r   <module>0   s
   ,