§
    !ß·iÛ)  ã                   ót   — d dl Z 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                   óR   — e 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 )ÚAsyncSocketc              ƒ   óD  K  — 	 t          j        | j                             ¦   «         | j        j        | j        j        z   ¦  «        ƒ d{V —†g}| j                             ¦   «          n2# t           j        t           j	        f$ r t          j        ¦   «         ‚w xY w|dgk    rg S 	 	 | j                             ¦   «         }| j                             ¦   «          |€| j                             d¦  «         n,|                     |¦  «         n# t           j        $ r Y nw xY wŒ||S )z'Wait for packets to send to the client.N)ÚasyncioÚwait_forÚqueueÚgetÚserverÚping_intervalÚping_timeoutÚ	task_doneÚTimeoutErrorÚCancelledErrorr   Ú
QueueEmptyÚ
get_nowaitÚ
put_nowaitÚappend)ÚselfÚpacketsÚpkts      úZ/home/mmwave/public_html/mmwave/venv/lib/python3.11/site-packages/engineio/async_socket.pyÚpollzAsyncSocket.poll   s]  è è € ð	*Ý$Ô-Ø”
—’Ñ Ô Ø”Ô)¨D¬KÔ,DÑDñFô Fð Fð Fð Fð Fð Fð Fð GˆGð ŒJ× Ò Ñ"Ô"Ð"Ð"øÝÔ$¥gÔ&<Ð=ð 	*ð 	*ð 	*ÝÔ'Ñ)Ô)Ð)ð	*øøøà�t�fÒÐØˆIð		ðØ”j×+Ò+Ñ-Ô-�Ø”
×$Ò$Ñ&Ô&Ð&Ø�;Ø”J×)Ò)¨$Ñ/Ô/Ð/ØØ—’˜sÑ#Ô#Ð#Ð#øÝÔ%ð ð ð Ø�ðøøøð		ð ˆs%   „A#A( Á(/BÂ%AD
 Ã4D
 Ä
