Your IP : 3.142.172.250


Current Path : /opt/alt/python311/lib64/python3.11/__pycache__/
Upload File :
Current File : //opt/alt/python311/lib64/python3.11/__pycache__/asynchat.cpython-311.opt-1.pyc

�

c��f2-���dZddlZddlmZddlmZdZeeed���Gd�d	ej��Z	Gd
�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��eZdZdZdZdZdZdZdd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�ZdS)�
async_chatz�This is an abstract class.  You must derive from this class, and add
    the two methods collect_incoming_data() and found_terminator()irzlatin-1Nc��d|_g|_t��|_tj�|||��dS�N�)�ac_in_buffer�incomingr�
producer_fifo�asyncore�
dispatcher�__init__)�self�sock�maps   �//opt/alt/python311/lib64/python3.11/asynchat.pyrzasync_chat.__init__JsB�����
��
�#�W�W�����$�$�T�4��5�5�5�5�5rc� �td����Nzmust be implemented in subclass��NotImplementedError�r�datas  r�collect_incoming_dataz async_chat.collect_incoming_dataX���!�"C�D�D�Drc�:�|j�|��dS�N)r�appendrs  r�_collect_incoming_dataz!async_chat._collect_incoming_data[s���
���T�"�"�"�"�"rc�N�d�|j��}|jdd�=|Sr)�joinr)r�ds  r�	_get_datazasync_chat._get_data^s(���H�H�T�]�#�#���M�!�!�!���rc� �td���rr�rs r�found_terminatorzasync_chat.found_terminatorcrrc���t|t��r|jrt||j��}n*t|t
��r|dkrt
d���||_dS)zdSet the input delimiter.

        Can be a fixed string of any length, an integer, or None.
        rz-the number of received bytes must be positiveN)�
