o
    Xzj°  ã                   @   s`   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	 G dd„ deƒZ
G d	d
„ d
eƒZdS )é    N)Úcrc32é   )Ú
ConnectionÚPacketCodecé   )ÚInvalidChecksumErrorÚInvalidBufferErrorc                       s0   e Zd ZdZ‡ fdd„Zdd„ Zdd„ Z‡  ZS )ÚFullPacketCodecNc                    s   t ƒ  |¡ d| _d S )Nr   )ÚsuperÚ__init__Ú_send_counter)ÚselfÚ
connection©Ú	__class__© ú^/var/www/kodo/tsheker/venv/lib/python3.10/site-packages/telethon/network/connection/tcpfull.pyr      s   
zFullPacketCodec.__init__c                 C   sF   t |ƒd }t d|| j¡| }t dt|ƒ¡}|  jd7  _|| S )Né   ú<iiú<Ir   )ÚlenÚstructÚpackr   r   )r   ÚdataÚlengthÚcrcr   r   r   Úencode_packet   s
   zFullPacketCodec.encode_packetc           	   
   Ã   sî   �z
|  d¡I d H }W n tjy% } z|jr |jW  Y d }~S ‚ d }~ww t d|¡\}}|dk rB|dk rB|  d¡I d H }t|ƒ‚|dk rJt|ƒ‚|  |d ¡I d H }t d|dd … ¡d }|d d… }t|| ƒ}||krut||ƒ‚|S )Né   r   r   é   r   éüÿÿÿ)	ÚreadexactlyÚasyncioÚIncompleteReadErrorÚpartialr   Úunpackr   r   r   )	r   ÚreaderÚpacket_len_seqÚexcÚ
packet_lenÚseqÚbodyÚchecksumÚvalid_checksumr   r   r   Úread_packet   s,   €€ü
zFullPacketCodec.read_packet)Ú__name__Ú
__module__Ú__qualname__Útagr   r   r-   Ú__classcell__r   r   r   r   r	   	   s
    	r	   c                   @   s   e Zd ZdZeZdS )ÚConnectionTcpFullzy
    Default Telegram mode. Sends 12 additional bytes and
    needs to calculate the CRC value of the packet itself.
    N)r.   r/   r0   Ú__doc__r	   Úpacket_codecr   r   r   r   r3   9   s    r3   )r!   r   Úzlibr   r   r   r   Úerrorsr   r   r	   r3   r   r   r   r   Ú<module>   s    0