
    ='hG                        U d Z ddlZddlZddlmZ ddlmZmZmZm	Z	m
Z
mZ ddlmZ ddlmZ ddlmZmZ dd	lmZ d
dlmZmZmZ d
dlmZmZmZmZmZ eD  ch c]
  }  e|        c} Zee	e      e d<   d
Z!dZ"dZ#dZ$ejJ                  Z&ejN                  Z(dZ)ejT                  jV                  Z,ejN                  jV                  Z-ejJ                  jV                  Z.ej^                  jV                  Z0ejb                  jV                  Z2ejf                  jV                  Z4dZ5dZ6dZ7dZ8d
Z9e:jv                  Z<eZ= G d d      Z> G d d      Z?yc c} w )z0Reader for WebSocket protocol versions 13 and 8.    N)deque)DequeFinalOptionalSetTupleUnion   )BaseProtocol)ZLibDecompressor)_EXC_SENTINELset_exception)	EofStream   )UNPACK_CLOSE_CODEUNPACK_LEN3websocket_mask)WS_DEFLATE_TRAILINGWebSocketErrorWSCloseCode	WSMessage	WSMsgTypeALLOWED_CLOSE_CODES      )T    )Fr   c                       e Zd ZdZdededej                  ddfdZde	fdZ
dee   fd	Zefd
ddej                  ddfdZddZddZddZdefdZdefdZy)WebSocketDataQueuezmWebSocketDataQueue resumes and pauses an underlying stream.

    It is a destination for WebSocket data.
    protocollimitloopreturnNc                    d| _         || _        |dz  | _        || _        d| _        d | _        d | _        t               | _        | j                  j                  | _
        | j                  j                  | _        y )Nr   r
   F)_size	_protocol_limit_loop_eof_waiter
_exceptionr   _bufferpopleft_get_bufferappend_put_buffer)selfr    r!   r"   s       b/home/kushmeetdev/Regenta/Chatbot/venv/lib/python3.12/site-packages/aiohttp/_websocket/reader_c.py__init__zWebSocketDataQueue.__init__<   sf     
!ai
	7;6:5:W<<//<<..r   c                     | j                   S N)r)   r1   s    r2   is_eofzWebSocketDataQueue.is_eofJ   s    yyr   c                     | j                   S r5   )r+   r6   s    r2   	exceptionzWebSocketDataQueue.exceptionM   s    r   excBaseException	exc_causec                 f    d| _         || _        | j                  x}d | _        t        |||       y y NT)r)   r+   r*   r   )r1   r:   r<   waiters       r2   r   z WebSocketDataQueue.set_exceptionP   s9    
 	ll"F/DL&#y1 0r   c                 t    | j                   x}y d | _         |j                         s|j                  d        y y r5   )r*   done
set_result)r1   r?   s     r2   _release_waiterz"WebSocketDataQueue._release_waiter[   s7    ll"F+{{}d# r   c                 @    d| _         | j                          d | _        y r>   )r)   rC   r+   r6   s    r2   feed_eofzWebSocketDataQueue.feed_eofb   s    	r   c                 
   | xj                   |z  c_         | j                  ||f       | j                          | j                   | j                  kD  r2| j                  j
                  s| j                  j                          y y y r5   )r%   r0   rC   r'   r&   _reading_pausedpause_readingr1   datasizes      r2   	feed_datazWebSocketDataQueue.feed_datag   sc    

d
$&::#DNN,J,JNN((* -K#r   c                 `  K   | j                   s^| j                  sR| j                  rJ | j                  j	                         | _        	 | j                   d {    | j                         S | j                         S 7 $# t
        j                  t
        j                  f$ r	 d | _         w xY wwr5   )	r,   r)   r*   r(   create_futureasyncioCancelledErrorTimeoutError_read_from_bufferr6   s    r2   readzWebSocketDataQueue.readn   s     ||DII||##::335DLll"" %%''t%%''	 #**G,@,@A #s0   AB.	A? A=A?  B.=A? ?,B++B.c                 <   | j                   rs| j                         \  }}| xj                  |z  c_        | j                  | j                  k  r0| j                  j
                  r| j                  j                          |S | j                  | j                  t        r5   )	r,   r.   r%   r'   r&   rG   resume_readingr+   r   rI   s      r2   rR   z$WebSocketDataQueue._read_from_buffery   ss    <<))+JD$JJ$JzzDKK'DNN,J,J--/K??&//!r   r#   N)rJ   r   rK   
cython_intr#   N)__name__
__module____qualname____doc__r   intrO   AbstractEventLoopr3   boolr7   r   r;   r9   r   builtinsr   rC   rE   rL   r   rS   rR    r   r2   r   r   6   s    
/$/-0/;B;T;T/	/ 8M2  -:	2	2 ))	2 
		2$
