Ë
    ®AHj  ã                   ó6  — 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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d	Z G d
„ d«      Zy)é    N)ÚSEEK_END)ÚOptionalÚUnioné   )ÚConnectionErrorÚTimeoutError)ÚSENTINELÚ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d
edefd„Zefd	ed
e
eef   defd„Zefd
e
eef   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       úM/root/tools/cai/cai_env/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                 óH  — | j                   }| j                  }d}|t        u}| j                  }|j	                  «       }	|j                  dt        «       |r|j                  |«       	 	 |j                  |«      }
t        |
t        «      rt        |
«      dk(  rt        t        «      ‚|j                  |
«       t        |
«      }||z  }|||kD  rŒh	 |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«      }|j.                  |k(  rF|s4Y d }~|j                  |	«       |r|j                  | j                  «       yy|dk(  rt%        d«      ‚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   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_socketzSocketBuffer._read_from_socket.   së  € ð z‰zˆØ×0Ñ0ÐØˆØ ¬Ð0ˆàl‰lˆØ—h‘h“jˆØ‰”HÔÙØO‰O˜GÔ$ð 	5ØØ—y‘yÐ!1Ó2ä˜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Øx‰x˜7Ò"Ù'Û ð
 H‰H[Ô!ÙØ—‘ × 3Ñ 3Õ4ð ð ˜a’<Ü&Ð'DÓEÐEÜ!Ð$EÀbÇgÁgÀYÐ"OÓPÐPûð	Qûð H‰H[Ô!ÙØ—‘ × 3Ñ 3Õ4ð ús=   Á)A(D Ä G-Ä"G0 ÅG-Å1G(ÆG0 Ç (G(Ç(G-Ç-G0 Ç01H!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
  }|r1| j                  ||¬«       || j                   j                  |«      z  }|d d S )Nr   )r"   r#   éþÿÿÿ)r   Úreadr+   r=   )r   r"   r#   r9   Úmissings        r   rC   zSocketBuffer.reade   sh   € Ø˜!‘ˆà|‰|× Ñ  Ó(ˆØœ3˜t›9Ñ$ˆÙà×"Ñ"¨'¸7Ð"ÔCØD—L‘L×%Ñ% gÓ.Ñ.ˆDØCRˆyÐr   c                 óä   — | j                   }|j                  «       }|j                  t        «      s;| j	                  |¬«       ||j                  «       z  }|j                  t        «      sŒ;|d d S )N)r#   rB   )r   ÚreadlineÚendswithÚSYM_CRLFr=   )r   r#   r7   r9   s       r   rF   zSocketBuffer.readlinep   s_   € Øl‰lˆØ|‰|‹~ˆØ—-‘-¤Ô)à×"Ñ"¨7Ð"Ô3Ø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_posz   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   )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Ø+/ñ	05à˜‘ð05ð u˜f}Ñ%ð05ð # 4™.ð	05ð
 
ó05ñd
 ð 
¨dó 
ð
 AIñ 	˜3ð 	¨¨u°f¨}Ñ)=ð 	ÈUó 	ð 8@ñ   e¨V mÑ 4ð ÀEó ð#˜ó #ð˜#ð  $ó óô&r   r   )r2   r   r   r   Útypingr   r   Ú
exceptionsr   r   Úutilsr	   r
   ÚBlockingIOErrorÚEWOULDBLOCKr/   ÚsslÚhasattrr   ÚSSLWantWriteErrorÚSSLErrorÚtupleÚkeysr.   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Ð à!?Ð à€÷Hò Hr   