DÄDc           	   ƒ   óþ  K  — | j         j                             d| j        t          j        |j                 t          |j        t          ¦  «        s|j        nd¦  «         |j        t          j
        k    r|                      ¦   «          dS |j        t          j        k    r:| j                              d| j        |j        | j         j        ¬¦  «        ƒ d{V —† dS |j        t          j        k    r9|                      t	          j        t          j        ¦  «        ¦  «        ƒ d{V —† dS |j        t          j        k    r/|                      dd| j         j        j        ¬¦  «        ƒ d{V —† dS t/          j        ¦   «         ‚)	zReceive packet from the client.z%s: Received packet %s data %sú<binary>Úmessage©Ú	run_asyncNFT©ÚwaitÚabortÚreason)r   ÚloggerÚinfoÚsidr   Úpacket_namesÚpacket_typeÚ
isinstanceÚdataÚbytesÚPONGÚschedule_pingÚMESSAGEÚ_trigger_eventÚasync_handlersÚUPGRADEÚsendÚPacketÚNOOPÚCLOSEÚcloser&   ÚCLIENT_DISCONNECTr   ÚUnknownPacketError©r   r   s     r   ÚreceivezAsyncSocket.receive#   sª  è è € àŒÔ×ÒÐ @Ø $¤­&Ô*=¸c¼oÔ*NÝ0:¸3¼8ÅUÑ0KÔ0Kð !0 ¤ Ø%/ñ	1ô 	1ð 	1ð Œ?�fœkÒ)Ð)Ø×ÒÑ Ô Ð Ð Ð ØŒ_¥¤Ò.Ð.Ø”+×,Ò,Ø˜4œ8 S¤XØœ+Ô4ð -ñ 6ô 6ð 6ð 6ð 6ð 6ð 6ð 6ð 6ð 6ð 6ð Œ_¥¤Ò.Ð.Ø—)’)�FœM­&¬+Ñ6Ô6Ñ7Ô7Ð7Ð7Ð7Ð7Ð7Ð7Ð7Ð7Ð7ØŒ_¥¤Ò,Ð,Ø—*’* %¨tØ$(¤KÔ$6Ô$Hð ñ Jô Jð Jð Jð Jð Jð Jð Jð Jð Jð Jõ Ô/Ñ1Ô1Ð1ó    c              ƒ   óF  K  — | j         rt          j        ¦   «         ‚| j        r}t	          j        ¦   «         | j        z
  | j        j        k    rT| j        j                             d| j	        ¦  «         |  
                    dd| j        j        j        ¬¦  «        ƒ d{V —† dS dS )z,Make sure the client is still sending pings.z"%s: Client is gone, closing socketFr#   NT)Úclosedr   ÚSocketIsClosedErrorÚ	last_pingÚtimer   r   r'   r(   r)   r9   r&   ÚPING_TIMEOUT©r   s    r   Úcheck_ping_timeoutzAsyncSocket.check_ping_timeout7   sÈ   è è € àŒ;ð 	3ÝÔ0Ñ2Ô2Ð2ØŒ>ð 		Ý”	‘”˜dœnÑ,¨t¬{Ô/GÒGÐGØŒKÔ×#Ò#Ð$HØ$(¤Hñ.ô .ð .ð
 —*’* %¨uØ$(¤KÔ$6Ô$Cð ñ Eô Eð Eð Eð Eð Eð Eð Eð Eà�5Øˆtr>   c           	   ƒ   ó<  K  — |                       ¦   «         ƒ d{V —†sdS | j                             |¦  «        ƒ d{V —† | 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   )rF   r   Úputr   r'   r(   r)   r   r*   r+   r,   r-   r.   r<   s     r   r5   zAsyncSocket.sendG   s¯   è è € à×,Ò,Ñ.Ô.Ð.Ð.Ð.Ð.Ð.Ð.ð 	&ØˆFà”*—.’. Ñ%Ô%Ð%Ð%Ð%Ð%Ð%Ð%Ð%ØŒÔ×ÒÐ ?Ø $¤­&Ô*=¸c¼oÔ*NÝ0:¸3¼8ÅUÑ0KÔ0Kð !0 ¤ Ø%/ñ	1ô 	1ð 	1ð 	1ð 	1r>   c              ƒ   ó  K  — d„ |                      dd¦  «                             ¦   «                              d¦  «        D ¦   «         }|                      dd¦  «                             ¦   «         }d|v rQ|| j        v rH| j        j                             d| j        |¦  «          t          | d|z   ¦  «        |¦  «        ƒ d	{V —†S | j	        s| j
        rt          j        t          j        ¦  «        gS 	 |                      ¦   «         ƒ d	{V —†}ns# t          j        $ ra t#          j        ¦   «         }|                      d
| j        j        j        ¬¦  «        ƒ d	{V —† |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>z2AsyncSocket.handle_get_request.<locals>.<listcomp>T   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_NF)r$   r&   r   é   )r   ÚlowerÚsplitÚupgrade_protocolsr   r'   r(   r)   ÚgetattrÚ	upgradingÚupgradedr   r6   r7   r   r   r   ÚsysÚexc_infor9   r&   ÚTRANSPORT_ERRORÚwith_traceback)r   ÚenvironÚconnectionsÚ	transportr   Úexcs         r   Úhandle_get_requestzAsyncSocket.handle_get_requestR   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à?�  {°YÑ'>Ñ?Ô?ÀÑHÔHÐHÐHÐHÐHÐHÐHÐHØŒ>ð 	0˜Tœ]ð 	0õ ”M¥&¤+Ñ.Ô.Ð/Ð/ð	0Ø ŸIšI™KœKÐ'Ð'Ð'Ð'Ð'Ð'ˆGˆGøÝÔ$ð 	0ð 	0ð 	0Ý”,‘.”.ˆCØ—*’* %Ø$(¤KÔ$6Ô$Fð ñ Hô Hð Hð Hð Hð Hð Hð Hð Hà�a”&×'Ò'¨¨A¬Ñ/Ô/Ð/ð		0øøøð
 ˆs   Ã3D ÄA0E>c              ƒ   ór  K  — t          |                     dd¦  «        ¦  «        }|| j        j        k    rt	          j        ¦   «         ‚|d                              |¦  «        ƒ d{V —†                     d¦  «        }t          j	        |¬¦  «        }|j
        D ]}|                      |¦  «        ƒ d{V —† ŒdS )z3Handle a long-polling POST request from the client.ÚCONTENT_LENGTHÚ0z