isinstance�str�use_encoding�bytes�encoding�int�
ValueError�
terminator)r�terms  r�set_terminatorzasync_chat.set_terminatorfsj��
�d�C� � �	N�T�%6�	N���t�}�-�-�D�D�
��c�
"�
"�	N�t�a�x�x��L�M�M�M�����rc��|jSr )r2r(s r�get_terminatorzasync_chat.get_terminatorqs
����rc� �	|�|j��}n1#t$rYdSt$r|���YdSwxYwt|t��r!|jrtt|j	��}|j
|z|_
|j
�r�t|j
��}|���}|s#|�
|j
��d|_
�n�t|t��r�|}||kr2|�
|j
��d|_
|j|z
|_�nM|�
|j
d|���|j
|d�|_
d|_|���n�t|��}|j
�|��}|dkrT|dkr"|�
|j
d|���|j
||zd�|_
|���nxt%|j
|��}|r@||kr8|�
|j
d|���|j
|d�|_
dS|�
|j
��d|_
|j
���dSdS)Nrr���)�recv�ac_in_buffer_size�BlockingIOError�OSError�handle_errorr+r,r-r.r/r
�lenr6rr0r2r)�find�find_prefix_at_end)rr�lbr2�n�terminator_len�indexs       r�handle_readzasync_chat.handle_readys���	��9�9�T�3�4�4�D�D���	�	�	��F�F��	�	�	��������F�F�	�����d�C� � �	-�T�%6�	-���d�m�,�,�D� �-��4�����3	0��T�&�'�'�B��,�,�.�.�J��0
0��*�*�4�+<�=�=�=�$'��!�!��J��,�,�,
0�����6�6��.�.�t�/@�A�A�A�(+�D�%�&*�o��&:�D�O�O��.�.�t�/@��!��/D�E�E�E�(,�(9�!�"�"�(=�D�%�&'�D�O��)�)�+�+�+�+�"%�Z�����)�.�.�z�:�:���B�;�;��q�y�y��2�2�4�3D�V�e�V�3L�M�M�M�(,�(9�%��:N�:O�:O�(P�D�%��)�)�+�+�+�+�/�t�/@�*�M�M�E��	0� �B�;�;� �6�6�t�7H��5�&��7Q�R�R�R�04�0A�5�&�'�'�0J�D�-����2�2�4�3D�E�E�E�,/��)�g��3	0�3	0�3	0�3	0�3	0s��
A�A�
Ac�.�|���dSr )�
initiate_sendr(s r�handle_writezasync_chat.handle_write�s���������rc�.�|���dSr )�closer(s r�handle_closezasync_chat.handle_close�s���
�
�����rc��t|tttf��st	dt|�����|j}t|��|krGtdt|��|��D]'}|j	�
||||z����(n|j	�
|��|���dS)Nz#data argument must be byte-ish (%r)r)r+r.�	bytearray�
memoryview�	TypeError�type�ac_out_buffer_sizer>�rangerr!rG)rr�sabs�is    r�pushzasync_chat.push�s����$��	�:� >�?�?�	(��A� ��J�J�(�(�
(��&���t�9�9�t����1�c�$�i�i��.�.�
:�
:���"�)�)�$�q��4��x�.�9�9�9�9�
:�
��%�%�d�+�+�+��������rc�b�|j�|��|���dSr )rr!rG)r�producers  r�push_with_producerzasync_chat.push_with_producer�s1����!�!�(�+�+�+��������rc��dS)z4predicate for inclusion in the readable for select()��r(s r�readablezasync_chat.readable�s	���qrc� �|jp|jS)z4predicate for inclusion in the writable for select())r�	connectedr(s r�writablezasync_chat.writable�s���!�9�$�.�&8�9rc�:�|j�d��dS)zAautomatically close this channel once the outgoing queue is emptyN)rr!r(s r�close_when_donezasync_chat.close_when_done�s����!�!�$�'�'�'�'�'rc��|j�rE|j�r?|jd}|s |jd=|�|���dS|j}	|d|�}nI#t$r<|���}|r|j�|��n|jd=Y��wxYwt|t��r|j	rt||j��}	|�|��}n%#t$r|���YdSwxYw|rA|t|��ks|t|��kr||d�|jd<n|jd=dSdSdS)Nr)rr^rKrQrO�more�
appendleftr+r,r-r.r/�sendr<r=r>)r�first�obsr�num_sents     rrGzasync_chat.initiate_send�s���� �%	�T�^�%	��&�q�)�E��
��&�q�)��=��%�%�'�'�'��F��)�C�
��T�c�T�{�����
�
�
��z�z�|�|���.��&�1�1�$�7�7�7�7��*�1�-���

�����$��$�$�
2��):�
2��T�4�=�1�1��
��9�9�T�?�?�����
�
�
��!�!�#�#�#����
�����
.��c�$�i�i�'�'�3��U���+;�+;�,1�(�)�)�,<�D�&�q�)�)��*�1�-��F�K%	�%	�%	�%	s%�
A�AB�B�C$�$D�Dc�Z�d|_|jdd�=|j���dSr)r
rr�clearr(s r�discard_bufferszasync_chat.discard_bufferss3������M�!�!�!���� � �"�"�"�"�"r)NN)�__name__�
__module__�__qualname__�__doc__r:rQr-r/rrr"r&r)r4r6rErHrKrUrXr\r_rarGrkr[rrr	r	;sI������F�F�
����
�L��H�6�6�6�6�E�E�E�#�#�#����
E�E�E�	�	�	����F0�F0�F0�P������
�
�
�������:�:�:�(�(�(�&�&�&�P#�#�#�#�#rr	c��eZdZdd�Zd�ZdS)�simple_producer�c�"�||_||_dSr )r�buffer_size)rrrts   rrzsimple_producer.__init__s����	�&����rc��t|j��|jkr/|jd|j�}|j|jd�|_|S|j}d|_|Sr)r>rrt)r�results  rrczsimple_producer.mores\���t�y�>�>�D�,�,�,��Y�0�� 0�0�1�F��	�$�"2�"3�"3�4�D�I��M��Y�F��D�I��MrN)rr)rlrmrnrrcr[rrrqrqs7������'�'�'�'�����rrqc��t|��dz
}|rA|�|d|���s$|dz}|r|�|d|����$|S)NrZ)r>�endswith)�haystack�needle�ls   rr@r@6sk���F���a��A�
��H�%�%�f�R�a�R�j�1�1��	�Q�����H�%�%�f�R�a�R�j�1�1���Hr)ror�collectionsr�warningsr�_DEPRECATION_MSGrlrr	rqr@r[rr�<module>rs���8��(���������� � � � � � �N����H�&�w�7�7�7�7�X#�X#�X#�X#�X#��$�X#�X#�X#�v��������@
�
�
�
�
r

?>