
    i                     ~    S SK r S SKrS SKrS SKrS SKrSSKJr  \ R                  " S5      r/ r	S r
Sq " S S5      rg)    N   )packetzengineio.clientc                     [         SS  H*  nUR                  5       (       a  M  UR                  5         M,     [        [        5      (       a  [	        X5      $ [
        R                  " X5      $ )z\SIGINT handler.

Disconnect all active clients and then invoke the original signal handler.
N)connected_clientsis_asyncio_based
disconnectcallableoriginal_signal_handlersignaldefault_int_handler)sigframeclients      Q/home/admin/cozy_coffee/venv/lib/python3.13/site-packages/engineio/base_client.pysignal_handlerr      sZ    
 $A&&&(( ' '((&s22 ))#55    c                   t    \ rS rSr/ SQr " S S5      r   SS jrS rSS jrS	 r	S
 r
S rS rS rS rSrg)
BaseClient   )connectr   messagec                   $    \ rS rSrSrSrSrSrSrg)BaseClient.reason!   zDisconnection reasons.zclient disconnectzserver disconnectztransport error N)	__name__
__module____qualname____firstlineno____doc__CLIENT_DISCONNECTSERVER_DISCONNECTTRANSPORT_ERROR__static_attributes__r   r   r   reasonr   !   s    $//+r   r%   Nc	                    U(       a\  [         cU  [        R                  " 5       [        R                  " 5       :X  a)  [        R                  " [        R
                  [        5      q 0 U l        S U l        S U l	        S U l
        S U l        S U l        S U l        S U l        X@l        US LU l        X`l        S U l        S U l        S U l        U R+                  5       U l        U R/                  5       U l        SU l        XPl        U=(       d    0 U l        Xl        Ub  U[:        R<                  l        [A        U[B        5      (       d  Xl"        O[F        U l"        U RD                  RH                  [J        RL                  :X  a  U(       a*  U RD                  RO                  [J        RP                  5        O)U RD                  RO                  [J        RR                  5        U RD                  RU                  [J        RV                  " 5       5        X0l,        g Ndisconnected)-r
   	threadingcurrent_threadmain_threadr   SIGINTr   handlersbase_url
transportscurrent_transportsidupgradesping_intervalping_timeouthttpexternal_httphandle_sigintwsread_loop_taskwrite_loop_taskcreate_queuequeueget_queue_empty_exceptionqueue_emptystate
ssl_verifywebsocket_extra_optionstimestamp_requestsr   Packetjson
isinstanceboolloggerdefault_loggerlevelloggingNOTSETsetLevelINFOERROR
addHandlerStreamHandlerrequest_timeout)	selfrG   rD   rQ   http_sessionr@   r7   rA   rB   s	            r   __init__BaseClient.__init__*   s{    4<((*i.C.C.EE&,mmFMM4B'D#!%!  	)5*"#&&(
99;#
$'>'D"$"4!%FMM&$'' K(DK{{  GNN2KK((6KK((7&&w'<'<'>?.r   c                     g)NFr   rR   s    r   r   BaseClient.is_asyncio_basedV   s    r   c                 f   ^ ^ TT R                   ;  a  [        S5      eUU 4S jnUc  U$ U" U5        g)ab  Register an event handler.

:param event: The event name. Can be ``'connect'``, ``'message'`` or
              ``'disconnect'``.
:param handler: The function that should be invoked to handle the
                event. When this parameter is not given, the method
                acts as a decorator for the handler function.

Example usage::

    # as a decorator:
    @eio.on('connect')
    def connect_handler():
        print('Connection request')

    # as a method:
    def message_handler(msg):
        print('Received message: ', msg)
        eio.send('response')
    eio.on('message', message_handler)
zInvalid eventc                 &   > U TR                   T'   U $ N)r-   )handlereventrR   s    r   set_handler"BaseClient.on.<locals>.set_handlerr   s    #*DMM% Nr   N)event_names
ValueError)rR   r]   r\   r^   s   ``  r   onBaseClient.onY   s8    , (((_--	 ?Gr   c                     U R                   $ )zReturn the name of the transport currently in use.

The possible values returned by this function are ``'polling'`` and
``'websocket'``.
)r0   rW   s    r   	transportBaseClient.transportz   s     %%%r   c                      SU l         S U l        g r'   )r?   r1   rW   s    r   _resetBaseClient._reset   s    #
r   c           	      >   UR                  S5      n[        R                  R                  U5      nUS:X  a  SnOUS:X  a  SnO[	        S5      eUR
                  S;   a  US-  nS	R                  XTR                  X$R                  UR                  (       a  S
US9$ SUS9$ )z&Generate the Engine.IO connection URL./pollingr5   	websocketr8   zinvalid transport)httpswssszC{scheme}://{netloc}/{path}/?{query}{sep}transport={transport}&EIO=4& )schemenetlocpathquerysepre   )	stripurllibparseurlparsera   rs   formatrt   rv   )rR   urlengineio_pathre   
parsed_urlrs   s         r   _get_engineio_urlBaseClient._get_engineio_url   s    %++C0\\**3/
	!F+%F011 00cMF34:F!*;*;&.>.>)//'	 5; 5)	) 68'	 5; 5)	)r   c                 h    U R                   (       d  gS[        [        R                  " 5       5      -   $ )z.Generate the Engine.IO query string timestamp.rr   z&t=)rB   strtimerW   s    r   _get_url_timestampBaseClient._get_url_timestamp   s$    &&s499;'''r   c                     [        S5      e)zCreate a queue object.!must be implemented in a subclassNotImplementedError)rR   argskwargss      r   r;   BaseClient.create_queue   s    !"EFFr   c                     [        S5      e)z\Return the queue empty exception raised by queues created by the
``create_queue()`` method.
r   r   rW   s    r   r=   $BaseClient.get_queue_empty_exception   s     ""EFFr   )r.   r0   r6   r7   r-   r5   rG   r3   r4   r<   r>   r9   rQ   r1   r@   r?   rB   r/   r2   rA   r:   r8   )FN   NTTNTr[   )r   r   r   r   r`   r%   rT   r   rb   re   rh   r   r   r;   r=   r$   r   r   r   r   r      sO    6K, , ABCGBF*/XB&)*(GGr   r   )rJ   r   r)   r   ry   rr   r   	getLoggerrH   r   r   r
   r   r   r   r   <module>r      sI         ""#45 6  KG KGr   