wsgi.inputNzutf-8)Úencoded_payload)Úintr   r   Úmax_http_buffer_sizer   ÚContentTooLongErrorÚreadÚdecoder   ÚPayloadr   r=   )r   ra   ÚlengthÚbodyÚpr   s         r   Úhandle_post_requestzAsyncSocket.handle_post_requesti   sÍ   è è € å�W—[’[Ð!1°3Ñ7Ô7Ñ8Ô8ˆØ�D”KÔ4Ò4Ð4ÝÔ0Ñ2Ô2Ð2à! ,Ô/×4Ò4°VÑ<Ô<Ð<Ð<Ð<Ð<Ð<Ð<×DÒDÀWÑMÔMˆDÝ”°Ð5Ñ5Ô5ˆAØ”yð (ð (�Ø—l’l 3Ñ'Ô'Ð'Ð'Ð'Ð'Ð'Ð'Ð'Ð'ð(ð (r>   TFNc              ƒ   óv  K  — | j         s«| j        s¦d| _        | j                             d| j        |p| j        j        j        d¬¦  «        ƒ d{V —† |s7|                      t          j	        t          j
        ¦  «        ¦  «        ƒ d{V —† d| _         |r%| j                             ¦   «         ƒ d{V —† dS dS dS dS )zClose the socket connection.TÚ
disconnectFr!   N)r@   Úclosingr   r2   r)   r&   ÚSERVER_DISCONNECTr5   r   r6   r8   r   Újoin)r   r$   r%   r&   s       r   r9   zAsyncSocket.closet   s  è è € àŒ{ð 
	( 4¤<ð 
	(ØˆDŒLØ”+×,Ò,Ø˜dœhØÐ>˜$œ+Ô,Ô>Øð -ñ !ô !ð !ð !ð !ð !ð !ð !ð !ð ð =Ø—i’i¥¤­f¬lÑ ;Ô ;Ñ<Ô<Ð<Ð<Ð<Ð<Ð<Ð<Ð<ØˆDŒKØð (Ø”j—o’oÑ'Ô'Ð'Ð'Ð'Ð'Ð'Ð'Ð'Ð'Ð'ð
	(ð 
	(ð 
	(ð 
	(ð(ð (r>   c                 óD   — | j                              | j        ¦  «         d S ©N)r   Ústart_background_taskÚ
_send_pingrE   s    r   r0   zAsyncSocket.schedule_ping‚   s    € ØŒ×)Ò)¨$¬/Ñ:Ô:Ð:Ð:Ð:r>   c              ƒ   ó"  K  — d | _         t          j        | j        j        ¦  «        ƒ d {V —† | j        sX| j        sSt          j        ¦   «         | _         |                      t          j
        t          j        ¦  «        ¦  «        ƒ d {V —† d S d S d S rz   )rB   r   Úsleepr   r   rv   r@   rC   r5   r   r6   ÚPINGrE   s    r   r|   zAsyncSocket._send_ping…   sž   è è € ØˆŒÝŒm˜DœKÔ5Ñ6Ô6Ð6Ð6Ð6Ð6Ð6Ð6Ð6ØŒ|ð 	8 D¤Kð 	8Ý!œY™[œ[ˆDŒNØ—)’)�FœM­&¬+Ñ6Ô6Ñ7Ô7Ð7Ð7Ð7Ð7Ð7Ð7Ð7Ð7Ð7ð	8ð 	8ð 	8ð 	8r>   c              ƒ   óö   K  — | j         rt          d¦  «        ‚| j        j        d         €| j                             ¦   «         S  | j        j        d         | j        | j        ¦  «        } ||¦  «        ƒ d{V —†S )z1Upgrade the connection from polling to websocket.z Socket has been upgraded alreadyÚ	websocketN)r\   ÚOSErrorr   Ú_asyncÚ_bad_requestÚ_websocket_handler)r   ra   Úwss      r   Ú_upgrade_websocketzAsyncSocket._upgrade_websocketŒ   sˆ   è è € àŒ=ð 	>ÝÐ<Ñ=Ô=Ð=ØŒ;Ô˜kÔ*Ð2à”;×+Ò+Ñ-Ô-Ð-Ø,ˆTŒ[Ô Ô,ØÔ# T¤[ñ2ô 2ˆà�R˜‘[”[Ð Ð Ð Ð Ð Ð Ð r>   c              ƒ   óF  ‡ ‡K  — ˆ ˆfd„}‰ j         �r­d‰ _        	  |¦   «         ƒ d{V —†}n# t          $ r Y dS w xY wt          j        |¬¦  «        }|j        t          j        k    s|j        dk    r.‰ j        j	         
                    d‰ j        ¦  «         d‰ _        dS ‰                     t          j        t          j        d¬¦  «                             ¦   «         ¦  «        ƒ d{V —† ‰ j                             t          j        t          j        ¦  «        ¦  «        ƒ d{V —† 	  |¦   «         ƒ d{V —†}n# t          $ r d‰ _        Y dS w xY wt          j        |¬¦  «        }|j        t          j        k    r6d‰ _        ‰ j        j	         
                    d	‰ j        |¦  «         d‰ _        dS d‰ _        d‰ _        nd‰ _         d‰ _        ˆ ˆfd
„}t)          j         |¦   «         ¦  «        }‰ j        j	         
                    d‰ j        ¦  «         	 d}t)          j         |¦   «         ¦  «        }	 t)          j        |‰ j        j        ‰ j        j        z   ¦  «        ƒ d{V —†}n4# t(          j        $ r  	 |                     ¦   «          n#  Y nxY wY n¢ Y nŸxY w|€n™t          j        |¬¦  «        }	 ‰                      |¦  «        ƒ d{V —† ne# t8          j        $ r Y nTt8          j        $ r" ‰ j        j	         
                    d¦  «         Y n' ‰ j        j	                             d¦  «         Y nxY w�Œ"‰ j                             d¦  «        ƒ d{V —† t)          j        |d¬¦  «        ƒ d{V —† ‰                      dd‰ j        j         j!        ¬¦  «        ƒ d{V —† dS )z*Engine.IO handler for websocket transport.c               “   óœ   •K  — ‰                      ¦   «         ƒ d {V —†} | r,t          | ¦  «        ‰j        j        k    rt	          d¦  «        ‚| S )Nzpacket is too large)r$   Úlenr   rk   Ú
ValueError)r-   r   r†   s    €€r   Úwebsocket_waitz6AsyncSocket._websocket_handler.<locals>.websocket_wait™   sQ   øè è € ØŸš™œ�?�?�?�?�?�?ˆDØð 8�˜D™	œ	 D¤KÔ$DÒDÐDÝ Ð!6Ñ7Ô7Ð7ØˆKr>   TN)Úencoded_packetÚprobez,%s: Failed websocket upgrade, no PING packetF)r-   zK%s: Failed websocket upgrade, expected UPGRADE packet, received %s instead.c               “   ó&  •K  — 	 d } 	 ‰                      ¦   «         ƒ d {V —†} n# t          j        $ r Y nCw xY w| sn<	 | D ]/}‰                     |                     ¦   «         ¦  «        ƒ d {V —† Œ0n#  Y nxY wŒr‰                     ¦   «         ƒ d {V —† d S rz   )r   r   r   r5   Úencoder9   )r   r   r   r†   s     €€r   Úwriterz.AsyncSocket._websocket_handler.<locals>.writerÆ   sè   øè è € ðØ�ðØ$(§I¢I¡K¤KÐ/Ð/Ð/Ð/Ð/Ð/�G�GøÝ!Ô,ð ð ð Ø�Eðøøøàð àðØ&ð 4ð 4˜Ø Ÿgšg c§j¢j¡l¤lÑ3Ô3Ð3Ð3Ð3Ð3Ð3Ð3Ð3Ð3ð4øðØ�Eøøøðð —(’(‘*”*ÐÐÐÐÐÐÐÐÐs   ˆ# £5´5¼2A/ Á/A3z#%s: Upgrade to websocket successfulz!Receive error -- socket is closedzUnknown receive error)Útimeoutr#   )"Ú	connectedr[   r‚   r   r6   r+   r   r-   r   r'   r(   r)   r5   r/   r�   r   rH   r7   r4   r\   r   Úensure_futurer   r   r   r   Ú	exceptionr=   r   r;   rA   r9   r&   ÚTRANSPORT_CLOSE)	r   r†   rŒ   r   Údecoded_pktr‘   Úwriter_taskrr   Ú	wait_tasks	   ``       r   r…   zAsyncSocket._websocket_handler—   s¿  øøè è € ð	ð 	ð 	ð 	ð 	ð 	ð Œ>ñ $	!à!ˆDŒNðØ*˜NÑ,Ô,Ð,Ð,Ð,Ð,Ð,Ð,��øÝð ð ð Ø��ðøøøå œ-°sÐ;Ñ;Ô;ˆKØÔ&­&¬+Ò5Ð5ØÔ$¨Ò/Ð/Ø”Ô"×'Ò'ØBÀDÄHñNô Nð Nà!&�”Ø�Ø—'’'�&œ-­¬¸'ÐBÑBÔB×IÒIÑKÔKÑLÔLÐLÐLÐLÐLÐLÐLÐLØ”*—.’.¥¤­v¬{Ñ!;Ô!;Ñ<Ô<Ð<Ð<Ð<Ð<Ð<Ð<Ð<ðØ*˜NÑ,Ô,Ð,Ð,Ð,Ð,Ð,Ð,��øÝð ð ð Ø!&�”Ø��ðøøøõ !œ-°sÐ;Ñ;Ô;ˆKØÔ&­&¬.Ò8Ð8Ø %�”Ø”Ô"×'Ò'ð,à”H˜cñ#ô #ð #ð "'�”Ø�Ø ˆDŒMØ"ˆDŒNˆNà!ˆDŒNØ ˆDŒMð	ð 	ð 	ð 	ð 	ð 	õ" Ô+¨F¨F©H¬HÑ5Ô5ˆàŒÔ×ÒØ1°4´8ñ	=ô 	=ð 	=ð$	FØˆAÝÔ-¨n¨nÑ.>Ô.>Ñ?Ô?ˆIðÝ!Ô*ØØ”KÔ-°´Ô0HÑHñJô Jð Jð Jð Jð Jð Jð J��øõ Ô)ð ð ð ðØ×'Ò'Ñ)Ô)Ð)Ð)øðØ�DøøøØ�ðØ�øøøØˆyàÝ”-¨qÐ1Ñ1Ô1ˆCð
FØ—l’l 3Ñ'Ô'Ð'Ð'Ð'Ð'Ð'Ð'Ð'Ð'øÝÔ0ð ð ð Ø�ÝÔ1ð ð ð Ø”Ô"×'Ò'Ð(KÑLÔLÐLØ�ðFð ”Ô"×,Ò,Ð-DÑEÔEÐEÐEÐEøøøñI$	FðL Œj�nŠn˜TÑ"Ô"Ð"Ð"Ð"Ð"Ð"Ð"Ð"ÝÔ˜{°DÐ9Ñ9Ô9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ø�jŠj˜e¨4Ø $¤Ô 2Ô Bð ñ Dô Dð 	Dð 	Dð 	Dð 	Dð 	Dð 	Dð 	Dð 	Dð 	Ds`   ›, ¬
:¹:Ä(D9 Ä9EÅEÈ52I( É(JÉ8JÊJÊJÊJÊJÊ5K ËL3Ë"-L3Ì L3)TFN)Ú__name__Ú
__module__Ú__qualname__r   r=   rF   r5   re   rs   r9   r0   r|   r‡   r…   rK   r>   r   r	   r	      sÈ   € € € € € ðð ð ð.2ð 2ð 2ð(ð ð ð 	1ð 	1ð 	1ðð ð ð.	(ð 	(ð 	(ð(ð (ð (ð (ð;ð ;ð ;ð8ð 8ð 8ð	!ð 	!ð 	!ðnDð nDð nDð nDð nDr>   r	   )
r   r]   rC   rQ   r   r   r   r   Ú
BaseSocketr	   rK   r>   r   ú<module>rž      s³   ðØ €€€Ø 
€
€
€
Ø €€€à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð ðzDð zDð zDð zDð zD�+Ô(ñ zDô zDð zDð zDð zDr>   