§
    !ß·if(  ã                   ól   — d dl Z d dlZddlmZ ddlmZ ddlmZ ddlmZ  G d„ dej        ¦  «        ZdS )	é    Né   )Úbase_socket)Ú
exceptions)Úpacket)Úpayloadc                   óV   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	dd„Z
d„ Zd„ Zd„ Zd„ Zd
S )ÚSocketzAn Engine.IO socket.c                 ó  — | j                              ¦   «         }	 | j                             | j         j        | j         j        z   ¬¦  «        g}| j                             ¦   «          n# |$ r t          j        ¦   «         ‚w xY w|dgk    rg S 	 	 | j                             d¬¦  «        }| j                             ¦   «          |€| j         	                    d¦  «         n"| 
                    |¦  «         n# |$ r Y nw xY wŒt|S )z'Wait for packets to send to the client.)ÚtimeoutNTF)Úblock)ÚserverÚget_queue_empty_exceptionÚqueueÚgetÚping_intervalÚping_timeoutÚ	task_doner   Ú
QueueEmptyÚputÚappend)ÚselfÚqueue_emptyÚpacketsÚpkts       úT/home/mmwave/public_html/mmwave/venv/lib/python3.11/site-packages/engineio/socket.pyÚpollzSocket.poll   s1  € à”k×;Ò;Ñ=Ô=ˆð	*Ø”z—~’~ØœÔ1°D´KÔ4LÑLð &ñ Nô Nð OˆGàŒJ× Ò Ñ"Ô"Ð"Ð"øØð 	*ð 	*ð 	*ÝÔ'Ñ)Ô)Ð)ð	*øøøà�t�fÒÐØˆIð		ðØ”j—n’n¨5�nÑ1Ô1�Ø”
×$Ò$Ñ&Ô&Ð&Ø�;Ø”J—N’N 4Ñ(Ô(Ð(ØØ—’˜sÑ#Ô#Ð#Ð#øØð ð ð Ø�ðøøøð		ð ˆs%   ›AA( Á(BÂAC6 Ã C6 Ã6C>Ã=C>c           	      ó"  — |j         t          t          j        ¦  «        k     rt          j        |j                  nd}| j        j                             d| j        |t          |j	        t          ¦  «        s|j	        nd¦  «         |j         t          j        k    r|                      ¦   «          d	S |j         t          j        k    r4| j                             d| j        |j	        | j        j        ¬¦  «         d	S |j         t          j        k    r3|                      t          j        t          j        ¦  «        ¦  «         d	S |j         t          j        k    r)|                      dd| j        j        j        ¬¦  «         d	S t1          j        ¦   «         ‚)
zReceive packet from the client.ÚUNKNOWNz%s: Received packet %s data %sú<binary>Úmessage©Ú	run_asyncFT©ÚwaitÚabortÚreasonN)Úpacket_typeÚlenr   Úpacket_namesr   ÚloggerÚinfoÚsidÚ
isinstanceÚdataÚbytesÚPONGÚschedule_pingÚMESSAGEÚ_trigger_eventÚasync_handlersÚUPGRADEÚsendÚPacketÚNOOPÚCLOSEÚcloser&   ÚCLIENT_DISCONNECTr   ÚUnknownPacketError)r   r   Úpacket_names      r   ÚreceivezSocket.receive#   s~  € ð Œ¥¥VÔ%8Ñ!9Ô!9Ò9Ð9õ Ô)¨#¬/Ô:Ð:Ø?Hð 	àŒÔ×ÒÐ @Ø $¤¨+Ý0:¸3¼8ÅUÑ0KÔ0Kð !0 ¤ Ø%/ñ	1ô 	1ð 	1ð Œ?�fœkÒ)Ð)Ø×ÒÑ Ô Ð Ð Ð ØŒ_¥¤Ò.Ð.ØŒK×&Ò& y°$´(¸C¼HØ15´Ô1Kð 'ñ Mô Mð Mð Mð MàŒ_¥¤Ò.Ð.Ø�IŠI•f”m¥F¤KÑ0Ô0Ñ1Ô1Ð1Ð1Ð1ØŒ_¥¤Ò,Ð,Ø�JŠJ˜E¨Ø"œkÔ0ÔBð ñ Dô Dð Dð Dð Dõ Ô/Ñ1Ô1Ð1ó    c                 ó6  — | j         rt          j        ¦   «         ‚| j        rwt	          j        ¦   «         | j        z
  | j        j        k    rN| j        j                             d| j	        ¦  «         |  
                    dd| j        j        j        ¬¦  «         dS dS )z2Make sure the client is still responding to pings.z"%s: Client is gone, closing socketFr#   T)Úclosedr   ÚSocketIsClosedErrorÚ	last_pingÚtimer   r   r*   r+   r,   r:   r&   ÚPING_TIMEOUT©r   s    r   Úcheck_ping_timeoutzSocket.check_ping_timeout8   s�   € àŒ;ð 	3ÝÔ0Ñ2Ô2Ð2ØŒ>ð 		Ý”	‘”˜dœnÑ,¨t¬{Ô/GÒGÐGØŒKÔ×#Ò#Ð$HØ$(¤Hñ.ô .ð .ð
 �JŠJ˜E¨Ø"œkÔ0Ô=ð ñ ?ô ?ð ?à�5Øˆtr?   c           	      ó   — |                       ¦   «         sdS | j                             |¦  «         | j        j                             d| j        t          j        |j	                 t          |j        t          ¦  «        s|j        nd¦  «         dS )zSend a packet to the client.Nz%s: Sending packet %s data %sr   )rG   r   r   r   r*   r+   r,   r   r)   r'   r-   r.   r/   )r   r   s     r   r6   zSocket.sendH   s‡   € à×&Ò&Ñ(Ô(ð 	 ØˆFàŒJ�NŠN˜3ÑÔÐØŒÔ×ÒÐ ?Ø $¤­&Ô*=¸c¼oÔ*NÝ0:¸3¼8ÅUÑ0KÔ0Kð !0 ¤ Ø%/ñ	1ô 	1ð 	1ð 	1ð 	1r?   c                 óà  — d„ |                      dd¦  «                             ¦   «                              d¦  «        D ¦   «         }|                      dd¦  «                             ¦   «         }d|v rL|| j        v rC| j        j                             d| j        |¦  «          t          | d|z   ¦  «        ||¦  «        S | j	        s| j
        rt          j        t          j        ¦  «        gS 	 |                      ¦   «         }nm# t          j        $ r[ t#          j        ¦   «         }|                      d	| j        j        j        ¬
