Ë
    €+h  ã                   ó@  — d dl Z d dlZd dlZd dlmZ d dlmZmZ ddlmZm	Z	 ddl
mZ ee j                  iZer;d dlZ eed«      rdeej"                  <   deej$                  <   ndeej&                  <    eej+                  «       «      ZdZ e«       Zd	Z G d
„ d«      Zy)é    N)ÚSEEK_END)ÚOptionalÚUnioné   )ÚConnectionErrorÚTimeoutError)ÚSSL_AVAILABLEÚSSLWantReadErrorzConnection closed by server.s   
c            	       óÎ   — e Zd Zdej                  dedefd„Zdefd„Zdedfd	e	e   d
e
eef   de	e   defd„Zd
edefd„Zd	edefd„Zdefd„Zdefd„Zdeddfd„Zdd„Zdd„Zy)ÚSocketBufferÚsocketÚsocket_read_sizeÚsocket_timeoutc                 ó`   — || _         || _        || _        t        j                  «       | _        y ©N)Ú_sockr   r   ÚioÚBytesIOÚ_buffer)Úselfr   r   r   s       úH/var/www/html/venv/lib/python3.12/site-packages/redis/_parsers/socket.pyÚ__init__zSocketBuffer.__init__   s(   € ð ˆŒ
Ø 0ˆÔØ,ˆÔÜ—z‘z“|ˆó    Úreturnc                 ó¶   — | j                   j                  «       }| j                   j                  dt        «      }| j                   j                  |«       ||z
  S )z3
        Remaining unread length of buffer
        r   )r   ÚtellÚseekr   )r   ÚposÚends      r   Úunread_byteszSocketBuffer.unread_bytes&   sH   € ð l‰l×ÑÓ!ˆØl‰l×Ñ ¤8Ó,ˆØ‰×Ñ˜#ÔØS‰yÐr   NTÚlengthÚtimeoutÚraise_on_timeoutc                 ó<  — | j                   }| j                  }d}|t        u}| j                  }|j	                  «       }	|j                  dt        «       |r|j                  |«       	 	 | j                   j                  |«      }
t        |
t        «      rt        |
«      dk(  rt        t        «      ‚|j                  |
«       t        |
«      }||z  }|||kD  rŒr	 |j                  |	«       |r|j                  | j                  «       yy# t         j"                  $ r? |rt%        d«      ‚Y |j                  |	«       |r|j                  | j                  «       yyt&        $ r‚}t(        j+                  |j,                  d«      }|sC|j.                  |k(  r4Y d }~|j                  |	«       |r|j                  | j                  «       yyt        d|j0                  › «      ‚d }~ww xY w# |j                  |	«       |r|j                  | j                  «       w w xY w)Nr   TzTimeout reading from socketFéÿÿÿÿz!Error while reading from socket: )r   r   ÚSENTINELr   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_socketzSocketBuffer._read_from_socket/   sÛ  € ð z‰zˆØ×0Ñ0ÐØˆØ ¬Ð0ˆàl‰lˆØ—h‘h“jˆØ‰”HÔÙØO‰O˜GÔ$ð	5ØØ—z‘z—‘Ð'7Ó8ä˜d¤EÔ*¬s°4«y¸Aª~Ü)Ô*HÓIÐIØ—	‘	˜$”Ü! $›iØ˜+Ñ%àÐ%¨&°6ª/ØØð H‰H[Ô!ÙØ—‘ × 3Ñ 3Õ4ð øô ~‰~ò 	ÙÜ"Ð#@ÓAÐAØð H‰H[Ô!ÙØ—‘ × 3Ñ 3Õ4ð ô &ò 	Qô
 :×=Ñ=¸b¿l¹lÈBÓOˆGÙ#¨¯©°GÒ(;Ûð H‰H[Ô!ÙØ—‘ × 3Ñ 3Õ4ð ô "Ð$EÀbÇgÁgÀYÐ"OÓPÐPûð	Qûð H‰H[Ô!ÙØ—‘ × 3Ñ 3Õ4ð ús=   Á)A2D Ä G'Ä,G* ÅG'Å%1G"ÆG* Ç
G"Ç"G'Ç'G* Ç*1Hc                 ó^   — t        | j                  «       «      xs | j                  |d¬«      S )NF)r"   r#   )Úboolr    r=   )r   r"   s     r   Úcan_readzSocketBuffer.can_read^   s5   € ÜD×%Ñ%Ó'Ó(ò 
¨D×,BÑ,BØ¨eð -Có -
ð 	
r   c                 óÊ   — |dz   }| j                   j                  |«      }|t        |«      z
  }|r/| j                  |«       || j                   j                  |«      z  }|d d S )Nr   éþÿÿÿ)r   Úreadr+   r=   )r   r!   r9   Úmissings       r   rC   zSocketBuffer.readc   sc   € Ø˜!‘ˆà|‰|× Ñ  Ó(ˆØœ3˜t›9Ñ$ˆÙà×"Ñ" 7Ô+ØD—L‘L×%Ñ% gÓ.Ñ.ˆDØCRˆyÐr   c                 óà   — | j                   }|j                  «       }|j                  t        «      s9| j	                  «        ||j                  «       z  }|j                  t        «      sŒ9|d d S )NrB   )r   ÚreadlineÚendswithÚSYM_CRLFr=   )r   r7   r9   s      r   rF   zSocketBuffer.readlinen   sZ   € Øl‰lˆØ|‰|‹~ˆØ—-‘-¤Ô)à×"Ñ"Ô$ØC—L‘L“NÑ"ˆDð —-‘-¤Õ)ð
 CRˆyÐr   c                 ó6   — | j                   j                  «       S )z+
        Get current read position
        )r   r   ©r   s    r   Úget_poszSocketBuffer.get_posx   s   € ð |‰|× Ñ Ó"Ð"r   r   c                 ó:   — | j                   j                  |«       y)zO
        Rewind the buffer to a specific position, to re-start reading
        N)r   r   )r   r   s     r   ÚrewindzSocketBuffer.rewind~   s   € ð 	‰×Ñ˜#Õr   c                 óì   — | j                  «       }|dkD  ry|dkD  r#| j                  j                  «       }|| d |d| | j                  j                  |«       | j                  j	                  d«       y)zH
        After a successful read, purge the read part of buffer
        r   N)r    r   Ú	getbufferÚtruncater   )r   ÚunreadÚviews      r   ÚpurgezSocketBuffer.purge„   sn   € ð ×"Ñ"Ó$ˆð
 AŠ:ØàAŠ:à—<‘<×)Ñ)Ó+ˆDØ  &  ˜NˆD&ˆMØ‰×Ñ˜fÔ%Ø‰×Ñ˜!Õr   c                 ót   — 	 | j                   j                  «        d | _         d | _        y # t        $ r Y Œw xY wr   )r   ÚcloseÚ	Exceptionr   rJ   s    r   rU   zSocketBuffer.close—   s=   € ð	ØL‰L×ÑÔ ð ˆŒØˆ
øô ò 	ñ ð	ús   ‚+ «	7¶7)r   N)Ú__name__Ú
__module__Ú__qualname__r   ÚintÚfloatr   r    r&   r   r   Úobjectr?   r=   r@   r*   rC   rF   rK   rM   rS   rU   © r   r   r   r      sÒ   „ ð$Ø—m‘mð$Ø7:ð$ØLQó$ð˜có ð !%Ø(0Ø+/ñ	-5à˜‘ð-5ð u˜f}Ñ%ð-5ð # 4™.ð	-5ð
 
ó-5ð^
 ð 
¨$ó 
ð
	˜3ð 	 5ó 	ð˜%ó ð#˜ó #ð˜#ð  $ó óô&r   r   )r2   r   r   r   Útypingr   r   Ú
exceptionsr   r   Úutilsr	   ÚBlockingIOErrorÚEWOULDBLOCKr/   ÚsslÚhasattrr
   ÚSSLWantWriteErrorÚSSLErrorÚtupleÚkeysr.   r,   r\   r&   rH   r   r]   r   r   ú<module>ri      s    ðÛ Û 	Û Ý ß "ç 6Ý !à'6¸×8IÑ8IÐ&JÐ #áÛáˆsÐ&Ô'ØDEÐ+¨C×,@Ñ,@ÑAØEFÐ+¨C×,AÑ,AÒBà<=Ð+¨C¯L©LÑ9áÐB×GÑGÓIÓJÐ à!?Ð Ù‹8€à€÷Eò Er   