§
    !ß·i¦  ã                   óV   — d dl Z d dlZd dlmZ d dlmZ ddlmZ  G d„ de¦  «        ZdS )é    N)Úpacketé   )ÚBaseManagerc                   óT   ‡ — e Zd ZdZd„ Z	 	 dd„Zˆ fd„Zd„ Zdd„Zd„ Z	d	„ Z
d
„ Zˆ xZS )ÚAsyncManagerz+Manage a client list for an asyncio server.c              ƒ   ó2   K  — |                       ||¦  «        S ©N)Úis_connected)ÚselfÚsidÚ	namespaces      ú[/home/mmwave/public_html/mmwave/venv/lib/python3.11/site-packages/socketio/async_manager.pyÚcan_disconnectzAsyncManager.can_disconnect   s   è è € Ø× Ò   iÑ0Ô0Ð0ó    Nc           
   ‹   óÔ  K  — |p|}|| j         vrdS t          |t          ¦  «        rt          |¦  «        }n|�|g}ng }t          |t          ¦  «        s|g}g }	|sÉ| j                             t          j        ||g|z   ¬¦  «        }
|
                     ¦   «         }t          |t          ¦  «        s|g}d„ |D ¦   «         }|  	                    ||¦  «        D ]N\  }}||vrE|D ]B}|	 
                    t          j        | j                             ||¦  «        ¦  «        ¦  «         ŒCŒOn¢|  	                    ||¦  «        D ]‹\  }}||vr‚|                      ||¦  «        }| j                             t          j        ||g|z   |¬¦  «        }
|	 
                    t          j        | j                             ||
¦  «        ¦  «        ¦  «         ŒŒ|	g k    rdS t          j        |	¦  «        ƒ d{V —† dS )z•Emit a message to a single client, a room, or all the clients
        connected to the namespace.

        Note: this method is a coroutine.
        N)r   Údatac                 óL   — g | ]!}t          j        t           j        |¦  «        ‘Œ"S © )Ú
eio_packetÚPacketÚMESSAGE)Ú.0Úps     r   ú
<listcomp>z%AsyncManager.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ÚappendÚasyncioÚcreate_taskÚ_send_eio_packetÚ_generate_ack_idÚ_send_packetÚwait)r   Úeventr   r   ÚroomÚskip_sidÚcallbackÚtoÚkwargsÚtasksÚpktÚencoded_packetÚeio_pktr   Úeio_sidr   r   s                    r   ÚemitzAsyncManager.emit   sm  è è € ð ˆz�TˆØ˜DœJÐ&Ð&ØˆFÝ�d�EÑ"Ô"ð 	õ ˜‘:”:ˆDˆDØÐØ�6ˆDˆDàˆDÝ˜(¥DÑ)Ô)ð 	"Ø �zˆHØˆØð 	Að ”+×*Ò*Ý”¨	¸¸À$¹ð +ñ Hô HˆCà ŸZšZ™\œ\ˆNÝ˜n­dÑ3Ô3ð 2Ø"0Ð!1�ð0ð 0Ø .ð0ñ 0ô 0ˆGà $× 5Ò 5°iÀÑ FÔ Fð Gð G‘��WØ˜hÐ&Ð&Ø$ð Gð G˜ØŸš¥WÔ%8Ø œK×8Ò8¸À!ÑDÔDñ&Fô &Fñ Gô Gð Gð GøðGð !%× 5Ò 5°iÀÑ FÔ Fð Að A‘��WØ˜hÐ&Ð&Ø×.Ò.¨s°HÑ=Ô=�BØœ+×2Ò2Ýœ°	ÀÀÈ$ÁØð 3ñ ô �Cð —L’L¥Ô!4Øœ×0Ò0°¸#Ñ>Ô>ñ"@ô "@ñ Aô Að Aøà�BŠ;ˆ;ØˆFÝŒl˜5Ñ!Ô!Ð!Ð!Ð!Ð!Ð!Ð!Ð!Ð!Ð!r   c              ƒ   óL   •K  — t          ¦   «                              ||¦  «        S )z`Register a client connection to a namespace.

        Note: this method is a coroutine.
        )ÚsuperÚconnect)r   r6   r   Ú	__class__s      €r   r:   zAsyncManager.connectC   s!   øè è € õ
 ‰wŒw�Š˜w¨	Ñ2Ô2Ð2r   c              ‹   ó$   K  —  | j         ||fi |¤ŽS )zHDisconnect a client.

        Note: this method is a coroutine.
        )Úbasic_disconnect)r   r   r   r1   s       r   Ú
