§
    !ß·iÃ  ã                   ó‚   — d dl Z d dlZd dlZd dlZd dlZddlmZ  e j        d¦  «        Zg Z	d„ Z
da G d„ d¦  «        ZdS )é    Né   )Úpacketzengineio.clientc                 óè   — t           dd…         D ]*}|                     ¦   «         s|                     ¦   «          Œ+t          t          ¦  «        rt	          | |¦  «        S t          j        | |¦  «        S )zdSIGINT 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      úY/home/mmwave/public_html/mmwave/venv/lib/python3.11/site-packages/engineio/base_client.pyÚsignal_handlerr      sy   € õ
 $ A A AÔ&ð  ð  ˆØ×&Ò&Ñ(Ô(ð 	 Ø×ÒÑÔÐøÝÕ'Ñ(Ô(ð 6Ý& s¨EÑ2Ô2Ð2õ Ô)¨#¨uÑ5Ô5Ð5ó    c                   óp   — e Zd Zg d¢Z G d„ d¦  «        Z	 	 	 dd„Zd	„ Zdd
„Zd„ Zd„ Z	d„ Z
d„ Zd„ Zd„ ZdS )Ú
BaseClient)Úconnectr   Úmessagec                   ó   — e Zd ZdZdZdZdZdS )úBaseClient.reasonzDisconnection reasons.zclient disconnectzserver disconnectztransport errorN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚCLIENT_DISCONNECTÚSERVER_DISCONNECTÚTRANSPORT_ERROR© r   r   Úreasonr   !   s%   € € € € € Ø$Ð$à/Ðà/Ðà+ˆˆˆr   r!   FNé   Tc	                 ó¾  — |rSt           €Lt          j        ¦   «         t          j        ¦   «         k    r$t	          j        t          j        t          ¦  «        a i | _        d | _        d | _	        d | _
        d | _        d | _        d | _        d | _        || _        |d u| _        || _        d | _        d | _        d | _        |                      ¦   «         | _        |                      ¦   «         | _        d| _        || _        |pi | _        || _        |�|t:          j        _        tA          |tB          ¦  «        s|| _"        nœtF          | _"        | j"        j$        tJ          j&        k    rv|r%| j"         '                    tJ          j(        ¦  «         n$| j"         '                    tJ          j)        ¦  «         | j"         *                    tK          j+        ¦   «         ¦  «         || _,        d S ©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)	ÚselfrD   rA   rN   Úhttp_sessionr=   r4   r>   r?   s	            r   Ú__init__zBaseClient.__init__*   s°  € ð ð 	DÕ4Ð<ÝÔ(Ñ*Ô*­iÔ.CÑ.EÔ.EÒEÐEÝ&,¤mµF´MÝ4Bñ'Dô 'DÐ#àˆŒØˆŒØˆŒØ!%ˆÔØˆŒØˆŒØ!ˆÔØ ˆÔØ ˆŒ	Ø)°Ð5ˆÔØ*ˆÔØˆŒØ"ˆÔØ#ˆÔØ×&Ò&Ñ(Ô(ˆŒ
