
    i)                     v    S SK r S SKrS SKrSSKJr  SSKJr  SSKJr  SSKJr   " S S\R                  5      r	g)	    N   )base_socket)
exceptions)packet)payloadc                   Z    \ 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g)AsyncSocket   c                   #     [         R                  " U R                  R                  5       U R                  R
                  U R                  R                  -   5      I Sh  vN /nU R                  R                  5         US/:X  a  / $   U R                  R                  5       nU R                  R                  5         Uc  U R                  R                  S5         U$ UR                  U5        Mi   N! [         R                  [         R                  4 a    [        R                  " 5       ef = f! [         R                   a     U$ f = f7f)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      R/home/admin/cozy_coffee/venv/lib/python3.13/site-packages/engineio/async_socket.pypollAsyncSocket.poll   s&    	*$--

 ))DKK,D,DDF F GG JJ  " tfIjj++-

$$&;JJ))$/  s# F $$g&<&<= 	*''))	* %% s`   EAC6 !C4"C6 
EAD3 E!D3 2E4C6 6:D00E3EE
EEc           	        #    U R                   R                  R                  SU R                  [        R
                  UR                     [        UR                  [        5      (       d  UR                  OS5        UR                  [        R                  :X  a  U R                  5         gUR                  [        R                  :X  aM  U R                   R                  SU R                  UR                  U R                   R                  S9I Sh  vN   gUR                  [        R                  :X  a<  U R!                  [        R"                  " [        R$                  5      5      I Sh  vN   gUR                  [        R&                  :X  a8  U R)                  SSU R                   R*                  R,                  S9I Sh  vN   g[.        R0                  " 5       e N Nr N7f)	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   receiveAsyncSocket.receive#   sT     @ $&*=*=coo*N0:388U0K0K%/	1 ??fkk) __.++,,488SXX++44 - 6 6 6 __.))FMM&++6777__,**%t$(KK$6$6$H$H  J J J //116 8Js8   DG GAG )G*AG ?G G G G c                   #    U R                   (       a  [        R                  " 5       eU R                  (       a  [        R                  " 5       U R                  -
  U R
                  R                  :  ah  U R
                  R                  R                  SU R                  5        U R                  SSU R
                  R                  R                  S9I Sh  vN   gg N7f)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+   r;   r(   PING_TIMEOUTr   s    r   check_ping_timeoutAsyncSocket.check_ping_timeout7   s     ;;0022>>		dnn,t{{/G/GGKK##$H$(HH.
 **%u$(KK$6$6$C$C  E E EEs   CCCCc           	        #    U R                  5       I Sh  vN (       d  gU R                  R                  U5      I Sh  vN   U R                  R                  R                  SU R                  [        R                  UR                     [        UR                  [        5      (       d  UR                  5        gS5        g N N7f)zSend a packet to the client.Nz%s: Sending packet %s data %sr!   )rH   r   putr   r)   r*   r+   r   r,   r-   r.   r/   r0   r>   s     r   r7   AsyncSocket.sendG   s     ,,...**..%%% ? $&*=*=coo*N0:388U0K0K	1 &0	1	 / &s!   CC(CC BCCc                 v  #    UR                  SS5      R                  5       R                  S5       Vs/ s H  nUR                  5       PM     nnUR                  SS5      R                  5       nSU;   a]  X@R                  ;   aN  U R
                  R                  R                  SU R                  U5        [        U SU-   5      " U5      I Sh  vN $ U R                  (       d  U R                  (       a%  [        R                  " [        R                  5      /$  U R                  5       I Sh  vN nU$ s  snf  Nk N! [         R"                   ad    [$        R&                  " 5       nU R)                  S	U R
                  R*                  R,                  S
9I Sh  vN    US   R/                  US   5      ef = f7f)z2Handle a long-polling GET request from the client.HTTP_CONNECTION ,HTTP_UPGRADEupgradez%%s: Received request to upgrade to %s	_upgrade_NF)r&   r(   r      )r   lowersplitstripupgrade_protocolsr   r)   r*   r+   getattr	upgradingupgradedr   r8   r9   r   r   r   sysexc_infor;   r(   TRANSPORT_ERRORwith_traceback)r   environsconnections	transportr   excs          r   handle_get_requestAsyncSocket.handle_get_requestR   sv     [[!2B7==?EEcJLJ GGIJ 	 L KK399;	#	5K5K(KKK##$K$(HHi9 {Y'>?HHH>>T]] MM&++.//	0 IIK'G 'L I ($$ 	0,,.C**%$(KK$6$6$F$F  H H Ha&''A//		0sU   2F9D5B F9D:AF9D> .D</D> 3F9<D> >AF6FF66F9c                 |  #    [        UR                  SS5      5      nX R                  R                  :  a  [        R
                  " 5       eUS   R                  U5      I Sh  vN R                  S5      n[        R                  " US9nUR                   H  nU R                  U5      I Sh  vN   M     g NT N7f)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   r`   lengthbodypr   s         r   handle_post_requestAsyncSocket.handle_post_requesti   s     W[[!1378KK4440022!,/44V<<DDWMD5Ayyll3''' ! = (s%   A!B<#B8$A
B<.B:/
B<:B<Nc                   #    U R                   (       d  U R                  (       d  SU l        U R                  R                  SU R                  U=(       d     U R                  R
                  R                  SS9I Sh  vN   U(       d;  U R                  [        R                  " [        R                  5      5      I Sh  vN   SU l         U(       a#  U R                  R                  5       I Sh  vN   gggg Nz N: N7f)zClose the socket connection.T
disconnectFr#   N)rB   closingr   r4   r+   r(   SERVER_DISCONNECTr7   r   r8   r:   r   join)r   r&   r'   r(   s       r   r;   AsyncSocket.closet   s     {{4<<DL++,,dhh>$++,,>> - ! ! ! iifll ;<<<DKjjoo'''  $0{!
 = (s7   A:C=<C7=AC=>C9?/C=.C;/	C=9C=;C=c                 N    U R                   R                  U R                  5        g N)r   start_background_task
_send_pingrG   s    r   r2   AsyncSocket.schedule_ping   s    ))$//:    c                 x  #    S U l         [        R                  " U R                  R                  5      I S h  vN   U R
                  (       dh  U R                  (       dV  [        R                  " 5       U l         U R                  [        R                  " [        R                  5      5      I S h  vN   g g g  N~ N	7fr}   )rD   r   sleepr   r   rx   rB   rE   r7   r   r8   PINGrG   s    r   r   AsyncSocket._send_ping   sr     mmDKK55666||DKK!YY[DN))FMM&++6777 %0| 	7 8s"   5B:B6A6B:.B8/B:8B:c                 6  #    U R                   (       a  [        S5      eU R                  R                  S   c  U R                  R	                  5       $ U R                  R                  S   " U R
                  U R                  5      nU" U5      I Sh  vN $  N7f)z1Upgrade the connection from polling to websocket.z Socket has been upgraded already	websocketN)r[   OSErrorr   _async_bad_request_websocket_handler)r   r`   wss      r   _upgrade_websocketAsyncSocket._upgrade_websocket   sx     ==<==;;k*2;;++--[[,##T[[2[   s   BBBBc                 p  ^ ^#    U U4S jnT R                   (       Ga  ST l         U" 5       I Sh  vN n[        R                  " US9nUR
                  [        R                  :w  d  UR                  S:w  a8  T R                  R                  R                  ST R                  5        ST l        gTR                  [        R                  " [        R                  SS9R                  5       5      I Sh  vN   T R                  R!                  [        R                  " [        R"                  5      5      I Sh  vN    U" 5       I Sh  vN n[        R                  " US9nUR
                  [        R$                  :w  a@  ST l        T R                  R                  R                  S	T R                  U5        ST l        gST l        ST l        OST l         ST l        U U4S
 jn[(        R*                  " U" 5       5      nT R                  R                  R                  ST R                  5         Sn[(        R*                  " U" 5       5      n [(        R,                  " UT R                  R.                  T R                  R0                  -   5      I Sh  vN nUc  O0[        R                  " US9n T R7                  U5      I Sh  vN   M  T R                  R!                  S5      I Sh  vN   [(        R,                  " USS9I Sh  vN   T R?                  SST R                  R@                  RB                  S9I Sh  vN   g GN! [         a     gf = f GNc GN! GN! [         a
    ST l         gf = f N! [(        R2                   a     UR5                  5         O!    O= f M     M  = f N! [8        R:                   a     N[8        R<                   a*    T R                  R                  R                  S5         GM8    T R                  R                  R5                  S5         GNc= f GNF GN, N7f)z*Engine.IO handler for websocket transport.c                     >#    TR                  5       I S h  vN n U (       a.  [        U 5      TR                  R                  :  a  [	        S5      eU $  N;7f)Nzpacket is too large)r&   lenr   rl   
ValueError)r/   r   r   s    r   websocket_wait6AsyncSocket._websocket_handler.<locals>.websocket_wait   sA     ?DD	DKK$D$DD !677K #s   AA<ATN)encoded_packetprobez,%s: Failed websocket upgrade, no PING packetF)r/   zK%s: Failed websocket upgrade, expected UPGRADE packet, received %s instead.c                  >  >#     S n  TR                  5       I S h  vN n U (       d  O3 U  H*  nTR                  UR	                  5       5      I S h  vN   M,     MV  TR                  5       I S h  vN   g  NX! [        R                   a     M2  f = f N@!    M=  = f N,7fr}   )r   r   r   r7   encoder;   )r   r   r   r   s     r   writer.AsyncSocket._websocket_handler.<locals>.writer   s     $(IIK/G & ggcjjl333  '  ((* 0!,,  4sl   BA6 A4A6 B'B BB B.B/B4A6 6B
BBBB BBz#%s: Upgrade to websocket successfulz!Receive error -- socket is closedzUnknown receive error)timeoutr%   )"	connectedrZ   r   r   r8   r-   r   r/   r   r)   r*   r+   r7   r1   r   r   rK   r9   r6   r[   r   ensure_futurer   r   r   r   	exceptionr?   r   r=   rC   r;   r(   TRANSPORT_CLOSE)	r   r   r   r   decoded_pktr   writer_taskrs   	wait_tasks	   ``       r   r   AsyncSocket._websocket_handler   su    	 >>>!DN*,, !--s;K&&&++5$$/""''BDHHN!&''&--'BIIKLLL**..v{{!;<<<*,, !--s;K&&&..8 %""'',HHc# "' DM"DN!DN DM	" ++FH51488	= A--n.>?I!**KK--0H0HHJ J$ y--q1C
Fll3'''7 L jjnnT"""{D999jje4 $ 2 2 B B  D 	D 	DA -  M< - !&ZJ )) '') (00 11 ""''(KLF "",,-DE"9	DsO  !P6
M MM B=P62M3AP67M8P6=
M MM C?P6AM7 M5M7 P6/N0 N.N0  P6(P.)P6P16P6<P4=P6M 
MP6MP6P6M M2/P61M22P65M7 7N+NN+N!N+$P6'N+(P6.N0 0P+P68P+>P6&P+(P61P64P6)rB   rx   r   rD   r[   rZ   )TFN)__name__
__module____qualname____firstlineno__r   r?   rH   r7   re   rt   r;   r2   r   r   r   __static_attributes__ r   r   r	   r	      s;    .2( 	1.	((;8	!nDr   r	   )
r   r\   rE   rO   r   r   r   r   
BaseSocketr	   r   r   r   <module>r      s0     
     zD+(( zDr   