disconnectzAsyncManager.disconnectJ   s%   è è € ð
 %ˆtÔ$ S¨)Ð>Ð>°vÐ>Ð>Ð>r   c              ƒ   ó8   K  — |                       ||||¬¦  «        S )zKAdd a client to a room.

        Note: this method is a coroutine.
        )r6   )Úbasic_enter_room)r   r   r   r-   r6   s        r   Ú
enter_roomzAsyncManager.enter_roomQ   s%   è è € ð
 ×$Ò$ S¨)°TÀ7Ð$ÑKÔKÐKr   c              ƒ   ó4   K  — |                       |||¦  «        S )zPRemove a client from a room.

        Note: this method is a coroutine.
        )Úbasic_leave_room)r   r   r   r-   s       r   Ú
leave_roomzAsyncManager.leave_roomX   s    è è € ð
 ×$Ò$ S¨)°TÑ:Ô:Ð:r   c              ƒ   ó2   K  — |                       ||¦  «        S )zXRemove all participants from a room.

        Note: this method is a coroutine.
        )Úbasic_close_room)r   r-   r   s      r   Ú
close_roomzAsyncManager.close_room_   s   è è € ð
 ×$Ò$ T¨9Ñ5Ô5Ð5r   c              ƒ   ó>  K  — d}	 | j         |         |         }| j         |         |= n7# t          $ r* |                      ¦   «                              d¦  «         Y nw xY w|�: ||Ž }t	          j        |¦  «        r#	 |ƒ d{V —† dS # t          j        $ r Y dS w xY wdS dS )zSInvoke an application callback.

        Note: this method is a coroutine.
        Nz$Unknown callback received, ignoring.)Ú	callbacksÚKeyErrorÚ_get_loggerÚwarningÚinspectÚiscoroutiner&   ÚCancelledError)r   r   r   r   r/   Úrets         r   Útrigger_callbackzAsyncManager.trigger_callbackf   sö   è è € ð
 ˆð	(Ø”~ cÔ*¨2Ô.ˆHð
 ”˜sÔ# BÐ'Ð'øõ	 ð 	Oð 	Oð 	Oà×ÒÑÔ×&Ò&Ð'MÑNÔNÐNÐNÐNð	Oøøøð
 ÐØ�(˜D�/ˆCÝÔ" 3Ñ'Ô'ð ðØ�I�I�I�I�I�I�I�I�IøÝÔ-ð ð ð Ø�D�Dðøøøð  Ððð s!   †( ¨1AÁAÁ;B ÂBÂB)NNNNr	   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r7   r:   r>   rA   rD   rG   rQ   Ú__classcell__)r;   s   @r   r   r   	   sÀ   ø€ € € € € Ø5Ð5ð1ð 1ð 1ð FJØ%)ð3"ð 3"ð 3"ð 3"ðj3ð 3ð 3ð 3ð 3ð?ð ?ð ?ðLð Lð Lð Lð;ð ;ð ;ð6ð 6ð 6ðð ð ð ð ð ð r   r   )	r&   rM   Úengineior   r   ÚsocketioÚbase_managerr   r   r   r   r   ú<module>rZ      s‹   ðØ €€€Ø €€€à )Ð )Ð )Ð )Ð )Ð )Ø Ð Ð Ð Ð Ð Ø %Ð %Ð %Ð %Ð %Ð %ðpð pð pð pð p�;ñ pô pð pð pð pr   