
    ng\j                     J   S SK r S SKrS SKrS SKJr  S SKJrJr  SSKJrJ	r	  SSK
JrJr  \\ R                  0r\(       a@  S SKr\" \S5      (       a  S\\R$                  '   S\\R&                  '   OS\\R(                  '   \" \R-                  5       5      rSrS	r " S
 S5      rg)    N)SEEK_END)OptionalUnion   )ConnectionErrorTimeoutError)SENTINELSSL_AVAILABLESSLWantReadErrorzConnection closed by server.s   
c            	          \ rS rSrS\R                  S\S\4S jrS\4S jrS\	S	4S
\
\   S\\\4   S\
\   S\4S jjrSS\S\4S jjr\	4S
\S\\\4   S\4S jjr\	4S\\\4   S\4S jjrS\4S jrS\SS4S jrSS jrSS jrSrg)SocketBuffer   socketsocket_read_sizesocket_timeoutc                 \    Xl         X l        X0l        [        R                  " 5       U l        g N)_sockr   r   ioBytesIO_buffer)selfr   r   r   s       P/home/edenadmin/noVNC/venv/lib/python3.13/site-packages/redis/_parsers/socket.py__init__SocketBuffer.__init__   s"     
 0,zz|    returnc                     U R                   R                  5       nU R                   R                  S[        5      nU R                   R                  U5        X!-
  $ )z#
Remaining unread length of buffer
r   )r   tellseekr   )r   posends      r   unread_bytesSocketBuffer.unread_bytes%   sF     ll!ll8,#yr   NTlengthtimeoutraise_on_timeoutc                    U R                   nU R                  nSnU[        LnU R                  nUR	                  5       n	UR                  S[        5        U(       a  UR                  U5          UR                  U5      n
[        U
[        5      (       a  [        U
5      S:X  a  [        [        5      eUR                  U
5        [        U
5      nXk-  nUb  X:  a  Mo   UR                  U	5        U(       a  UR                  U R                  5        gg! [         R"                   aI    U(       a  [%        S5      e UR                  U	5        U(       a  UR                  U R                  5        gg[&         a  n[(        R+                  UR,                  S5      nUR.                  U:X  aQ  U(       d9   S nAUR                  U	5        U(       a  UR                  U R                  5        ggUS:X  a  [%        S5      e[        SUR0                   35      eS nAff = f! UR                  U	5        U(       a  UR                  U R                  5        f f = f)Nr   TzTimeout reading from socketFz!Error while reading from socket: )r   r   r	   r   r   r    r   
settimeoutrecv
isinstancebyteslenr   SERVER_CLOSED_CONNECTION_ERRORwriter   r   r&   r   NONBLOCKING_EXCEPTIONS#NONBLOCKING_EXCEPTION_ERROR_NUMBERSget	__class__errnoargs)r   r%   r&   r'   sockr   markercustom_timeoutbufcurrent_posdatadata_lengthexalloweds                 r   _read_from_socketSocketBuffer._read_from_socket.   s    zz00 0llhhjHOOG$ 	5yy!12dE**s4yA~)*HII		$!$i%%&/$ HH[! 3 34 % ~~ 	"#@AA HH[! 3 34  & 	Q
 :==bllBOGxx7"' 
 HH[! 3 34  a<&'DEE!$EbggY"OPP	Q HH[! 3 34 s=   .A/D &H9H /	H87H/H ()HHH 6Ic                 b    [        U R                  5       5      =(       d    U R                  USS9$ )NF)r&   r'   )boolr#   r@   )r   r&   s     r   can_readSocketBuffer.can_read`   s5    D%%'( 
D,B,Be -C -
 	
r   c                     US-   nU R                   R                  U5      nU[        U5      -
  nU(       a,  U R                  XBS9  X0R                   R                  U5      -  nUS S $ )Nr   )r%   r&   )r   readr.   r@   )r   r%   r&   r<   missings        r   rH   SocketBuffer.reade   sd    !||  (3t9$""'"CLL%%g..DCRyr   c                     U R                   nUR                  5       nUR                  [        5      (       d=  U R	                  US9  X2R                  5       -  nUR                  [        5      (       d  M=  US S $ )N)r&   rG   )r   readlineendswithSYM_CRLFr@   )r   r&   r:   r<   s       r   rL   SocketBuffer.readlinep   sc    ll||~--))""7"3LLN"D --))
 CRyr   c                 6    U R                   R                  5       $ )z
Get current read position
)r   r   r   s    r   get_posSocketBuffer.get_posz   s     ||  ""r   r!   c                 :    U R                   R                  U5        g)z?
Rewind the buffer to a specific position, to re-start reading
N)r   r    )r   r!   s     r   rewindSocketBuffer.rewind   s     	#r   c                     U R                  5       nUS:  a  gUS:  a"  U R                  R                  5       nX!* S USU& U R                  R                  U5        U R                  R	                  S5        g)z8
After a successful read, purge the read part of buffer
r   N)r#   r   	getbuffertruncater    )r   unreadviews      r   purgeSocketBuffer.purge   sl     ""$
 A:A:<<))+D ND&Mf%!r   c                 v     U R                   R                  5         S U l         S U l        g ! [         a     Nf = fr   )r   close	Exceptionr   rQ   s    r   r_   SocketBuffer.close   s=    	LL  
  	 	s   + 
88)r   r   r   r   )r   )r   N)__name__
__module____qualname____firstlineno__r   intfloatr   r#   r	   r   r   objectrC   r@   rD   r-   rH   rL   rR   rU   r\   r_   __static_attributes__ r   r   r   r      s    $mm$7:$LQ$c  !%(0+/	0505 uf}%05 #4.	05
 
05d
 
d 

 AI 	3 	uf})= 	U 	 8@ eVm 4 E # ## $ &r   r   )r5   r   r   r   typingr   r   
exceptionsr   r   utilsr	   r
   BlockingIOErrorEWOULDBLOCKr2   sslhasattrr   SSLWantWriteErrorSSLErrortuplekeysr1   r/   rN   r   rj   r   r   <module>rv      s     	   " 6 +'68I8I&J #s&''DE+C,@,@AEF+C,A,AB<=+CLL9BGGIJ !? H Hr   