python (3.11.7)
e2- d Z ddlZddlmZ ddlmZ dZ eeed G d d ej Z G d
d Z
d ZdS )
a A class supporting chat-style (command/response) protocols.
This class adds support for 'chat' style protocols - where one side
sends a 'command', and the other sends a response (examples would be
the common internet protocols - smtp, nntp, ftp, etc..).
The handle_read() method looks at the input stream for the current
'terminator' (usually '\r\n' for single-line responses, '\r\n.\r\n'
for multi-line output), calling self.found_terminator() on its
receipt.
for example:
Say you build an async nntp client using this class. At the start
of the connection, you'll have self.terminator set to '\r\n', in
order to process the single-line greeting. Just before issuing a
'LIST' command you'll set it to '\r\n.\r\n'. The output of the LIST
command will be accumulated (using your own 'collect_incoming_data'
method) up to the terminator, and then control will be returned to
you - by calling your self.found_terminator() method.
N)deque)_deprecatedznThe {name} module is deprecated and will be removed in Python {remove}. The recommended replacement is asyncio) )removec e Zd ZdZdZdZdZdZddZd Z d Z
d Zd
Zd Z
d Zd
Zd Zd Zd Zd Zd Zd Zd Zd Zd ZdS )
async_chatzThis is an abstract class. You must derive from this class, and add
the two methods collect_incoming_data() and found_terminator()i r zlatin-1Nc d| _ g | _ t | _ t j | || d S N )ac_in_bufferincomingr
producer_fifoasyncore
dispatcher__init__)selfsockmaps </BuggyBox/python/3.11.7/bootstrap/lib/python3.11/asynchat.pyr zasync_chat.__init__J sB
#WW$$T455555r c t d Nzmust be implemented in subclassNotImplementedErrorr datas r collect_incoming_dataz async_chat.collect_incoming_dataX !"CDDDr c : | j | d S N)r appendr s r _collect_incoming_dataz!async_chat._collect_incoming_data[ s
T"""""r c N d | j }| j d d = |S r )joinr )r ds r _get_datazasync_chat._get_data^ s( HHT]##M!!!r c t d r r r s r found_terminatorzasync_chat.found_terminatorc r r c t |t r| j rt || j }n*t |t
r|dk rt
d || _ dS )zdSet the input delimiter.
Can be a fixed string of any length, an integer, or None.
r z-the number of received bytes must be positiveN)
isinstancestruse_encodingbytesencodingint
ValueError
terminator)r terms r set_terminatorzasync_chat.set_terminatorf sj
dC NT%6 Nt}--DD
c
"
"