§
    !ß·i  ã                   óx   — d dl Z d dlmZ ddlmZ ddlmZ  e j        d¦  «        Z G d„ dej        ¦  «        Z	dS )é    N)Úpacketé   )Úbase_managerÚsocketioc                   óD   — e Zd ZdZd„ Z	 	 d
d„Zd„ Zdd„Zd„ Zd„ Z	d	„ Z
dS )ÚManagera]  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                 ó.   — |                       ||¦  «        S ©N)Úis_connected)ÚselfÚsidÚ	namespaces      úU/home/mmwave/public_html/mmwave/venv/lib/python3.11/site-packages/socketio/manager.pyÚcan_disconnectzManager.can_disconnect   s   € Ø× Ò   iÑ0Ô0Ð0ó    Nc                 óö  — |p|}|| j         vrdS t          |t          ¦  «        rt          |¦  «        }n|�|g}ng }t          |t          ¦  «        s|g}|s¥| j                             t          j        ||g|z   ¬¦  «        }	|	                     ¦   «         }
t          |
t          ¦  «        s|
g}
d„ |
D ¦   «         }|  	                    ||¦  «        D ])\  }}||vr |D ]}| j         
                    ||¦  «         ŒŒ*dS |  	                    ||¦  «        D ]f\  }}||vr]|                      ||¦  «        }| j                             t          j        ||g|z   |¬¦  «        }	| j                             ||	¦  «         ŒgdS )zaEmit a message to a single client, a room, or all the clients
        connected to the namespace.N)r   Údatac                 óL   — g | ]!}t          j        t           j        |¦  «        ‘Œ"S © )Ú
eio_packetÚPacketÚMESSAGE)Ú.0Úps     r   ú
<listcomp>z Manager.emit.<locals>.<listcomp>/   s8   € ð 0ð 0ð 0Øõ "Ô(­Ô);¸QÑ?Ô?ð 0ð 0ð 0r   )r   r   Úid)ÚroomsÚ
isinstanceÚtupleÚlistÚserverÚpacket_classr   ÚEVENTÚencodeÚget_participantsÚ_send_eio_packetÚ_generate_ack_idÚ_send_packet)r   Úeventr   r   ÚroomÚskip_sidÚcallbackÚtoÚkwargsÚpktÚencoded_packetÚeio_pktr   Úeio_sidr   r   s                   r   ÚemitzManager.emit   sê  € ð ˆz�TˆØ˜DœJÐ&Ð&ØˆFÝ�d�EÑ"Ô"ð 	õ ˜‘:”:ˆDˆDØÐØ�6ˆDˆDàˆDÝ˜(¥DÑ)Ô)ð 	"Ø �zˆHØð 	;ð ”+×*Ò*Ý”¨	¸¸À$¹ð +ñ Hô HˆCà ŸZšZ™\œ\ˆNÝ˜n­dÑ3Ô3ð 2Ø"0Ð!1�ð0ð 0Ø .ð0ñ 0ô 0ˆGà $× 5Ò 5°iÀÑ FÔ Fð Að A‘��WØ˜hÐ&Ð&Ø$ð Að A˜Øœ×4Ò4°W¸aÑ@Ô@Ð@Ð@øðAð Að !%× 5Ò 5°iÀÑ FÔ Fð ;ð ;‘��WØ˜hÐ&Ð&Ø×.Ò.¨s°HÑ=Ô=�BØœ+×2Ò2Ýœ°	ÀÀÈ$ÁØð 3ñ ô �Cð ”K×,Ò,¨W°cÑ:Ô:Ð:øð;ð ;r   c                 ó.   — |                       ||¦  «        S )z.Register a client disconnect from a namespace.)Úbasic_disconnect)r   r   r   r.   s       r   Ú
disconnectzManager.disconnectB   s   € à×$Ò$ S¨)Ñ4Ô4Ð4r   c                 ó4   — |                       ||||¬¦  «        S )zAdd a client to a room.)r2   )Úbasic_enter_room)r   r   r   r*   r2   s        r   Ú
enter_roomzManager.enter_roomF   s   € à×$Ò$ S¨)°TÀ7Ð$ÑKÔKÐKr   c                 ó0   — |                       |||¦  «        S )zRemove a client from a room.)Úbasic_leave_room)r   r   r   r*   s       r   Ú
leave_roomzManager.leave_roomJ   s   € à×$Ò$ S¨)°TÑ:Ô:Ð:r   c                 ó.   — |                       ||¦  «        S )z$Remove all participants from a room.)Úbasic_close_room)r   r*   r   s      r   Ú
close_roomzManager.close_roomN   s   € à×$Ò$ T¨9Ñ5Ô5Ð5r   c                 óÐ   — d}	 | j         |         |         }| j         |         |= n7# t          $ r* |                      ¦   «                              d¦  «         Y nw xY w|� ||Ž  dS dS )zInvoke an application callback.Nz$Unknown callback received, ignoring.)Ú	callbacksÚKeyErrorÚ_get_loggerÚwarning)r   r   r   r   r,   s        r   Útrigger_callbackzManager.trigger_callbackR   s˜   € àˆð	(Ø”~ cÔ*¨2Ô.ˆHð
 ”˜sÔ# BÐ'Ð'øõ	 ð 	Oð 	Oð 	Oà×ÒÑÔ×&Ò&Ð'MÑNÔNÐNÐNÐNð	Oøøøð
 ÐØˆH�dˆOˆOˆOˆOð  Ðs   „& ¦1AÁA)NNNNr
   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r3   r6   r9   r<   r?   rE   r   r   r   r   r   
   s    € € € € € ðð ð1ð 1ð 1ð @DØ#ð*;ð *;ð *;ð *;ðX5ð 5ð 5ðLð Lð Lð Lð;ð ;ð ;ð6ð 6ð 6ðð ð ð ð r   r   )
ÚloggingÚengineior   r   Ú r   Ú	getLoggerÚdefault_loggerÚBaseManagerr   r   r   r   ú<module>rP      s—   ðØ €€€à )Ð )Ð )Ð )Ð )Ð )Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à"�Ô" :Ñ.Ô.€ðSð Sð Sð Sð SˆlÔ&ñ Sô Sð Sð Sð Sr   