+	(I 	(	9 	r   r   c            
           e Zd Z	 ddedededdfdZddZdee	e
ef   deee	f   fd	Zd
edeeef   dee	e
f   deeef   ddf
dZde	ddfdZy)WebSocketReaderqueuemax_msg_sizecompressr#   Nc                 0   || _         || _        d | _        t               | _        t
        | _        t        | _        d| _	        t        | _
        g | _        d| _        d| _        d| _        d | _        d| _        d| _        t$        | _        d | _        || _        y )NFr   r   )rc   _max_msg_size_exc	bytearray_partialREAD_HEADER_stateOP_CODE_NOT_SET_opcode
_frame_fin_frame_opcode_payload_fragments_frame_payload_len_tail	_has_mask_frame_mask_payload_bytes_to_read_payload_len_flagCOMPRESSED_NOT_SET_compressed_decompressobj	_compress)r1   rc   rd   re   s       r2   r3   zWebSocketReader.__init__   s     
))-	!!+"1/1"#
,0&'#!" 2:>!r   c                 8    | j                   j                          y r5   )rc   rE   r6   s    r2   rE   zWebSocketReader.feed_eof   s    

r   rJ   c                     t        |      t        urt        |      }| j                  d|fS 	 | j                  |       t        S # t        $ r-}|| _        t        | j                  |       t        cY d }~S d }~ww xY wr>   )	typebytesrh   
_feed_data	Exceptionr   rc   EMPTY_FRAME_ERROREMPTY_FRAME)r1   rJ   r:   s      r2   rL   zWebSocketReader.feed_data   ss     :U";D99 :	%OOD!   	%DI$**c*$$	%s   A 	A;"A60A;6A;finopcodepayload
compressedc           	      0
   |t         t        t        hv r|s|t        k7  r|| _        | xj                  |z  c_        | j
                  r_t        | j                        | j
                  k\  r=t        t        j                  dt        | j                         d| j
                         y t        | j                        }|t        k(  rE| j                  t        k(  rt        t        j                  d      | j                  }t        | _        n|rt        t        j                  d|      |r*| j                  |z   }| j                  j                          n|}| j
                  rKt        |      | j
                  k\  r3t        t        j                  dt        |       d| j
                         |r| j                  st        d      | _        | j                  j!                  |t"        z   | j
                        }| j                  j$                  rut        | j                  j$                        }t        t        j                  d| j
                  |z    d| j
                         t'        |      t(        u r|}nt)        |      }|t         k(  rM	 |j+                  d      }	| j0                  j3                  t5        t6        t8        |	d
f      t        |             y | j0                  j3                  t5        t6        t:        |d
f      t        |             y |t<        k(  rt        |      dk\  rrt?        |d d       d   }|dk  r%|t@        vrt        t        j                  d|       	 |dd  j+                  d      }t5        t6        tB        jD                  ||f      }nF|r#t        t        j                  d| d| d|      t5        t6        tB        jD                  dd
f      }| j0                  j3                  |d       y |tF        k(  rGt5        t6        tB        jH                  |d
f      }| j0                  j3                  |t        |             y |tJ        k(  rGt5        t6        tB        jL                  |d
f      }| j0                  j3                  |t        |             y t        t        j                  d|      # t,        $ r }
t        t        j.                  d	      |
d }
~
ww xY w# t,        $ r }
t        t        j.                  d	      |
d }
~
ww xY w)NzMessage size z exceeds limit z*Continuation frame for non started messagez8The opcode in non-fin frame is expected to be zero, got T)suppress_deflate_headerzDecompressed message size zutf-8zInvalid UTF-8 text message r
   r   i  zInvalid close code: zInvalid close frame:  zUnexpected opcode=)'OP_CODE_TEXTOP_CODE_BINARYOP_CODE_CONTINUATIONrn   rj   rg   lenr   r   MESSAGE_TOO_BIGr^   rm   PROTOCOL_ERRORclearrz   r   decompress_syncr   unconsumed_tailr~   r   decodeUnicodeDecodeErrorINVALID_TEXTrc   rL   	TUPLE_NEWr   WS_MSG_TYPE_TEXTWS_MSG_TYPE_BINARYOP_CODE_CLOSEr   r   r   CLOSEOP_CODE_PINGPINGOP_CODE_PONGPONG)r1   r   r   r   r   has_partialassembled_payloadpayload_mergedlefttextr:   
close_codeclose_messagemsgs                 r2   _handle_framezWebSocketReader._handle_frame   s    lN4HII11#)DL(%%#dmm*<@R@R*R(#33'DMM(:'; <))-););(<> 
 t}}-K--<<?2(#22D  . $..''-j2  $(MMG$;!##%$+!!!c*;&<@R@R&R$//#C(9$:#; <%%)%7%7$8:  ***:SW*XD'!%!4!4!D!D%(;;T=O=O" &&66t22BBCD(#334T5G5G$5N4O)$*<*<)=? 
 '(E1!2!&'8!9%)009D 

$$i*:D")EF'
 

