
    i                     N    S SK r S SKrS SKJr  S SKJr  SSKJr   " S S\5      rg)    N)packet   )BaseManagerc                   b   ^  \ rS rSrSrS r  SS jrU 4S jrS rSS jr	S r
S	 rS
 rSrU =r$ )AsyncManager	   z+Manage a client list for an asyncio server.c                 ,   #    U R                  X5      $ 7fN)is_connected)selfsid	namespaces      S/home/admin/cozy_coffee/venv/lib/python3.13/site-packages/socketio/async_manager.pycan_disconnectAsyncManager.can_disconnect   s       00   c           
      N  #    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/ 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       HS  u  pX;  d  M  U HA  nU	R                  [        R                  " U R                  R!                  X5      5      5        MC     MU     OU R                  X45       H  u  pX;  d  M  U R#                  X5      nU R                  R                  [        R                  X1/U-   US9n
U	R                  [        R                  " U R                  R%                  X5      5      5        M     U	/ :X  a  g[        R&                  " U	5      I Sh  vN   gs  snf  N
7f)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   data)r   r   id)rooms
isinstancetuplelistserverpacket_classr   EVENTencode
eio_packetPacketMESSAGE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peio_pktr   eio_sidr   s                    r   emitAsyncManager.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&$W%8%8 KK88D&F G % !G !% 5 5i F&..s=B++22	$ 3 C LL!4!400>"@ A !G B;ll5!!!-0, 	"s,   B?H%/H0H%A%H%8B H%H#H%c                 *   >#    [         TU ]  X5      $ 7f)zPRegister a client connection to a namespace.

Note: this method is a coroutine.
)superconnect)r   r4   r   	__class__s      r   r9   AsyncManager.connectC   s     
 ww22s   c                 0   #    U R                   " X40 UD6$ 7f)z8Disconnect a client.

Note: this method is a coroutine.
)basic_disconnect)r   r   r   r.   s       r   
disconnectAsyncManager.disconnectJ   s     
 $$S>v>>s   c                 *   #    U R                  XX4S9$ 7f)z;Add a client to a room.

Note: this method is a coroutine.
)r4   )basic_enter_room)r   r   r   r*   r4   s        r   
enter_roomAsyncManager.enter_roomQ   s     
 $$ST$KKs   c                 .   #    U R                  XU5      $ 7f)z@Remove a client from a room.

Note: this method is a coroutine.
)basic_leave_room)r   r   r   r*   s       r   
leave_roomAsyncManager.leave_roomX   s     
 $$ST::s   c                 ,   #    U R                  X5      $ 7f)zHRemove all participants from a room.

Note: this method is a coroutine.
)basic_close_room)r   r*   r   s      r   
close_roomAsyncManager.close_room_   s     
 $$T55r   c                 L  #    Sn U R                   U   U   nU R                   U   U	 Ub-  U" U6 n[        R
                  " U5      (       a   UI Sh  vN   ggg! [         a"    U R                  5       R                  S5         N\f = f N6! [        R                   a     gf = f7f)zCInvoke 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_callbackAsyncManager.trigger_callbackf   s     
 	(~~c*2.H
 s#B'D/C""3''II (    	O&&'MN	O -- s]   B$A 3B$B
 BB
 B$)BB$BB$B
 
B!B$ B!!B$ )NNNNr
   )__name__
__module____qualname____firstlineno____doc__r   r5   r9   r>   rB   rF   rJ   rU   __static_attributes____classcell__)r:   s   @r   r   r   	   s?    51 FJ%)3"j3?L;6     r   )	r#   rQ   engineior   r   socketiobase_managerr   r   rW   r_   r   <module>rc      s"      )  %p; pr_   