ó
    ùÞ j  ã                   óT  • 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  \\ R                  0r\(       a@  S SKr\" \S5      (       a  S\\R"                  '   S\\R$                  '   OS\\R&                  '   \" \R+                  5       5      rSr\" 5       rS	r " S
 S5      rg)é    N)ÚSEEK_END)ÚOptionalÚUnioné   )ÚConnectionErrorÚTimeoutError)Ú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\4S jrS
\S\4S jrS\4S 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       ÚO/var/www/html/gaurav/venv/lib/python3.13/site-packages/redis/_parsers/socket.pyÚ__init__ÚSocketBuffer.__init__   s"   € ð Œ
Ø 0ÔØ,ÔÜ—z’z“|ˆ�ó    Ú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   € ð �l‰l×ÑÓ!ˆØ�l‰l×Ñ ¤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                   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  My   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(       dI  UR.                  U:X  a9   S nAUR                  U	5        U(       a  UR                  U R                  5        gg[        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 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_socketÚ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�ØÑ%�àÑ%¨&«/ÙØð �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=   Á.A9D Ä&HÅH Å9	HÆ7H
Æ9H Ç2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                  U5        X R                   R                  U5      -  nUS S $ )Nr   éþÿÿÿ)r   Úreadr.   r@   )r   r$   r<   Úmissings       r   rH   ÚSocketBuffer.readc   sa   € Ø˜!‘ˆà�|‰|× Ñ  Ó(ˆØœ3˜t›9Ñ$ˆÞà×"Ñ" 7Ô+Ø—L‘L×%Ñ% gÓ.Ñ.ˆDØ�C�RˆyÐr   c                 óô   • U R                   nUR                  5       nUR                  [        5      (       d>  U R	                  5         X!R                  5       -  nUR                  [        5      (       d  M>  US S $ )NrG   )r   ÚreadlineÚendswithÚSYM_CRLFr@   )r   r:   r<   s      r   rL   ÚSocketBuffer.readlinen   s^   € Ø�l‰lˆØ�|‰|‹~ˆØ—-‘-¤×)Ñ)à×"Ñ"Ô$Ø—L‘L“NÑ"ˆDð —-‘-¤×)Ó)ð
 �C�RˆyÐr   c                 ó6   • U R                   R                  5       $ )z
Get current read position
)r   r   ©r   s    r   Úget_posÚSocketBuffer.get_posx   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Ø   ˜NˆD��&ˆ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=   € ð	Ø�L‰L×ÑÔ ð ˆŒØˆ�
øô ó 	ñ ð	ús   ‚+ «
8·8)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Ò   † ð$Ø—m‘mð$Ø7:ð$ØLQô$ð˜cô ð !%Ø(0Ø+/ñ	-5à˜‘ð-5ð �u˜f�}Ñ%ð-5ð # 4™.ð	-5ð
 
õ-5ð^
 ð 
¨$ô 
ð
	˜3ð 	 5ô 	ð˜%ô ð#˜ô #ð˜#ð  $ô ô÷&r   r   )r5   r   r   r   Útypingr   r   Ú
exceptionsr   r   Úutilsr	   ÚBlockingIOErrorÚEWOULDBLOCKr2   ÚsslÚhasattrr
   ÚSSLWantWriteErrorÚSSLErrorÚtupleÚkeysr1   r/   rh   r)   rN   r   rj   r   r   Ú<module>rv      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   