Hacked By AnonymousFox
B
YI~d@, � @ s@ d dl Z d dlmZ G dd� de j�ZG dd� d�Zdd� ZdS ) � N)�dequec @ s� e Zd ZdZdZdZdZd'dd�Zdd� Zd d
� Z dd� Z
d
d� Zdd� Zdd� Z
dd� Zdd� Zdd� Zdd� Zdd� Zdd� Zdd � Zd!d"� Zd#d$� Zd%d&� ZdS )(�
async_chati r zlatin-1Nc C s( d| _ g | _t� | _tj�| ||� d S )N� )�ac_in_buffer�incomingr �
producer_fifo�asyncore�
dispatcher�__init__)�selfZsock�map� r
�-/opt/alt/python37/lib64/python3.7/asynchat.pyr
C s zasync_chat.__init__c C s t d��d S )Nzmust be implemented in subclass)�NotImplementedError)r �datar
r
r �collect_incoming_dataQ s z async_chat.collect_incoming_datac C s | 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�}| jd d �= |S )Nr )�joinr )r �dr
r
r � _get_dataW s zasync_chat._get_datac C s t d��d S )Nzmust be implemented in subclass)r )r r
r
r �found_terminator\ s zasync_chat.found_terminatorc C sB t |t�r| jrt|| j�}nt |t�r8|dk r8td��|| _d S )Nr z-the number of received bytes must be positive)�
isinstance�str�use_encoding�bytes�encoding�int�
ValueError�
terminator)r Ztermr
r
r �set_terminator_ s
zasync_chat.set_terminatorc C s | j S )N)r )r r
r
r �get_terminatorj s zasync_chat.get_terminatorc
C s� y| � | j�}W n< tk
r$ d S tk
rL } z| �� d S d }~X Y nX t|t�rj| jrjtt| j �}| j
| | _
�xV| j
�r�t| j
�}| �� }|s�| �
| j
� d| _
qzt|t��r|}||k r�| �
| j
� d| _
| j| | _n2| �
| j
d |� � | j
|d � | _
d| _| �� qzt|�}| j
�|�}|dk�rr|dk�rT| �
| j
d |� � | j
|| d � | _
| �� qzt| j
|�}|�r�||k�r�| �
| j
d | � � | j
| d � | _
P qz| �
| j
� d| _
qzW d S )Nr r ���)Zrecv�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 ZwhyZlbr �nZterminator_len�indexr
r
r �handle_readr sR
zasync_chat.handle_readc C s | � � d S )N)�
initiate_send)r r
r
r �handle_write� s zasync_chat.handle_writec C s | � � d S )N)�close)r r
r
r �handle_close� s zasync_chat.handle_closec C s| t |tttf�stdt|���| j}t|�|krdx>tdt|�|�D ]}| j �
|||| � � qBW n| j �
|� | �� d S )Nz#data argument must be byte-ish (%r)r )r r � bytearray�
memoryview� TypeError�type�ac_out_buffer_sizer'