¦  «         |d                              |d         ¦  «        ‚w xY w|S )z2Handle a long-polling GET request from the client.c                 ó6   — g | ]}|                      ¦   «         ‘ŒS © )Ústrip)Ú.0Úss     r   ú
<listcomp>z-Socket.handle_get_request.<locals>.<listcomp>U   s6   € ð Lð Lð Làð �GŠG‰IŒIðLð Lð Lr?   ÚHTTP_CONNECTIONÚ Ú,ÚHTTP_UPGRADEÚupgradez%%s: Received request to upgrade to %sÚ	_upgrade_F)r$   r&   r   é   )r   ÚlowerÚsplitÚupgrade_protocolsr   r*   r+   r,   ÚgetattrÚ	upgradingÚupgradedr   r7   r8   r   r   r   ÚsysÚexc_infor:   r&   ÚTRANSPORT_ERRORÚwith_traceback)r   ÚenvironÚstart_responseÚconnectionsÚ	transportr   Úexcs          r   Úhandle_get_requestzSocket.handle_get_requestS   s�  € ðLð Là—[’[Ð!2°BÑ7Ô7×=Ò=Ñ?Ô?×EÒEÀcÑJÔJðLñ Lô Lˆð —K’K °Ñ3Ô3×9Ò9Ñ;Ô;ˆ	Ø˜Ð#Ð#¨	°TÔ5KÐ(KÐ(KØŒKÔ×#Ò#Ð$KØ$(¤H¨iñ9ô 9ð 9à9•7˜4 ¨yÑ!8Ñ9Ô9¸'Ø:HñJô Jð JàŒ>ð 	0˜Tœ]ð 	0õ ”M¥&¤+Ñ.Ô.Ð/Ð/ð	0Ø—i’i‘k”kˆGˆGøÝÔ$ð 	0ð 	0ð 	0Ý”,‘.”.ˆCØ�JŠJ˜E¨$¬+Ô*<Ô*LˆJÑMÔMÐMØ�a”&×'Ò'¨¨A¬Ñ/Ô/Ð/ð	0øøøð ˆs   Ã,D ÄA*E+c                 óV  — t          |                     dd¦  «        ¦  «        }|| j        j        k    rt	          j        ¦   «         ‚|d                              |¦  «                             d¦  «        }t          j	        |¬¦  «        }|j
        D ]}|                      |¦  «         ŒdS )z3Handle a long-polling POST request from the client.ÚCONTENT_LENGTHÚ0z
