
    i                     ~    S SK r S SKJr  SSKJr  SSKJr  \ R                  " S5      r " S S\R                  5      r	g)    N)packet   )base_managersocketioc                   N    \ rS rSrSrS r  SS jrS rSS jrS r	S	 r
S
 rSrg)Manager
   aE  Manage client connections.

This class keeps track of all the clients and the rooms they are in, to
support the broadcasting of messages. The data used by this class is
stored in a memory structure, making it appropriate only for single process
services. More sophisticated storage backends can be implemented by
subclasses.
c                 $    U R                  X5      $ N)is_connected)selfsid	namespaces      M/home/admin/cozy_coffee/venv/lib/python3.13/site-packages/socketio/manager.pycan_disconnectManager.can_disconnect   s      00    Nc                 h   U=(       d    UnX0R                   ;  a  g[        U[        5      (       a  [        U5      nO	Ub  U/nO/ n[        U[        5      (       d  U/nU(       d  U R                  R                  [        R                  X1/U-   S9n	U	R                  5       n
[        U
[        5      (       d  U
/n
U
 Vs/ s H(  n[        R                  " [        R                  U5      PM*     nnU R                  X45       H0  u  pX;  d  M  U H  nU R                  R                  X5        M      M2     gU R                  X45       He  u  pX;  d  M  U R                  X5      nU R                  R                  [        R                  X1/U-   US9n	U R                  R                  X5        Mg     gs  snf )zYEmit a message to a single client, a room, or all the clients
connected to the namespace.N)r   data)r   r   id)rooms
isinstancetuplelistserverpacket_classr   EVENTencode
eio_packetPacketMESSAGEget_participants_send_eio_packet_generate_ack_id_send_packet)r   eventr   r   roomskip_sidcallbacktokwargspktencoded_packetpeio_pktr   eio_sidr   s                   r   emitManager.emit   s    zTJJ&dE"" :D6DD(D)) zH ++**	$ + HC ZZ\Nnd33"0!1 .0 .1 "((););Q? .  0 $ 5 5i F&$44W@ % !G !% 5 5i F&..s=B++22	$ 3 C KK,,W: !G0s   =/F/c                 $    U R                  X5      $ )z.Register a client disconnect from a namespace.)basic_disconnect)r   r   r   r+   s       r   
disconnectManager.disconnectB   s    $$S44r   c                 "    U R                  XX4S9$ )zAdd a client to a room.)r0   )basic_enter_room)r   r   r   r'   r0   s        r   
enter_roomManager.enter_roomF   s    $$ST$KKr   c                 &    U R                  XU5      $ )zRemove a client from a room.)basic_leave_room)r   r   r   r'   s       r   
leave_roomManager.leave_roomJ   s    $$ST::r   c                 $    U R                  X5      $ )z$Remove all participants from a room.)basic_close_room)r   r'   r   s      r   
close_roomManager.close_roomN   s    $$T55r   c                     Sn U R                   U   U   nU R                   U   U	 Ub  U" U6   gg! [         a"    U R                  5       R                  S5         N5f = f)zInvoke an application callback.Nz$Unknown callback received, ignoring.)	callbacksKeyError_get_loggerwarning)r   r   r   r   r)   s        r   trigger_callbackManager.trigger_callbackR   so    	(~~c*2.H
 s#B'dO    	O&&'MN	Os   0 )AA )NNNNr   )__name__
__module____qualname____firstlineno____doc__r   r1   r5   r9   r=   rA   rH   __static_attributes__rJ   r   r   r   r   
   s6    1 @D#*;X5L;6r   r   )
loggingengineior   r    r   	getLoggerdefault_loggerBaseManagerr   rJ   r   r   <module>rW      s5     )  "":.Sl&& Sr   