� ���g_��`�ddlZddlZddlmZmZejd��ZGd�d��ZdS)�N)�bidict�ValueDuplicationError�socketioc�v�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z d�Z d �Z d �Z d �Z dd �Zd�Zd�Zd�Zd�Zd�Zd S)� BaseManagerc�Z�d|_d|_i|_i|_i|_i|_dS�N)�logger�server�rooms� eio_to_sid� callbacks�pending_disconnect��selfs �e/home/asafur/pinokio/api/open-webui.git/app/env/lib/python3.11/site-packages/socketio/base_manager.py�__init__zBaseManager.__init__ s3���� ��� ��� �������"$�����c��||_dSr )r )rr s r� set_serverzBaseManager.set_servers ���� � � rc��dS)zqInvoked before the first request is received. Subclasses can add their initialization code here. N�rs r� initializezBaseManager.initializes �� �rc�4�|j���S)z3Return an iterable with the active namespace names.)r �keysrs r�get_namespaceszBaseManager.get_namespacess���z��� � � rc#��K�|j�|i��}t|d��rzt|t��se|d|vr%||dj���ni}|dd�D](}|�||vr ||jni���)n%||vr||j���ni}|���Ed{V��dS)z:Return an iterable with the active participants in a room.�__len__r�N) r �get�hasattr� isinstance�str�_fwdm�copy�update�items)r� namespace�room�ns� participants�rs r�get_participantszBaseManager.get_participantss���� �Z�^�^�I�r� *� *�� �4�� #� #� G�J�t�S�,A�,A� G�7;�A�w�"�}�}�2�d�1�g�;�,�1�1�3�3�3�"�L��!�"�"�X� D� D���#�#�1��7�7�B�q�E�K�K��C�C�C�C� D�59�B�J�J�2�d�8�>�.�.�0�0�0�B�L��%�%�'�'�'�'�'�'�'�'�'�'�'rc���|jj���} |�||d|���n#t$rYdSwxYw|�||||���|S)z,Register a client connection to a namespace.N)�eio_sid)r �eio� generate_id�basic_enter_roomr)rr/r(�sids r�connectzBaseManager.connect*s����k�o�)�)�+�+�� � � !� !�#�y�$�� !� H� H� H� H��$� � � ��4�4� ���� ���c�9�c�7��C�C�C�� s�:� A�Ac��||jvr||j|vrdS |j|d|duS#t$rYnwxYwdS)NF)rr �KeyError�rr3r(s r� is_connectedzBaseManager.is_connected5sn�� ��/� /� /��t�.�y�9�9�9��5� ��:�i�(��.�s�3�4�?� ?��� � � � �D� �����us�7� A�Ac�b� |j|dj|S#t$rYdSwxYwr )r �_invmr6)rr/r(s r�sid_from_eio_sidzBaseManager.sid_from_eio_sid@sC�� ��:�i�(��.�4�W�=� =��� � � � �D�D� ���s � � .�.c�d�||jvr&|j|d�|��SdSr )r r r7s r�eio_sid_from_sidzBaseManager.eio_sid_from_sidFs7�� �� � "� "��:�i�(��.�2�2�3�7�7� 7� #� "rc��||jvr g|j|<|j|�|��|j|d�|��S)z�Put the client in the to-be-disconnected list. This allows the client data structures to be present while the disconnect handler is invoked, but still recognize the fact that the client is soon going away. N)r�appendr r r7s r�pre_disconnectzBaseManager.pre_disconnectJs[�� �D�3� 3� 3�13�D� #�I� .� �� �*�1�1�#�6�6�6��z�)�$�T�*�.�.�s�3�3�3rc ���||jvrdSg}|j|������D]\}}||vr|�|���|D]}|�|||���||jvr|j|=||jvrW||j|vrJ|j|�|��t|j|��dkr|j|=dSdSdSdS�Nr) r r%r'r?�basic_leave_roomrr�remove�len)rr3r(�kwargsr � room_namer)s r�basic_disconnectzBaseManager.basic_disconnectVs%�� �D�J� &� &� �F���#�z�)�4�9�9�;�;�A�A�C�C� (� (�O�I�t��d�{�{�� � �Y�'�'�'��� 8� 8�D� � !� !�#�y�$� 7� 7� 7� 7� �$�.� � ���s�#� ��/� /� /��t�.�y�9�9�9� � #�I� .� 5� 5�c� :� :� :��4�*�9�5�6�6�!�;�;��+�I�6�6�6� 0� /�9�9�;�;rNc��|�||jvrtd���||jvr i|j|<||j|vrt��|j||<|�|j|d|}||j|||<dS)Nz+sid is not connected to requested namespace)r � ValueErrorr)rr3r(r)r/s rr2zBaseManager.basic_enter_roomgs��� �?�y�� �:�:��J�K�K� K� �D�J� &� &�$&�D�J�y� !� �t�z�)�,� ,� ,�*0�(�(�D�J�y� !�$� '� �?��j��+�D�1�#�6�G�+2�� �9��d�#�C�(�(�(rc� � |j|||=t|j||��dkr6|j||=t|j|��dkr |j|=dSdSdS#t$rYdSwxYwrB)r rEr6)rr3r(r)s rrCzBaseManager.basic_leave_roomrs��� �� �9�%�d�+�C�0��4�:�i�(��.�/�/�1�4�4��J�y�)�$�/��t�z�)�,�-�-��2�2�� �9�-�-�-�5�4�2�2��� � � � �D�D� ���s�A,A4�4 B�Bc�� |�||��D]\}}|�|||���dS#t$rYdSwxYwr )r-rCr6)rr)r(r3�_s r�basic_close_roomzBaseManager.basic_close_room|sq�� ��/�/� �4�@�@� <� <���Q��%�%�c�9�d�;�;�;�;� <� <��� � � � �D�D� ���s�37� A�Ac��g} |j|���D] \}}|�||vr|�|���!n#t$rYnwxYw|S)z Return the rooms a client is in.)r r'r?r6)rr3r(r,rGr)s r� get_roomszBaseManager.get_rooms�s�� �� �#'�:�i�#8�#>�#>�#@�#@� (� (�� �4��(�S�D�[�[��H�H�Y�'�'�'�� (��� � � � �D� �����s�AA� A�Ac��||jvrdtjd��i|j|<t|j|d��}||j||<|S)z/Generate a unique identifier for an ACK packet.rr)r� itertools�count�next)rr3�callback�ids r�_generate_ack_idzBaseManager._generate_ack_id�sY�� �d�n� $� $�#$�i�o�a�&8�&8�"9�D�N�3� � �$�.��%�a�(� )� )��"*���s��B��� rc�R�|jr|jS|jr |jjStS)zlGet the appropriate logger Prevents uninitialized servers in write-only mode from failing. )r r �default_loggerrs r� _get_loggerzBaseManager._get_logger�s1�� �;� "��;� � �[� "��;�%� %�!� !rr )�__name__� __module__� __qualname__rrrrr-r4r8r;r=r@rHr2rCrNrPrWrZrrrrr s������%�%�%���� � � � !�!�!� (� (� (� � � � � � ���� 8�8�8� 4� 4� 4�7�7�7�" 3� 3� 3� 3������� � � ���� "� "� "� "� "rr)rR�loggingrr� getLoggerrYrrrr�<module>r`s�����������0�0�0�0�0�0�0�0�"��"�:�.�.��X"�X"�X"�X"�X"�X"�X"�X"�X"�X"r
Memory