wsgi.inputzutf-8)Úencoded_payloadN)Úintr   r   Úmax_http_buffer_sizer   ÚContentTooLongErrorÚreadÚdecoder   ÚPayloadr   r>   )r   ra   ÚlengthÚbodyÚpr   s         r   Úhandle_post_requestzSocket.handle_post_requestj   s¥   € å�W—[’[Ð!1°3Ñ7Ô7Ñ8Ô8ˆØ�D”KÔ4Ò4Ð4ÝÔ0Ñ2Ô2Ð2à˜<Ô(×-Ò-¨fÑ5Ô5×<Ò<¸WÑEÔEˆDÝ”°Ð5Ñ5Ô5ˆAØ”yð "ð "�Ø—’˜SÑ!Ô!Ð!Ð!ð"ð "r?   TFNc                 ó‚  — | j         s³| j        s®d| _        | j                             d| j        |p| j        j        j        d¬¦  «         |s1|                      t          j	        t          j
        ¦  «        ¦  «         d| _         | j                             d¦  «         |r| j                             ¦   «          dS dS dS dS )zClose the socket connection.TÚ
disconnectFr!   N)rA   Úclosingr   r3   r,   r&   ÚSERVER_DISCONNECTr6   r   r7   r9   r   r   Újoin)r   r$   r%   r&   s       r   r:   zSocket.closeu   sÖ   € àŒ{ð 	" 4¤<ð 	"ØˆDŒLØŒK×&Ò&Ø˜dœhØÐ>˜$œ+Ô,Ô>Øð 'ñ !ô !ð !ð ð 7Ø—	’	�&œ-­¬Ñ5Ô5Ñ6Ô6Ð6ØˆDŒKØŒJ�NŠN˜4Ñ Ô Ð Øð "Ø”
—’Ñ!Ô!Ð!Ð!Ð!ð	"ð 	"ð 	"ð 	"ð"ð "r?   c                 óD   — | j                              | j        ¦  «         d S ©N)r   Ústart_background_taskÚ
_send_pingrF   s    r   r1   zSocket.schedule_ping„   s    € ØŒ×)Ò)¨$¬/Ñ:Ô:Ð:Ð:Ð:r?   c                 ó  — d | _         | j                             | j        j        ¦  «         | j        sR| j        sMt          j        ¦   «         | _         |                      t          j	        t          j
        ¦  «        ¦  «         d S d S d S r{   )rC   r   Úsleepr   rw   rA   rD   r6   r   r7   ÚPINGrF   s    r   r}   zSocket._send_ping‡   s|   € ØˆŒØŒ×Ò˜$œ+Ô3Ñ4Ô4Ð4ØŒ|ð 	2 D¤Kð 	2Ý!œY™[œ[ˆDŒNØ�IŠI•f”m¥F¤KÑ0Ô0Ñ1Ô1Ð1Ð1Ð1ð	2ð 	2ð 	2ð 	2r?   c                 óè   — | j         rt          d¦  «        ‚| j        j        d         €| j                             ¦   «         S  | j        j        d         | j        | j        ¦  «        } |||¦  «        S )z1Upgrade the connection from polling to websocket.z Socket has been upgraded alreadyÚ	websocket)r\   ÚOSErrorr   Ú_asyncÚ_bad_requestÚ_websocket_handler)r   ra   rb   Úwss       r   Ú_upgrade_websocketzSocket._upgrade_websocketŽ   sv   € àŒ=ð 	>ÝÐ<Ñ=Ô=Ð=ØŒ;Ô˜kÔ*Ð2à”;×+Ò+Ñ-Ô-Ð-Ø,ˆTŒ[Ô Ô,ØÔ# T¤[ñ2ô 2ˆàˆr�'˜>Ñ*Ô*Ð*r?   c                 ó
  ‡ ‡— ˆ ˆfd„}dD ]j}t          ‰|¦  «        rXt          t          ‰|¦  «        d¦  «        r:t          ‰|¦  «                             ‰ j        j        ‰ j        j        z   ¦  «         Œk‰ j        �rhd‰ _         |¦   «         }t          j	        |¬¦  «        }|j
        t          j        k    s|j        dk    r.‰ j        j                             d‰ j        ¦  «         d‰ _        g S ‰                     t          j	        t          j        d¬	¦  «                             ¦   «         ¦  «         ‰ j                             t          j	        t          j        ¦  «        ¦  «          |¦   «         }t          j	        |¬¦  «        }|j
        t          j        k    r6d‰ _        ‰ j        j                             d
