� ���g� ��>�ddlZddlZddlmZGd�de��ZdS)�N�)� PubSubManagerc�B��eZdZdZdZ d �fd� Zd�Zd �Zd �Z�xZ S) � ZmqManagera?zmq based client manager. NOTE: this zmq implementation should be considered experimental at this time. At this time, eventlet is required to use zmq. This class implements a zmq backend for event sharing across multiple processes. To use a zmq backend, initialize the :class:`Server` instance as follows:: url = 'zmq+tcp://hostname:port1+port2' server = socketio.Server(client_manager=socketio.ZmqManager(url)) :param url: The connection URL for the zmq message broker, which will need to be provided and running. :param channel: The channel name on which the server sends and receives notifications. Must be the same in all the servers. :param write_only: If set to ``True``, only initialize to emit events. The default of ``False`` initializes the class for emitting and receiving. A zmq message broker must be running for the zmq_manager to work. you can write your own or adapt one from the following simple broker below:: import zmq receiver = zmq.Context().socket(zmq.PULL) receiver.bind("tcp://*:5555") publisher = zmq.Context().socket(zmq.PUB) publisher.bind("tcp://*:5556") while True: publisher.send(receiver.recv()) �zmq�zmq+tcp://localhost:5555+5556�socketioFNc�\�� ddlm}n#t$rtd���wxYwt jd��}|�d��r|�|��std|z���|�dd��}|� d ��\}}|� d ��d } |�| |��} |� ��� |j ��} | � |��|� ��� |j��} | �|jd��| � | ��| |_| |_||_t)���|||� ��dS) Nr)rzJzmq package is not installed (Run "pip install pyzmq" in your virtualenv).z :\d+\+\d+$z zmq+tcp://zunexpected connection string: zzmq+��+�:�����)�channel� write_only�logger)�eventlet.greenr� ImportError� RuntimeError�re�compile� startswith�search�replace�split�Context�socket�PUSH�connect�SUB�setsockopt_string� SUBSCRIBE�sink�subr�super�__init__)�self�urlrrrr�r�sink_url�sub_port� sink_port�sub_urlr"r#� __class__s ��d/home/asafur/pinokio/api/open-webui.git/app/env/lib/python3.11/site-packages/socketio/zmq_manager.pyr%zZmqManager.__init__-s���� /� *� *� *� *� *� *� *��� /� /� /�� .�/�/� /� /���� �J�}� %� %�����|�,�,� G����#��� G��?�#�E�F�F� F��k�k�&�"�%�%��"�y�y��~�~���8��N�N�3�'�'��+� ��"�"�9�h�7�7���{�{�}�}�#�#�C�H�-�-�� � � �X�����k�k�m�m�"�"�3�7�+�+�� ���c�m�R�0�0�0� � � �G������ ������ � ������Z���O�O�O�O�Os� �$c�p�tjd|j|d���}|j�|��S)N�message)�typer�data)�pickle�dumpsrr"�send)r&r2� pickled_datas r.�_publishzZmqManager._publishMs>���|�!��<�� � � � � ��y�~�~�l�+�+�+�c#�HK� |j���}|�|V�� )N)r#�recv)r&�responses r.� zmq_listenzZmqManager.zmq_listenWs.���� ��x�}�}���H��#����� r8c#�.K�|���D]}}t|t��r& tj|��}n#t $rYnwxYwt|t ��r+|ddkr|d|jkrd|vr |dV��~dS)Nr1r0rr2)r<� isinstance�bytesr3�loads� Exception�dictr)r&r0s r.�_listenzZmqManager._listen]s��������(�(� &� &�G��'�5�)�)� ��$�l�7�3�3�G�G�� �����D������'�4�(�(� &��F�O�y�0�0��I�&�$�,�6�6��g�%�%��f�o�%�%�%���s�A� A�A)rr FN) �__name__� __module__� __qualname__�__doc__�namer%r7r<rC� __classcell__)r-s@r.rrs��������"�"�F �D�:�#�!��P�P�P�P�P�P�@,�,�,���� � � � � � � r8r)r3r�pubsub_managerrr�r8r.�<module>rLsg�� � � � � � � � �)�)�)�)�)�)�b�b�b�b�b��b�b�b�b�br8
Memory