Ø×9Ò9Ñ;Ô;ˆÔØ#ˆŒ
Ø$ˆŒØ'>Ð'DÀ"ˆÔ$Ø"4ˆÔàÐØ!%�FŒMÔÝ˜&¥$Ñ'Ô'ð 		@Ø ˆDŒKˆKå(ˆDŒKØŒ{Ô ¥G¤NÒ2Ð2Øð 8Ø”K×(Ò(­¬Ñ6Ô6Ð6Ð6à”K×(Ò(­¬Ñ7Ô7Ð7Ø”×&Ò&¥wÔ'<Ñ'>Ô'>Ñ?Ô?Ð?à.ˆÔÐÐr   c                 ó   — dS )NFr    ©rO   s    r   r   zBaseClient.is_asyncio_basedV   s   € Øˆur   c                 ód   ‡ ‡— ‰‰ j         vrt          d¦  «        ‚ˆˆ fd„}|€|S  ||¦  «         dS )aâ  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                 ó   •— | ‰j         ‰<   | S ©N)r*   )ÚhandlerÚeventrO   s    €€r   Úset_handlerz"BaseClient.on.<locals>.set_handlerr   s   ø€ Ø#*ˆDŒM˜%Ñ ØˆNr   N)Úevent_namesÚ
ValueError)rO   rX   rW   rY   s   ``  r   ÚonzBaseClient.onY   sc   øø€ ð, ˜Ô(Ð(Ð(Ý˜_Ñ-Ô-Ð-ð	ð 	ð 	ð 	ð 	ð 	ð ˆ?ØÐØˆ�GÑÔÐÐÐr   c                 ó   — | j         S )z¡Return the name of the transport currently in use.

        The possible values returned by this function are ``'polling'`` and
        ``'websocket'``.
        )r-   rS   s    r   Ú	transportzBaseClient.transportz   s   € ð Ô%Ð%r   c                 ó"   — d| _         d | _        d S r$   )r<   r.   rS   s    r   Ú_resetzBaseClient._reset‚   s   € Ø#ˆŒ
ØˆŒˆˆr   c                 ó$  — |                      d¦  «        }t          j                             |¦  «        }|dk    rd}n|dk    rd}nt	          d¦  «        ‚|j        dv r|dz  }d	                     ||j        ||j        |j        rd
nd|¬¦  «        S )z&Generate the Engine.IO connection URL.ú/Úpollingr2   Ú	websocketr5   zinvalid transport)ÚhttpsÚwssÚszC{scheme}://{netloc}/{path}/?{query}{sep}transport={transport}&EIO=4ú&Ú )ÚschemeÚnetlocÚpathÚqueryÚsepr^   )	ÚstripÚurllibÚparseÚurlparser[   rj   Úformatrk   rm   )rO   ÚurlÚengineio_pathr^   Ú
parsed_urlrj   s         r   Ú_get_engineio_urlzBaseClient._get_engineio_url†   sµ   € à%×+Ò+¨CÑ0Ô0ˆÝ”\×*Ò*¨3Ñ/Ô/ˆ
à˜	Ò!Ð!ØˆFˆFØ˜+Ò%Ð%ØˆFˆFåÐ0Ñ1Ô1Ð1ØÔÐ 0Ð0Ð0Ø�c‰MˆFð3ß4:²FØ!¨*Ô*;Ø&¨jÔ.>Ø)Ô/Ð7˜˜°RØ'ð	 5;ñ 5)ô 5)ð	)r   c                 óZ   — | j         sdS dt          t          j        ¦   «         ¦  «        z   S )z.Generate the Engine.IO query string timestamp.ri   z&t=)r?   ÚstrÚtimerS   s    r   Ú_get_url_timestampzBaseClient._get_url_timestamp›   s+   € àÔ&ð 	Ø�2Ø•s�4œ9™;œ;Ñ'Ô'Ñ'Ð'r   c                 ó    — t          d¦  «        ‚)zCreate a queue object.ú!must be implemented in a subclass©ÚNotImplementedError)rO   ÚargsÚkwargss      r   r8   zBaseClient.create_queue¡   s   € å!Ð"EÑFÔFÐFr   c                 ó    — t          d¦  «        ‚)zlReturn the queue empty exception raised by queues created by the
        ``create_queue()`` method.
        r}   r~   rS   s    r   r:   z$BaseClient.get_queue_empty_exception¥   s   € õ "Ð"EÑFÔFÐFr   )FNr"   NTTNTrV   )r   r   r   rZ   r!   rQ   r   r\   r^   r`   rw   r{   r8   r:   r    r   r   r   r      sï   € € € € € Ø6Ð6Ð6€Kð,ð ,ð ,ð ,ð ,ñ ,ô ,ð ,ð ABØCGØBFð*/ð */ð */ð */ðXð ð ðð ð ð ðB&ð &ð &ðð ð ð)ð )ð )ð*(ð (ð (ðGð Gð GðGð Gð Gð Gð Gr   r   )rG   r   r&   rz   rp   ri   r   Ú	getLoggerrE   r   r   r
   r   r    r   r   ú<module>r„      s½   ðØ €€€Ø €€€Ø Ð Ð Ð Ø €€€Ø €€€Ø Ð Ð Ð Ð Ð à"�Ô"Ð#4Ñ5Ô5€ØÐ ð6ð 6ð 6ð Ð ðKGð KGð KGð KGð KGñ KGô KGð KGð KGð KGr   