‰ j        |¦  «         d‰ _        g S d‰ _        d‰ _        nd‰ _        d‰ _        ˆ ˆfd„}‰ j                             |¦  «        }‰ j        j                             d‰ j        ¦  «         	 d}	  |¦   «         }nQ# t2          $ rD}	‰ j        s3‰ j        j                             d‰ j        t7          |	¦  «        ¦  «         Y d}	~	n�d}	~	ww xY w|€n’t          j	        |¬¦  «        }	 ‰                      |¦  «         ne# t:          j        $ r Y nTt:          j        $ r" ‰ j        j                             d¦  «         Y n& ‰ j        j                              d¦  «         Y nxY wŒô‰ j                             d¦  «         | !                    ¦   «          ‰  "                    dd‰ j        j#        j$        ¬¦  «         g S )z*Engine.IO handler for websocket transport.c                  óŒ   •— ‰                      ¦   «         } | r,t          | ¦  «        ‰j        j        k    rt	          d¦  «        ‚| S )Nzpacket is too large)r$   r(   r   rl   Ú
ValueError)r.   r   r‡   s    €€r   Úwebsocket_waitz1Socket._websocket_handler.<locals>.websocket_wait›   sA   ø€ Ø—7’7‘9”9ˆDØð 8�˜D™	œ	 D¤KÔ$DÒDÐDÝ Ð!6Ñ7Ô7Ð7ØˆKr?   )Ú_sockÚsocketÚ
settimeoutT)Úencoded_packetÚprobez,%s: Failed websocket upgrade, no PING packetF)r.   zK%s: Failed websocket upgrade, expected UPGRADE packet, received %s instead.c                  óþ   •— 	 d } 	 ‰                      ¦   «         } n# t          j        $ r Y n=w xY w| sn6	 | D ])}‰                     |                     ¦   «         ¦  «         Œ*n#  Y nxY wŒf‰                     ¦   «          d S r{   )r   r   r   r6   Úencoder:   )r   r   r   r‡   s     €€r   Úwriterz)Socket._websocket_handler.<locals>.writerÈ   s«   ø€ ðØ�ðØ"Ÿiši™kœk�G�GøÝ!Ô,ð ð ð Ø�Eðøøøàð àðØ&ð .ð .˜ØŸš §
¢
¡¤Ñ-Ô-Ð-Ð-ð.øðØ�Eøøøðð �HŠH‰JŒJˆJˆJˆJs   † ›-¬-´,A! Á!A%z#%s: Upgrade to websocket successfulNz-%s: Unexpected error "%s", closing connectionz!Receive error -- socket is closedzUnknown receive errorr#   )%ÚhasattrrZ   r�   r   r   r   Ú	connectedr[   r   r7   r'   r€   r.   r*   r+   r,   r6   r0   r“   r   r   r8   r5   r\   r|   Ú	ExceptionrA   Ústrr>   r   r<   rB   Ú	exceptionry   r:   r&   ÚTRANSPORT_CLOSE)
r   r‡   rŒ   Úattrr   Údecoded_pktr”   Úwriter_taskrs   Úes
   ``        r   r†   zSocket._websocket_handler™   sá  øø€ ð	ð 	ð 	ð 	ð 	ð 	ð (ð 	Jð 	JˆDÝ�r˜4Ñ Ô ð J¥W­W°R¸Ñ->Ô->ÀÑ%MÔ%Mð JÝ˜˜DÑ!Ô!×,Ò,Ø”KÔ-°´Ô0HÑHñJô Jð Jøð Œ>ñ 	!à!ˆDŒNà �.Ñ"Ô"ˆCÝ œ-°sÐ;Ñ;Ô;ˆKØÔ&­&¬+Ò5Ð5ØÔ$¨Ò/Ð/Ø”Ô"×'Ò'ØBÀDÄHñNô Nð Nà!&�”Ø�	Ø�GŠG•F”M¥&¤+°GÐ<Ñ<Ô<×CÒCÑEÔEÑFÔFÐFØŒJ�NŠN�6œ=­¬Ñ5Ô5Ñ6Ô6Ð6à �.Ñ"Ô"ˆCÝ œ-°sÐ;Ñ;Ô;ˆKØÔ&­&¬.Ò8Ð8Ø %�”Ø”Ô"×'Ò'ð,à”H˜cñ#ô #ð #ð "'�”Ø�	Ø ˆDŒMØ"ˆDŒNˆNà!ˆDŒNØ ˆDŒMð	ð 	ð 	ð 	ð 	ð 	ð" ”k×7Ò7¸Ñ?Ô?ˆàŒÔ×ÒØ1°4´8ñ	=ô 	=ð 	=ð	ØˆAð	Ø"�NÑ$Ô$��øÝð ð ð ð ”{ð *Ø”KÔ&×+Ò+ØGØœ¥# a¡&¤&ñ*ô *ð *ð ����øøøøðøøøð ˆyàÝ”-¨qÐ1Ñ1Ô1ˆCðØ—’˜SÑ!Ô!Ð!Ð!øÝÔ0ð ð ð Ø�ÝÔ1ð ð ð Ø”Ô"×'Ò'Ð(KÑLÔLÐLØ�ðð ”Ô"×,Ò,Ð-DÑEÔEÐEØ�øøøð7	ð: 	Œ
�Š�tÑÔÐØ×ÒÑÔÐØ�
Š
˜ TØœ+Ô,Ô<ð 	ñ 	>ô 	>ð 	>ð ˆ	s0   È=
I É
JÉ:JÊJÊ2K ËL*Ë-L*Ì L*)TFN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r>   rG   r6   rf   rt   r:   r1   r}   rˆ   r†   rK   r?   r   r	   r	   
   sÉ   € € € € € ØÐðð ð ð.2ð 2ð 2ð*ð ð ð 	1ð 	1ð 	1ðð ð ð.	"ð 	"ð 	"ð"ð "ð "ð "ð;ð ;ð ;ð2ð 2ð 2ð	+ð 	+ð 	+ðgð gð gð gð gr?   r	   )	r]   rD   rQ   r   r   r   r   Ú
BaseSocketr	   rK   r?   r   ú<module>r¤      s    ðØ 
€
€
€
Ø €€€à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð ðvð vð vð vð vˆ[Ô#ñ vô vð vð vð vr?   