$$i*<nb)QR' }$7|q .wr{;A>
$;N)N(#22.zl; $+ABK$6$6w$?M
  	IOOZ+WX$..+C5&7+F 
  	IOOQ+CDJJ  a(|#I	'DECJJ  c'l3|#I	'DECJJ  c'l3 **.@
,K c * (#002N8 * (#002Ns0   S  *S,  	S)	S$$S),	T5TTc                    | j                   r| j                   |z   dc}| _         d}t        |      }|}	 | j                  t        k(  rJ||z
  dk  rn||   }||dz      }|dz  }|dz	  dz  }|dz	  dz  }|dz	  dz  }	|dz	  dz  }
|d	z  }|	s|
s|r&| j                  st        t        j                  d
      |dkD  r|dk(  rt        t        j                  d      |dz	  dz  }|dz  }|dkD  r|dkD  rt        t        j                  d      | j                  s| j                  t        k(  r|rt        nt        | _	        n|rt        t        j                  d
      t        |      | _        || _        t        |      | _        || _        t"        | _        | j                  t"        k(  r| j                   }|dk(  r*||z
  dk  rn||   }||dz      }|dz  }|dz  |z  | _        n0|dkD  r$||z
  dk  rnqt'        ||      d   | _        |dz  }n|| _        | j                  rt(        nt*        | _        | j                  t(        k(  r'||z
  dk  rn|||dz    | _        |dz  }t*        | _        | j                  t*        k(  r||z
  }| j$                  |k\  r|}| xj$                  |z  c_        n|| j$                  z   }d| _        | j.                  }| xj.                  ||z
  z  c_        |}|}| j$                  dk7  r | j0                  j3                  |||        nL|r| j0                  j3                  |||        | j                  rK| j,                  J t5        dj7                  | j0                              }t9        | j,                  |       |}ndj7                  | j0                        }| j0                  j;                          nY| j                  rH| j,                  J ||| }t=        |      t4        urt5        |      }t9        | j,                  |       |}n||| }| j?                  | j                  | j                  || j                         d| _        t        | _        ,||k  r||| | _         yd| _         y)z&Return the next frame from the socket.r   r   r
   r            r      z*Received frame with non-zero reserved bitsz!Received fragmented control frame   }   z5Control frame payload cannot be larger than 125 bytes~      N) rs   r   rl   rk   r{   r   r   r   ro   ry   rx   COMPRESSED_TRUECOMPRESSED_FALSEr^   rp   rt   rw   READ_PAYLOAD_LENGTHrv   r   READ_PAYLOAD_MASKREAD_PAYLOADru   rr   rq   r/   ri   joinr   r   r~   r   )r1   rJ   	start_posdata_len	data_cstr
first_bytesecond_byter   rsv1rsv2rsv3r   has_masklengthlen_flag	chunk_len	f_end_poshad_fragmentsf_start_pospayload_bytearrayr   s                        r2   r   zWebSocketReader._feed_data:  s   ::#zzD0#D$*	t9	{{k)i'!+&y1
'	A6Q	!Q!+"a1,"a1,"a1,#c) 4D(#22D 
 C<C1H(#22; 
 (1,1$t+ C<FSL(#22O  ??d&6&6:L&L:>DTD$(#22D 
 #'s)%+"!%h)/&1 {{1111s?)+a/!*9!5J"+IM":KNI2</K2OD/^)+a/2=dI2Nq2QD/NI2:D/37>>/| {{//i'!+#,YQ#G Q	*{{l*$y0	..); (I//9</ )D,G,G GI23D/ $ 7 7''9y+@@''%	..!3 ++229[3ST !++229[3ST~~#//;;;,5chht?V?V6W,X)&t'7'79JK"3"%((4+B+B"C++113^^++777(1+i(H%-.i? -66G,H)"4#3#35FG/G'I>G""OOT%7%7$BRBR +,')] b 7@(6JYy2
PS
r   )TrV   )rX   rY   rZ   r   r\   r^   r3   rE   r	   r   ri   
memoryviewr   rL   rW   r   r   r`   r   r2   rb   rb      s    MQ"'"7:"FJ"	"2%J67	tU{	$AA c:o&A ui'(	A
 #z/*A 
AFZTu ZT ZTr   rb   )@r[   rO   r_   collectionsr   typingr   r   r   r   r   r	   base_protocolr   compression_utilsr   helpersr   r   streamsr   r   r   r   modelsr   r   r   r   r   r\   r   __annotations__rk   r   r   r   BINARYr   TEXTr   rm   CONTINUATIONvaluer   r   r   r   r   r   r   r   r   r   r   rx   r   r   tuple__new__r   rW   r   rb   )is   0r2   <module>r      s8   6    < < ( 0 2  C C  9D'D1A'D U3s8_ D   %% >>   --33 ~~##!!''%%~~##~~##   MM	
L L^OT OTa (Es   E