
    #IiP	                         S SK r  S SKrS SKJr  SSKJr  \ R                  " S5      r " S S\5      r	g! \ a    Sr N4f = f)    N)json   )PubSubManagersocketioc                   J   ^  \ rS rSrSrSr  S	U 4S jjrS rS rS r	Sr
U =r$ )
KafkaManager   a  Kafka based client manager.

This class implements a Kafka backend for event sharing across multiple
processes.

To use a Kafka backend, initialize the :class:`Server` instance as
follows::

    url = 'kafka://hostname:port'
    server = socketio.Server(client_manager=socketio.KafkaManager(url))

:param url: The connection URL for the Kafka server. For a default Kafka
            store running on the same host, use ``kafka://``. For a highly
            available deployment of Kafka, pass a list with all the
            connection URLs available in your cluster.
:param channel: The channel name (topic) 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.
kafkac                 j  > [         c  [        S5      e[        TU ]  X#S9  [	        U[
        5      (       a  U/OUnU Vs/ s H  nUS:w  a  USS  OSPM     snU l        [         R                  " U R                  S9U l        [         R                  " U R                  U R                  S9U l        g s  snf )NzZkafka-python package is not installed (Run "pip install kafka-python" in your virtualenv).)channel
write_onlyzkafka://   zlocalhost:9092)bootstrap_servers)r
   RuntimeErrorsuper__init__
isinstancestr
kafka_urlsKafkaProducerproducerKafkaConsumerr   consumer)selfurlr   r   urls	__class__s        </venv/lib/python3.13/site-packages/socketio/kafka_manager.pyr   KafkaManager.__init__'   s    =  . / / 	@"3,,u#&*,&*s '*Z&73qr7=MM&*,++dooN++DLL>BooO,s   B0c                     U R                   R                  U R                  [        R                  " U5      S9  U R                   R                  5         g )N)value)r   sendr   r   dumpsflush)r   datas     r   _publishKafkaManager._publish7   s6    4<<tzz$/?@    c              #   8   #    U R                    S h  vN   g  N7fN)r   )r   s    r   _kafka_listenKafkaManager._kafka_listen;   s     ==  s   c              #      #    U R                  5        H-  nUR                  U R                  :X  d  M  UR                  v   M/     g 7fr*   )r+   topicr   r!   )r   messages     r   _listenKafkaManager._listen>   s2     ))+G}},mm# ,s
   ,AA)r   r   r   )zkafka://localhost:9092r   F)__name__
__module____qualname____firstlineno____doc__namer   r&   r+   r0   __static_attributes____classcell__)r   s   @r   r   r      s/    , D=G!O !$ $r(   r   )
loggingr
   ImportErrorengineior   pubsub_managerr   	getLoggerloggerr    r(   r   <module>rA      sJ      )			:	&3$= 3$  Es   4 ??