<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</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
   Û,