Edit file File name : asynchat.cpython-36.opt-2.pyc Content :3 \@, � @ 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� | _tjj| ||� d S )N� )�ac_in_buffer�incomingr � producer_fifo�asyncore� dispatcher�__init__)�selfZsock�map� r � /usr/lib64/python3.6/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 j|� d S )N)r �append)r r r r r �_collect_incoming_dataT s z!async_chat._collect_incoming_datac C s dj | 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 | j�}W n: tk r$ d S tk rJ } z| j� d S d }~X nX t|t�rh| jrhtt| j �}| j | | _ �xV| j �r�t| j �}| j� }|s�| j | j � d| _ qxt|t��r|}||k r�| j | j � d| _ | j| | _n2| j | j d |� � | j |d � | _ d| _| j� qxt|�}| j j|�}|dk�rp|dk�rR| j | j d |� � | j || d � | _ | j� qxt| j |�}|�r�||k�r�| j | j d | � � | j | d � | _ P qx| j | j � d| _ qxW 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 | j � d S )N)� initiate_send)r r r r �handle_write� s zasync_chat.handle_writec C s | j � 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 j |||| � � qBW n| 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 r. )r r Zsabs�ir r r �push� s zasync_chat.pushc C s | j j|� | j� d S )N)r r r. )r Zproducerr r r �push_with_producer� s zasync_chat.push_with_producerc C s dS )Nr"