
    i                     d    S SK r S SKrS SKrS SKJrJr  \R
                  " S5      r " S S5      rg)    N)bidictValueDuplicationErrorsocketioc                   ~    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rSS jrS rS rS rS rS rSrg)BaseManager
   c                 n    S U l         S U l        0 U l        0 U l        0 U l        0 U l        [        U l        g N)loggerserverrooms
eio_to_sid	callbackspending_disconnectjsonselfs    R/home/admin/cozy_coffee/venv/lib/python3.13/site-packages/socketio/base_manager.py__init__BaseManager.__init__   s4    
"$	    c                 Z    Xl         U R                   R                  R                  U l        g r
   )r   packet_classr   )r   r   s     r   
set_serverBaseManager.set_server   s    KK,,11	r   c                     g)zaInvoked before the first request is received. Subclasses can add
their initialization code here.
N r   s    r   
initializeBaseManager.initialize   s     	r   c                 6    U R                   R                  5       $ )z3Return an iterable with the active namespace names.)r   keysr   s    r   get_namespacesBaseManager.get_namespaces   s    zz  r   c              #     #    U R                   R                  U0 5      n[        US5      (       ap  [        U[        5      (       d[  US   U;   a  X2S      R
                  R                  5       O0 nUSS  H'  nUR                  XS;   a  X5   R
                  O0 5        M)     O#X#;   a  X2   R
                  R                  5       O0 nUR                  5        Sh  vN   g N7f)a"  Return an iterable with the active participants in a room.

Note that in a multi-server scenario this method only returns the
participants connect to the server in which the method is called. There
is currently no functionality to assemble a complete list of users
across multiple servers.
__len__r      N)	r   gethasattr
isinstancestr_fwdmcopyupdateitems)r   	namespaceroomnsparticipantsrs         r   get_participantsBaseManager.get_participants"   s      ZZ^^Ir*4##JtS,A,A7;Aw"}21g;,,113"L!"X##17BEKKC  59J28>>..0BL%%'''s   CCCCc                     U R                   R                  R                  5       n U R                  X2SUS9  U R                  X2X1S9  U$ ! [         a     gf = f)z,Register a client connection to a namespace.N)eio_sid)r   eiogenerate_idbasic_enter_roomr   )r   r7   r/   sids       r   connectBaseManager.connect3   s`    kkoo))+	!!#$!H 	ccC
	 % 		s   A	 	
AAc                     X R                   ;   a  XR                   U   ;   a  g U R                  U   S    U   S L$ ! [         a     gf = f)NF)r   r   KeyErrorr   r;   r/   s      r   is_connectedBaseManager.is_connected>   sZ    ///..y99	::i(.s34?? 		s   ; 
AAc                 b     U R                   U   S    R                  U   $ ! [         a     g f = fr
   )r   _invmr?   )r   r7   r/   s      r   sid_from_eio_sidBaseManager.sid_from_eio_sidI   s8    	::i(.44W== 		s   ! 
..c                 d    X R                   ;   a!  U R                   U   S    R                  U5      $ g r
   )r   r'   r@   s      r   eio_sid_from_sidBaseManager.eio_sid_from_sidO   s0    

"::i(.22377 #r   c                     X R                   ;  a  / U R                   U'   U R                   U   R                  U5        U R                  U   S   R                  U5      $ )zPut the client in the to-be-disconnected list.

This allows the client data structures to be present while the
disconnect handler is invoked, but still recognize the fact that the
client is soon going away.
N)r   appendr   r'   r@   s      r   pre_disconnectBaseManager.pre_disconnectS   sX     33313D##I.	*11#6zz)$T*..s33r   c                    X R                   ;  a  g / nU R                   U   R                  5       R                  5        H  u  pVX;   d  M  UR                  U5        M     U H  nU R	                  XU5        M     XR
                  ;   a  U R
                  U	 X R                  ;   a\  XR                  U   ;   aI  U R                  U   R                  U5        [        U R                  U   5      S:X  a  U R                  U	 g g g g Nr   )	r   r,   r.   rK   basic_leave_roomr   r   removelen)r   r;   r/   kwargsr   	room_namer0   s          r   basic_disconnectBaseManager.basic_disconnect_   s    JJ&#zz)499;AACOI{Y'  D D!!#$7 .. s#///..y99##I.55c:4**956!;++I6 < : 0r   Nc                 *   Uc  X R                   ;  a  [        S5      eX R                   ;  a  0 U R                   U'   X0R                   U   ;  a  [        5       U R                   U   U'   Uc  U R                   U   S    U   nX@R                   U   U   U'   g )Nz+sid is not connected to requested namespace)r   
ValueErrorr   )r   r;   r/   r0   r7   s        r   r:   BaseManager.basic_enter_roomp   s    ?y

:JKKJJ&$&DJJy!zz),,*0(DJJy!$'?jj+D1#6G+2

9d#C(r   c                      U R                   U   U   U	 [        U R                   U   U   5      S:X  a;  U R                   U   U	 [        U R                   U   5      S:X  a  U R                   U	 g g g ! [         a     g f = frO   )r   rR   r?   )r   r;   r/   r0   s       r   rP   BaseManager.basic_leave_room{   s    	

9%d+C04::i(./14JJy)$/tzz),-2

9- 3 5  		s   A+A0 0
A=<A=c                 ~     U R                  X!5       H  u  p4U R                  X2U5        M     g ! [         a     g f = fr
   )r4   rP   r?   )r   r0   r/   r;   _s        r   basic_close_roomBaseManager.basic_close_room   sA    	//	@%%cd; A 		s   ,/ 
<<c                     / n U R                   U   R                  5        H"  u  pEUc  M
  X;   d  M  UR                  U5        M$     U$ ! [         a     U$ f = f)z Return the rooms a client is in.)r   r.   rK   r?   )r   r;   r/   r3   rT   r0   s         r   	get_roomsBaseManager.get_rooms   sa    	#'::i#8#>#>#@	(S[HHY' $A
   		s   #A	 A	 A	 	
AAc                     XR                   ;  a%  S[        R                  " S5      0U R                   U'   [        U R                   U   S   5      nX R                   U   U'   U$ )z/Generate a unique identifier for an ACK packet.r   r&   )r   	itertoolscountnext)r   r;   callbackids       r   _generate_ack_idBaseManager._generate_ack_id   sV    nn$#$iooa&8"9DNN3$..%a()"*sB	r   c                     U R                   (       a  U R                   $ U R                  (       a  U R                  R                   $ [        $ )z\Get the appropriate logger

Prevents uninitialized servers in write-only mode from failing.
)r   r   default_loggerr   s    r   _get_loggerBaseManager._get_logger   s2     ;;;;[[;;%%%!!r   )r   r   r   r   r   r   r   r
   )__name__
__module____qualname____firstlineno__r   r   r   r"   r4   r<   rA   rE   rH   rL   rU   r:   rP   r^   ra   ri   rm   __static_attributes__r   r   r   r   r   
   sW    2!("		8
47"	3	"r   r   )rd   loggingr   r   r   	getLoggerrl   r   r   r   r   <module>rv      s-       0"":.`" `"r   